在每个启动的Android应用程序上显示随机图像

时间:2014-03-28 07:50:07

标签: android image random webview startup

有人可以帮助我使用代码示例来随机显示我的图纸文件夹中的图片吗?我是新开发者,所以我不知道该怎么做。谢谢!

我的要求是:显示随机图像(图像应在每次启动时更改

3 个答案:

答案 0 :(得分:2)

考虑到drawable中有10张图片,名称格式为 your_image_1your_image_2,....直到your_image_10 您可以在每次开始申请时使用以下代码将ImageView随机图像设置

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

答案 1 :(得分:1)

将一些名为img_0的图像放入res / drawable文件夹中的img_n

布局(res / layout / 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(Max - 1),因为rnd从0开始

答案 2 :(得分:0)

您可以在启动时显示@Saqib提到的随机图像,或者您可以循环显示图像,即在第一次启动时您可以显示第一个图像,在第二个图像中显示第二个图像,然后重复循环。为此,您需要做的就是优先存储一个整数,并在每次启动应用程序时增加整数的值,并优先存储更新的值