android自定义 view组件重绘问题

我自定义了一个view组件当做背景,是动态的。但是当我将它放进主activity中,它就莫名其妙的不动了。代码如下packagecom.example.zhuyao;im... 我自定义了一个view组件当做背景,是动态的。但是当我将它放进主activity中,它就莫名其妙的不动了。代码如下
package com.example.zhuyao;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;
public class BeiJing extends View
{
final int BACK = 1215;
private Bitmap back;
final int WIDTH = 1215;
final int HEIGHT = 717;
private int startX = BACK - WIDTH;
public BeiJing(Context context, AttributeSet attrs) {
super(context, attrs);
back = BitmapFactory.decodeResource(context.getResources()
, R.drawable.back_img);}
public BeiJing(Context context){
super(context);
back = BitmapFactory.decodeResource(context.getResources()
, R.drawable.back_img);

final Handler handler = new Handler();
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
onDraw(null);
invalidate();
}

});
}
}).start();
}
@SuppressLint("DrawAllocation")
public void onDraw(Canvas canvas)
{
Bitmap bitmap2 = Bitmap.createBitmap(back, startX, 0, 800 , 600);
canvas.drawBitmap(bitmap2, 0 , 0 , null);
}

}
展开
 我来答
kekol115
推荐于2016-11-22 · TA获得超过141个赞
知道答主
回答量:78
采纳率:0%
帮助的人:81万
展开全部
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
onDraw(null);
invalidate();
}

});
}
}).start();
新线程实现了runnable接口但是 里面的 第一个 run 方法只执行一次就退出了。应该加入循环不断更新。而hander.post 里的那个runnable 外层每循环一次就post一次 所以不用加入循环语句。

boolean flag=true;
new Thread(new runnable{
public void run(){
try{
while(flag){
Thread.sleep(1);
handler.post(new Runnable() {
public void run() {
onDraw(null);
invalidate();
}
});
}catch (InterruptedException e) {
e.printStackTrace();
flag=flase;
}
}
}).start();
匿名用户
2012-07-29
展开全部
你没有让线程一直运行,所以它只运行一次,不会一直更新
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slim丶风
2012-07-29 · TA获得超过406个赞
知道小有建树答主
回答量:516
采纳率:0%
帮助的人:285万
展开全部
用service更新view

怎么用这种方法设置背景
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式