2013-12-12 111 views
1

有人可以帮我一个代码从我的图纸文件夹中随机显示图片吗?我是新来的Java,所以我不知道如何去做。 任何帮助将不胜感激。 我的要求是: - 1.显示随机图像(图像应更改每个启动) 2.that的所有如何在图像视图上显示随机图像

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


} 
} 

回答

5

放一些图片命名img_0在你的资源来img_n /绘制的文件夹

布局(RES /布局/ rnd_images.xml):

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    > 
    <ImageView 
     android:id="@+id/imgRandom" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
    /> 
</RelativeLayout> 

代码:

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(最大值 - 1),因为RND从0开始。

[更新]

布局名称必须匹配的setContentView。
所以,如果你有(为什么呢?)这一点:

setContentView(R.layout.activity_main); 
在MainActivity.java/onCreate,然后重命名布局 “activity_main.xml中”

,或者更好,使用我的代码IS

它的工作原理没有修改。

[更新]

检查这一行:

final Random rnd = new Random(); 

它需要以下导入:

import java.util.Random; 

我的代码作品是。在给您之前我测试了它。
只需将我的布局放置在res/layout中,res/drawable中的图像和MainActivity.java就可以替换默认的一个。

请注意,图像名称必须是“img_#”,其中#是数字。
此编号必须为0到(最大 - 1)。

或给出像“my_city_#”之类的名字或其他。
但是你必须更新java代码到匹配这些名字

+0

如果我有10张图片,我应该将它设置为9吗? – Anonymous

+1

是的,完美的。第一个是0,最后一个是9 –

+0

你的代码使我的应用程序的力量接近! – Anonymous