安卓篇:消息和UI

2023-11-07 10:48
文章标签 ui 消息 安卓篇

本文主要是介绍安卓篇:消息和UI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      在Android中,在非主线程中更新UI控件是不安全的,app在运行时会直接Crash,所以当我们需要在非主线程中更新UI控件,那么就需要用到Handler和Message来实现
Demo中,使用到一个按钮和一个TextView,点击按钮之后改变TextView的内容,按钮点击时候新建一个进程,在进程中对UI控件进行修改。

initHandler();

private void initHandler()
{
  final View child[][] = new View[10][10];
  final View child1[][] = new View[10][10];
       mHandler = new Handler(){
       
           @SuppressWarnings({ "deprecation", "unused" })
@Override
           public void handleMessage(Message msg) {
 
            if(msg.what ==  alarm_selected_cleared) //清除报警器选择状态
            //clear_alarm_selected();
            {
            Log.e("", "alarm_selected_cleared");
            return;
            }


           
           
            for(int i = 0; i<getCarNum(); i++)
           
            for(int j = 0 ; j< getAlarmNum() ;j++)
            {
            if(((View)MyView[i].getChildAt(2*j) == null)|| ((View)MyView[i].getChildAt(2*j+1) == null))
            {
            Log.e("", "OVER! ");
            return;
            }
            int childcount = MyView[i].getChildCount();
           
            child[i][j] = (View)MyView[i].getChildAt(2*j);
            child1[i][j] = (View)MyView[i].getChildAt(2*j+1);
            if(msg.what == alarm_selected_changed_sta[i][j])
            {
           
            Log.e("", "A: "+i+" B: "+j+" "+ alarm_selected_changed_sta[i][j]);
            filck_control.startFlick(child[i][j], 300);
           
            child[i][j].setBackgroundDrawable(getResources().getDrawable(R.drawable.alarm_active));
                       break;
}
            if(msg.what == alarm_selected_changed_sta[i][j+10])
{
            Log.e("", "AA: "+i+" BB: "+j+" "+ alarm_selected_changed_sta[i][j+10]);
           
            clear_select_sta();
               
child1[i][j].setBackgroundDrawable(getResources().getDrawable(R.drawable.alarm_selected));


}
            }
           
            }


           }
       };
}



  然后,通过发送消息更新界面。

   static public MyViewGroup tab_fragment_passenger_alarm;

   public class MyFlashThread extends Thread {  


   //继承Thread类,并改写其run方法      


   private final static String TAG = "My Thread ===> ";      
   public void run(){  
       Log.d(TAG, "run");  
       for(int i = 0; i<5000; i++)  
       {  
        if((i%6 ==3)||(i%6 ==4))
        {
        try {  
                Thread.sleep(500); 
                MainActivity.tab_fragment_passenger_alarm.mHandler.sendEmptyMessage(MyViewGroup.alarm_selected_changed_sta[i%6][i%6+1]);
                MainActivity.tab_fragment_passenger_alarm.mHandler.sendEmptyMessage(MyViewGroup.alarm_selected_changed_sta[i%6][i%6]);
                } catch (InterruptedException e) {  
                e.printStackTrace(); }
        }
        else
        {
       
        try {  
                Thread.sleep(500);  
                //MainActivity.tab_fragment_passenger_alarm.mHandler.sendEmptyMessage(MyViewGroup.alarm_selected_changed);
                } catch (InterruptedException e) {  
                e.printStackTrace(); }
        }
           
       }  


   }  




这篇关于安卓篇:消息和UI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363110

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs

Java消息队列:RabbitMQ与Kafka的集成与应用

Java消息队列:RabbitMQ与Kafka的集成与应用 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代的分布式系统中,消息队列是实现系统间通信、解耦和提高可扩展性的重要组件。RabbitMQ和Kafka是两个广泛使用的消息队列系统,它们各有特点和优势。本文将介绍如何在Java应用中集成RabbitMQ和Kafka,并展示它们的应用场景。 消息队

Kafka 分布式消息系统详细介绍

Kafka 分布式消息系统 一、Kafka 概述1.1 Kafka 定义1.2 Kafka 设计目标1.3 Kafka 特点 二、Kafka 架构设计2.1 基本架构2.2 Topic 和 Partition2.3 消费者和消费者组2.4 Replica 副本 三、Kafka 分布式集群搭建3.1 下载解压3.1.1 上传解压 3.2 修改 Kafka 配置文件3.2.1 修改zookeep

Android 友盟消息推送集成遇到的问题

友盟消息推送遇到的问题 集成友盟消息推送,步骤根据提供的技术文档接入便可。可是当你集成到项目中去的时候,可能并不是一帆风顺就搞定,因为你项目里面是可能集成了其他的sdk(比如支付宝,微信,七鱼等等三方的sdk)。那么这个时候,再加上友盟的消息推送sdk集成可能就会出现问题。 问题清单 友盟消息推送sdk和支付宝sdk冲突问题 后台配置了消息推送,也显示发送成功,但是手机没有收到消息通知

消息队列的理解和应用场景

知乎上的一个通俗理解的优秀答案 by 祁达方 小红是小明的姐姐。 小红希望小明多读书,常寻找好书给小明看,之前的方式是这样:小红问小明什么时候有空,把书给小明送去,并亲眼监督小明读完书才走。久而久之,两人都觉得麻烦。 后来的方式改成了:小红对小明说「我放到书架上的书你都要看」,然后小红每次发现不错的书都放到书架上,小明则看到书架上有书就拿下来看。 书架就是一个消息队列,小红是生产者,小明是

移动UI:分类列表页、筛选页的设计揭秘。

移动UI的列表页设计需要考虑用户体验和界面美观性,以下是一些建议的设计要点: 1. 列表项的展示: 列表页应该清晰地展示各个列表项,包括标题、副标题、缩略图等内容,以便用户快速浏览和识别。可以使用卡片式布局或者简洁的列表布局。 2. 搜索和筛选: 如果列表项较多,应该提供搜索和筛选功能,方便用户查找感兴趣的内容。搜索框和筛选条件可以放置在页面顶部或者底部,以便用户方便操作。

UI自动化测试常见面试题

1、什么是UI自动化测试? UI自动化测试是一种通过模拟用户交互并自动执行UI操作的软件测试方法。它用于验证用户界面的功能和稳定性,以确保在不同的操作系统、浏览器和设备上的一致性。 2、UI自动化测试的优势和劣势是什么? 优势: 可以节省时间和成本,提高测试效率。 可以自动执行大量的重复测试任务,减少人为错误。 可以实现广泛的测试覆盖,包括不同的操作系统、浏览器和设备。 可以提供稳定

element-ui打包之后图标不显示,woff、ttf加载404

1、bug 起因 昨天在 vue 项目中编写 element-ui 的树形结构的表格,发现项目中无法生效,定位问题之后发现项目使用的 element-ui 的版本是 2.4.11 。看了官方最新版本是 2.15.14,然后得知 2.4.11 版本是不支持表格树形结构的。于是决定升级 element-ui 的版本,方便后续的开发。 升级之后本地简单的过了一遍系统功能,并没有发现有什么不妥,于