wake-up-neo.com

so erhalten Sie Bilder dynamisch aus einem Zeichnungsordner

Ich habe so ein Array.

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};

Im Moment habe ich 6 Bilder, also bekomme ich statisch den Namen.

Wenn ich etwa 50 Bilder habe, kann ich nicht jeden Dateinamen im Array angeben. Es muss also dynamisch sein, wie ich das erreichen kann.

45
Goofy

Sie können getIdentifier() verwenden.

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

Sie können dies auch verwenden:

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

So etwas könnte funktionieren

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

Verwenden Sie die folgende Zeile, um dynamisch gezeichnet zu werden:

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

Dadurch erhalten Sie das gewünschte Zeichen.

2
SAMD
public static Drawable getImage(Context context, String name) {
        return context.getResources().getDrawable(context.getResources().getIdentifier(name, "drawable", context.getPackageName()));
}
2
Ali Imran
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
Abbath

Wir können Imageview setImageResource nutzen, da dies effizienter ist als drawable scheint, siehe Code für denselben Code.

Der folgende Code kann verwendet werden, um das Bild wie bei GIF anzuzeigen, wenn Sie ein mehrteiliges Bild von GIF haben. Teilen Sie einfach das GIF in ein einzelnes PNG aus einem Online-Tool auf und platzieren Sie das Bild in der Zeichenfolge wie in der folgenden Reihenfolge

image_1.png, image_2.png usw. 

Bitten Sie den Handler, das Bild dynamisch zu ändern.

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
Lakshmanan
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
Anwar shanib