J'ai un tableau comme celui-ci.
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};
En ce moment, j'ai 6 images, donc on me donne le nom de manière statique.
Si j'ai environ 50 images, je ne peux pas donner chaque nom de fichier dans le tableau, il doit donc être dynamique, comment puis-je y parvenir.
Vous pouvez utiliser getIdentifier()
for (int j = 1; j < 6; j++) {
Drawable drawable = getResources().getDrawable(getResources()
.getIdentifier("d002_p00"+j, "drawable", getPackageName()));
}
Vous pouvez aussi utiliser ceci:
int res = getResources().getIdentifier("<your pakecgename>:drawable/abc", null, null);
Quelque chose comme ça pourrait marcher
Field[] drawables = Android.R.drawable.class.getFields();
for (Field f : drawables) {
try {
System.out.println("R.drawable." + f.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
Utilisez la ligne suivante pour pouvoir dessiner dynamiquement:
Drawable drawable = this.getResources().getDrawable(R.drawable.yourDrawableID);
Cela vous donnera le Drawable désiré.
public static Drawable getImage(Context context, String name) {
return context.getResources().getDrawable(context.getResources().getIdentifier(name, "drawable", context.getPackageName()));
}
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()));
}
}
Nous pouvons tirer parti de la méthode imageview setImageResource, car celle-ci sera plus efficace que l’attrait, semble-t-il, reportez-vous au code ci-dessous.
Le code ci-dessous peut être utilisé pour afficher l'image comme gif si vous avez l'image divisée en plusieurs parties de gif. Séparez simplement le gif en png individuel à partir d'un outil en ligne et mettez l'image dans le dessin comme dans l'ordre ci-dessous
image_1.png, image_2.png, etc.
Demandez au gestionnaire de modifier l'image dynamiquement.
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);
//
}
});
}
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);
}
}