在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());
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值