gpt4 book ai didi

android - 按下按钮时应用程序随机从可绘制文件夹中选择图像

转载 作者:行者123 更新时间:2023-11-29 01:47:13 24 4
gpt4 key购买 nike

我是 Android 开发的新手,我四处寻找可以组合的代码,但没有运气..

所以我想创建一个 Android 应用程序,当按下按钮时,它会从 drawable 文件夹中随机选择图像,并且你不能在 30 秒内再次按下按钮。

欢迎任何帮助。

随机 Activity .java

package com.example.no;

import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View.OnClickListener;

public class RandomImage extends Activity implements OnClickListener{
private static final Random rgenerator = new Random();
Integer [] mImageIds = {
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Integer q = mImageIds[rgenerator.nextInt(mImageIds.length)];
ImageView iv = (ImageView) findViewById(R.id.imageviewyeah);
iv.setTag(q);
View nextButton = findViewById(R.id.next_image_button);
nextButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.next_image_button:
Intent i = new Intent(this, RandomImage.class);
startActivity(i);
break;
}
}

@Override
public boolean onCreateOptionsMenu (Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected (MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(this, MainActivity.class));
return true;
}

return false;
}

}

--activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget0"
android:background="@drawable/bgi"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" >
<ImageView
android:id="@+id/imageviewyeah"
android:tag="q"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
</ImageView>
<Button
android:id="@+id/next_image_button"
android:text="Next Image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:typeface="serif"/>
</LinearLayout>

--

最佳答案

在声明中:

final Random rnd = new Random();
ImageView img = null;
Button btnRandom = null;

在主 Activity 中:

@Override
protected void onCreate(
final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.rnd_images);
img = (ImageView) findViewById(R.id.imgRandom);
btnRandom = (Button) findViewById(R.id.btnRandom);
}

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

public void clickHandler(final View v)
{
switch(v.getId())
{
case R.id.btnRandom:
{
if (!btnRandom.isEnabled())
{
return;
}

// 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()))
);
btnRandom.setEnabled(false);

new CountDownTimer(5000, 1000) // Wait 5 secs, tick every 1 sec
{
@Override
public final void onTick(final long millisUntilFinished)
{
btnRandom.setText("Wait: " + (millisUntilFinished / 1000));
}
@Override
public final void onFinish()
{
btnRandom.setText("Change!");
btnRandom.setEnabled(true);
}
}.start();

break;
}
}
}

布局(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"
/>
<Button
android:id="@+id/btnRandom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Change!"
android:onClick="clickHandler"
/>
</RelativeLayout>

[编辑]

我修改了布局中的按钮定义。我看到没有遵守时间安排,所以,我要修复它。

我还修复了代码以正确处理时间。

[重新编辑]

我修改了 clickHandler 函数以显示剩余的宽限期并在点击后第一次触发,没有任何延迟

关于android - 按下按钮时应用程序随机从可绘制文件夹中选择图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20709591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com