2014-03-28 74 views
1

有人可以幫我拿出代碼例如從我的圖形文件夾中隨機顯示圖片?我是新開發人員,所以我不知道如何去做。謝謝!顯示每次啓動Android應用程序時的隨機圖像

我的要求是:顯示隨機圖像(形象應該更改每個啓動

+3

這不是SO的工作原理。首先,你可以谷歌的一些想法,嘗試一下,如果它仍然無法回來,並告訴我們你做了什麼。 –

回答

1

將名爲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

+0

完美!非常感謝@vyger – mali

+0

不客氣,親愛的! –

2

開始考慮你有drawable 10個圖像與名稱格式爲 your_image_1your_image_2。 ...高達your_image_10 你可以在應用程序的開始,每次

public void onCreate(Bundle instance){ 
//.... 
    Random r = new Random(); 
    int randomNumber = r.nextInt(10 - 1) + 1; 

    ImageView image = (ImageView) findViewById(R.id.image); 
    String imageName = "your_image_" + randomNumber; 
    image_ID = getResources().getIdentifier(imageName, "drawable", getPackageName()); 

    image.setBackgroundResource(image_ID); 
} 
+0

不工作!謝謝。 – mali

0

可以顯示在啓動時爲@Saqib隨機圖像使用下面的代碼的隨機圖像設置ImageView提到,或者你可以循環顯示圖像,即在第一次啓動時,您可以顯示第一個圖像e,然後在第二個,然後重複這個循環。爲此,您需要做的就是優先存儲整數,並在每次啓動應用程序時遞增整數的值,並優先存儲更新的值。

相關問題