gpt4 book ai didi

java - 制作一个循环显示所有可能的 RGBA 颜色组合的应用程序

转载 作者:行者123 更新时间:2023-12-01 22:27:35 25 4
gpt4 key购买 nike

我想知道如何做到这一点,以便当您单击按钮时,它会启动一个循环,使用随机数生成器循环遍历 RGBA 颜色的所有可能组合。我试图通过创建一个对象类来实现这一点,该对象类创建所有可能的组合并将它们放入 ArrayList 中,然后随机选择一个可能的 RGBA 组合。

这是我的MainActivity代码

package com.example.safteyprecautions;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.util.Random;

public class MainActivity extends AppCompatActivity
{
private Random rand1;
private Random rand2;
private Random rand3;
private Random rand4;
private int r;
private int g;
private int b;
private int a;
private RGBASelector rgba;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button pressMe = findViewById(R.id.pressMe);
final LinearLayout layout = findViewById(R.id.LinearLayout);
// rand1 = new Random(255);
// rand2 = new Random(255);
// rand3 = new Random(255);
// rand4 = new Random(100);
rgba = new RGBASelector(255, 255, 255, 100);
pressMe.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{

r = rgba.getR();
// g = rgba.getG();
// b = rgba.getB();
// a = rgba.getA();
layout.setBackgroundColor(Color.argb(100, r, 0, 0));
Toast toast = Toast.makeText(getApplicationContext(), "Let the fun begin!", Toast.LENGTH_SHORT);
toast.show();
}
});
}
}

我的对象类

package com.example.safteyprecautions;

import java.util.ArrayList;
import java.util.Random;

public class RGBASelector
{
private int r;
private int g;
private int b;
private int a;
private int[] RGBAValues;
private ArrayList <Integer> RGBA;
private Random rand;

public RGBASelector(int rRange, int gRange, int bRange, int aRange)
{
r = rRange;
g = gRange;
b = bRange;
a = aRange;
rand = new Random(255);
RGBAValues = new int[rRange];
RGBA = new ArrayList <>();
for (int i = 0; i < r; i++)
{
RGBAValues[i] = i;
RGBA.add(RGBAValues[i]);
}
}

// public void createRGBAValues()
// {
// for (int i = 0; i < r; i++)
// {
// RGBAValues[i] = i;
// }
// }

public int getR()
{
r = rand.nextInt();
return RGBA.get(r);
}

public int getG()
{
return g;
}

public int getB()
{
return b;
}

public int getA()
{
return a;
}
}

还有我的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/LinearLayout"
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"
tools:context=".MainActivity">

<TextView
android:id="@+id/welcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Welcome to "
android:fontFamily="cursive" />

<Button
android:id="@+id/pressMe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PRESS ME!!!"
android:fontFamily="cursive" />

</LinearLayout>

最佳答案

您可以使用处理程序创建事件循环,在其中重新调用方法。您可以检查按钮的状态,然后更新或不更新。我的是 kotlin 但很接近。创建了快速概念证明。对于我的布局来说,它只是带有一个普通的 View 的约束布局,它占据了所有内容和按钮。

class MainActivity : AppCompatActivity() {
var pressed = false
val handler = Handler()
lateinit var task: Runnable

val colors = arrayOf(Color.RED, Color.BLACK,Color.BLUE)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val bg: View = findViewById(R.id.background)
val button: Button = findViewById(R.id.doThings)

button.setOnClickListener {
pressed = !pressed
if (pressed)
handler.post(task)
}

task= Runnable {
if (pressed){
bg.setBackgroundColor(colors[Random.nextInt(colors.size)])

handler.post(task)
}
}
}
}

创建一个任务,如果处于 Activity 状态,它将执行工作并调用它自己。

在按钮处理程序中。设置按钮的状态,如果处于 Activity 状态则调用任务。如果颜色太快,可以添加延迟。

关于java - 制作一个循环显示所有可能的 RGBA 颜色组合的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561668/

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