如何在图像视图上显示随机图像

 灬猎丶豹灬_511 发布于 2023-02-11 11:18

有人可以帮我一个代码,从我的图纸文件夹中随机显示一张图片吗?我是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代码以匹配这些名称.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有