有人可以帮我一个代码,从我的图纸文件夹中随机显示一张图片吗?我是java的新手,所以我不知道该怎么做.任何帮助将不胜感激.我的要求是: - 1.显示随机图像(图像应在每次启动时更改)2.这就是全部
import java.util.Random; import java.util.Random; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class MainMenu extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_menu); } public void openNewActivity(View view) { Intent intent = new Intent(this,MainActivity.class); startActivity(intent);//button to open main } public void browser(View view) { Intent intent = new Intent(this,Browser.class); startActivity(intent);//button to open browser } final Random rnd = new Random(); { setContentView(R.layout.activity_main_menu); final ImageView img = (ImageView) findViewById(R.id.imgRandom); // I have 3 images named img_0 to img_2, so... final String str = "img_" + rnd.nextInt(9); img.setImageDrawable ( getResources().getDrawable(getResourceID(str, "drawable", getApplicationContext())) ); } protected final static int getResourceID (final String resName, final String resType, final Context ctx) { final int ResourceID = ctx.getResources().getIdentifier(resName, resType, ctx.getApplicationInfo().packageName); if (ResourceID == 0) { throw new IllegalArgumentException ( "No resource string found with name " + resName ); } else { return ResourceID; } } }
Fantômas.. 6
将一些名为img_0的图像放入res/drawable文件夹中的img_n
布局(res/layout/rnd_images.xml):
码:
package com.example.app; import java.util.Random; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.ImageView; public class MainActivity extends Activity { final Random rnd = new Random(); @Override protected void onCreate( final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rnd_images); final ImageView img = (ImageView) findViewById(R.id.imgRandom); // I have 3 images named img_0 to img_2, so... final String str = "img_" + rnd.nextInt(2); img.setImageDrawable ( getResources().getDrawable(getResourceID(str, "drawable", getApplicationContext())) ); } protected final static int getResourceID (final String resName, final String resType, final Context ctx) { final int ResourceID = ctx.getResources().getIdentifier(resName, resType, ctx.getApplicationInfo().packageName); if (ResourceID == 0) { throw new IllegalArgumentException ( "No resource string found with name " + resName ); } else { return ResourceID; } } }
请注意,您必须将rnd.nextInt(2)设置为rnd.nextInt(Max - 1),因为rnd从0开始
[UPDATE]
布局名称必须与setContentView中的名称匹配.
所以,如果你有(为什么?)这个:
setContentView(R.layout.activity_main);
在MainActivity.java/onCreate中,然后重命名布局"activity_main.xml"
或者,更好,按原样使用我的代码.
它无需修改即可使用.
[UPDATE]
检查这一行:
final Random rnd = new Random();
它需要以下导入:
import java.util.Random;
我的代码按原样运行.在给你之前我测试了它.
只需将我的布局放在res/layout中,res/drawable中的图像和MainActivity.java替换默认布局.
请注意,图像名称必须是"img_#",其中#是数字.
此数字必须为0到(最大 - 1).
或者给出"my_city_#"等名称.
但是,您必须更新java代码以匹配这些名称.