java - Android使其他类的视图无效
问题描述
我有两个类 MyView 和 MyThread 并且想从 MyThread 类中的计时器每隔几毫秒重新绘制一次视图。计时器开始运行,但我的视图不会被重新绘制,我不明白为什么。这是我的代码:
我的观点:
public class MyView extends SurfaceView{
private MainActivity mainActivity;
private Random random = new Random();
public MyView(Context context) {
super(context);
mainActivity = (MainActivity)context;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
setBackgroundColor(Color.argb(random.nextInt(255),random.nextInt(255),
random.nextInt(255),random.nextInt(255)));
}
}
我的线程:
public class MyThread implements SurfaceHolder.Callback {
private Timer timer = new Timer();
private MainActivity mainActivity;
private MyView myView;
public MyThread(Context context) {
mainActivity = (MainActivity) context;
myView = new MyView(context);
timer.schedule(new TimerThread(),50,50);
}
class TimerThread extends TimerTask {
@Override
public void run() {
mainActivity.runOnUiThread(new TimerTask() {
@Override
public void run() {
Log.v("Log","Timer run");
myView.setBackgroundColor(Color.RED);
myView.invalidate();
}
});
}
}
任何帮助,将不胜感激。
解决方案
推荐阅读
- apache-nifi - 如何在 IDEA 中调试 nifi
- css - 将 React 组件的 CSS 设置为从服务器端接收的值
- javascript - 变量已声明但仍显示未定义
- reactjs - 通过自定义 CLI 创建 React 项目
- python - 如何解决python中必须是字符串而不是列表的错误?
- c# - 如何使用 linq 获取当年的每月记录
- r - R data.table中连续变量的动态编码
- ios - Swift - 以编程方式制作的约束使图像拉伸
- javascript - 如何使用 webdriver (JavaScript) 在 selenium 中停止测试?
- c# - 当缓存不可用时,如何在 Gmap.net 的离线模式下使用 mbtile 地图?