Android线程中设置控件的值提示报错的解决方法
程序员文章站
2024-03-03 22:27:46
本文实例讲述了android线程中设置控件的值提示报错的解决方法。分享给大家供大家参考,具体如下:
在android线程中设置控件的值一般会与handler联合使用,如下...
本文实例讲述了android线程中设置控件的值提示报错的解决方法。分享给大家供大家参考,具体如下:
在android线程中设置控件的值一般会与handler联合使用,如下:
package com.yarin.android.examples_04_15; import android.app.activity; import android.os.bundle; import android.os.handler; import android.os.message; import android.widget.imageview; import android.widget.textview; public class activity01 extends activity { //声明imageview对象 imageview imageview; textview textview; //imageview的alpha值, int image_alpha = 255; handler mhandler = new handler(); //控件线程 boolean isrung = false; /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); isrung = true; //获得imageview的对象 imageview = (imageview) this.findviewbyid(r.id.imageview01); textview = (textview) this.findviewbyid(r.id.textview01); //设置imageview的图片资源。同样可以再xml布局中像下面这样写 //android:src="@drawable/logo" imageview.setimageresource(r.drawable.logo); //设置imageview的alpha值 imageview.setalpha(image_alpha); //开启一个线程来让alpha值递减 new thread(new runnable() { public void run() { while (isrung) { try { thread.sleep(200); //更新alpha值 updatealpha(); //如果使用下面注释的代码来直接设置imageview的透明度、textview的值会报错,因为线程中不能对控件进行设置操作,需要使用一个handler来进行对相关值的设置 // if (image_alpha - 7 >= 0) // { // image_alpha -= 7; // } // else // { // image_alpha = 0; // isrung = false; // } // imageview.setalpha(image_alpha); // textview.settext("现在alpha值是:"+integer.tostring(image_alpha)); } catch (interruptedexception e) { e.printstacktrace(); } } } }).start(); //接受消息之后更新imageview视图 mhandler = new handler() { @override public void handlemessage(message msg) { super.handlemessage(msg); imageview.setalpha(image_alpha); textview.settext("现在alpha值是:"+integer.tostring(image_alpha)); //更新 imageview.invalidate(); } }; } public void updatealpha() { if (image_alpha - 7 >= 0) { image_alpha -= 7; } else { image_alpha = 0; isrung = false; } //发送需要更新imageview视图的消息 mhandler.sendmessage(mhandler.obtainmessage()); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android线程与消息机制用法总结》、《android编程之activity操作技巧总结》、《android调试技巧与常见问题解决方法汇总》、《android开发入门与进阶教程》、《android多媒体操作技巧汇总(音频,视频,录音等)》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
下一篇: 对asp.net缓存 的深入了解