Soru görüntüleri çekilebilir klasörden dinamik olarak nasıl edinilir


Bunun gibi bir dizim var.

int image[] = {R.drawable.d002_p001,R.drawable.d002_p002,R.drawable.d002_p003,
                   R.drawable.d002_p004,R.drawable.d002_p005,R.drawable.d002_p006};

Şu anda 6 tane resmim var, bu yüzden ismini statik olarak verdim.

50 tane resim varsa, her dosya ismini dizide veremiyorum, bu yüzden dinamik olması gerekiyor, bunu nasıl başarabilirim.


44
2018-02-06 07:08


Menşei


şuna bir bak Eğitimi Umarım yardımcı olur!! - Sanjay D


Cevaplar:


Kullanabilirsiniz getIdentifier()

for (int j = 1; j < 6; j++) {
   Drawable drawable = getResources().getDrawable(getResources()
                  .getIdentifier("d002_p00"+j, "drawable", getPackageName()));
}

106
2018-02-06 07:32



Bundan nasıl kurtuluruz? drawable String dizisine mi? - Srujan Barai
GetDrawable için API level 21 gerektirir - Tom Brito
@TomBrito ContextCompat.getDrawable (context, res) kullanın. Görmek stackoverflow.com/a/34132342/4830897 - SleepProgger
".Jpg" uzantılı herhangi bir dosya arıyorsanız ve bilinmeyen dosya sayısı için bunu nasıl yaparsınız? @LalitPoptani - Pj Rigor


Bunu da kullanabilirsiniz:

int res = getResources().getIdentifier("<your pakecgename>:drawable/abc", null, null);

12
2018-02-06 08:02



kullanma "drawable", getPackageName() yerine null, null daha az hata eğilimli - cricket_007


Böyle bir şey işe yarayabilir

Field[] drawables = android.R.drawable.class.getFields();
for (Field f : drawables) {
    try {
        System.out.println("R.drawable." + f.getName());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

6
2018-02-06 07:23



Bu benim tüm çekilebilirler elde etmek için eşleşti. Daha sonra daha kolay erişim için bir Hashmap'e koydum: KEY = f.getInt (f.getName ()) + VALUE = f.getName () - user4500


public static Drawable getImage(Context context, String name) {
        return context.getResources().getDrawable(context.getResources().getIdentifier(name, "drawable", context.getPackageName()));
}

2
2017-12-24 10:47





Dinamik olarak çizilebilir hale getirmek için aşağıdaki satırı kullanın:

Drawable drawable = this.getResources().getDrawable(R.drawable.yourDrawableID);

Bu size istenilen Çizimi verecektir.


2
2018-02-06 07:21



buradaDrawableID nedir - Goofy
yourDrawableID gerçek ID layout (xml) dosyanızda öğe için belirttiğiniz değer. - astuter


String[] names = new String []{"yout names..."};
    for(String n: names) {
        Utils.GetDrawableByName(n,this);
    }

public class Utils {
public static Drawable GetDrawableByName(String name,Activity context){
    Resources res = context.getResources();
    return res.getDrawable(res.getIdentifier(name,"drawable",context.getPackageName()));
    }
}

1
2017-09-22 11:05





Imageview setImageResource'dan faydalanabiliriz, çünkü bu çekilişten daha verimli olacak, aynı kodun aynısını inceleyecektir.

Aşağıdaki kod, gif'in çoklu bölünmüş görüntüsüne sahipseniz, gif incase gibi görüntüyü göstermek için kullanılabilir. Gif'i çevrimiçi bir araçtan tek bir png'ye ayırın ve aşağıdaki sıraya göre çekilebilecek şekilde resim koyun

image_1.png, image_2.png vb.

İşleyiciyi görüntüyü dinamik olarak değiştirmesini sağlayın.

int imagePosition = 1;
    Handler handler = new Handler();
        Runnable runnable = new Runnable() {
            public void run() {
                updateImage();
            }
        };




    public void updateImage() {

                appInstance.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", appInstance.getPackageName());
                        gifImageViewDummy.setImageResource(resId);
                        imagePosition++;
    //Consider you have 30 image for the anim
                        if (imagePosition == 30) {
//this make animation play only once
                            handler.removeCallbacks(runnable);

                        } else {
    //You can define your own time based on the animation
                            handler.postDelayed(runnable, 50);
                        }

//to make animation to continue use below code and remove above if else
// if (imagePosition == 30)
//imagePosition = 1;
// handler.postDelayed(runnable, 50);
// 
                    }
                });
              }

0
2018-02-01 07:25





package com.example.studio.snakes;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

int[] dices = {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three,
        R.drawable.four,
        R.drawable.five,
        R.drawable.six,
};


public void rollTapped(View view){
 Log.i("Button","Button Tapped");
    Random rand = new Random();
    int randomnum = rand.nextInt(6);
    Log.i("Random","Random number is " + randomnum );
    ImageView dice=findViewById(R.id.imageView2);
    dice.setImageResource(dices[randomnum]);


}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
}

0
2018-03-09 01:43



Burada çekilebilir klasördeki görüntüler için dizi dices yarattım.Ve rastgele değişkenlerin randnum (koddan) olarak adlandırılan rasgele değişkenlerin üretilmesiyle rasgele bir şekilde erişebildim. Zaten halihazırda var olan görüntüyü değiştirmeye devam ediyorum (id koddan imageView2) Her rastgele sayı için.Kesinlikle dokunduğumuzda rasgele olarak görüntüler oluşturulur - Anwar shanib


dizi oluşturmak için bu kodu kullanın ve daha sonra bu diziyi kullanın

int image[] = new int[50];
for (int i = 1 ; i <= 50 ; i++)
{
images[i]  = "R.drawable.d002_p00"+i;
}

Dikkat etmeniz gereken ana şey dosya adı "d002_p00" ile başlamalıdır ve 1'den 50'ye kadar olan rakamlar var demektir.


-10
2018-02-06 07:16



bana hata mesajı "R.drawable.d002_p00" + i gösteriyor; int'den string'e dönüştürülemiyor - Goofy
Bu cevap gerçekten kötü ... java'yı öğrendin mi? bir String int değişkenine atanamaz ... ve int, kullanılmadan bir dizeye eklenemez String.valueof()... - maysi
Mr.dilipkaklotar bazı kod yanlış yani burada değiştirmek ve yazılarınızı güncelleyin - Ramani Hitesh
bazı ifade değişikliği .... sonra bu ifadeyi çağır - Ramani Hitesh