Handler 修改UI

编程入门 行业动态 更新时间:2024-10-09 16:25:43

<a href=https://www.elefans.com/category/jswz/34/1751815.html style=Handler 修改UI"/>

Handler 修改UI

在一个Activit中显示一个100个按钮、每个按钮上显示一个随机数。再设计一个产生随机数的按钮和一个排序按钮,随机数按钮为100个按钮产生随机数,排序按钮对100个按钮上的数字排序。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""xmlns:tools=""xmlns:app=""android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ListViewActivity"android:orientation="vertical"><GridLayoutandroid:layout_width="match_parent"android:layout_height="400dp"android:id="@+id/gridLayout"android:columnCount="10"android:rowCount="10"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><Buttonandroid:layout_marginTop="20dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="生成随机数"android:id="@+id/randnt"/><Buttonandroid:layout_marginTop="10dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="随机数排序"android:id="@+id/Sort"/></LinearLayout>
</LinearLayout>
public class ListViewActivity extends AppCompatActivity implements View.OnClickListener {private int[] numbers = new int[100];GridLayout gridLayout;int[] randent = randent(numbers);private Handler mHandler = new Handler(Looper.getMainLooper());public int[] Sort(int[] arrays) {for (int i = 0; i < arrays.length - 1; i++) {for (int j = 0; j < arrays.length - i - 1; j++) {int tmp = arrays[j + 1];if (arrays[j] > arrays[j + 1]) {arrays[j + 1] = arrays[j];arrays[j] = tmp;}}}
//        System.out.println("冒泡排序:" + Arrays.toString(arrays));return arrays;}public int[] randent(int[] arrays) {for (int i = 0; i < arrays.length; i++) {arrays[i] = new Random().nextInt(100);}return arrays;}public void change(final int[] arrays) {gridLayout.removeAllViews();  // 清空GridLayoutfor (int i = 0; i < 100; i++) {final Button button = new Button(this);final int index = i;  // 保存当前i的值mHandler.post(new Runnable() {@Overridepublic void run() {// 设置按钮的布局参数GridLayout.LayoutParams params = new GridLayout.LayoutParams();params.width = 0;params.height = 0;params.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);params.rowSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);button.setText(String.valueOf(arrays[index]));button.setLayoutParams(params);// 设置按钮文本居中button.setGravity(Gravity.CENTER);gridLayout.addView(button);}});}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_list_view);gridLayout = findViewById(R.id.gridLayout);findViewById(R.id.randnt).setOnClickListener(this);findViewById(R.id.Sort).setOnClickListener(this);change(randent);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.randnt) {randent = randent(numbers);// 在主线程中更新UImHandler.post(new Runnable() {@Overridepublic void run() {change(randent);}});} else if (v.getId() == R.id.Sort) {Sort(randent);// 在主线程中更新UImHandler.post(new Runnable() {@Overridepublic void run() {change(randent);}});Toast.makeText(this, "排序成功", Toast.LENGTH_LONG).show();}else {}}
}

更多推荐

Handler 修改UI

本文发布于:2023-11-30 12:23:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1650024.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Handler   UI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!