zoukankan      html  css  js  c++  java
  • 在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());
     }
    }

  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/tianguook/p/2422460.html
Copyright © 2011-2022 走看看