android线程改变布局,Android线程中设置控件的值提示报错的解决方法

本文实例讲述了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程序设计有所帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值