zoukankan      html  css  js  c++  java
  • Handler理解

    Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。常用的方法是利用Handler来实现UI线程的更新的。

     

    package com.handler;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Point;
    import android.graphics.drawable.Drawable;
    import android.view.View;

    public class TestView extends View {
        float x = 40;
        public TestView(Context context) {
             super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            x+=5;
            Paint mPaint = new Paint();
            mPaint.setAntiAlias(true);
            mPaint.setColor(Color.GREEN);
            canvas.drawCircle(x, 100, 100, mPaint);
        }
    }
     

    public class TestHandler extends Activity { 
         protected static final int GUIUPDATEIDENTIFIER = 0x101;  
         TestView myView = null;  
         Handler myHandler = new Handler() { 
              public void handleMessage(Message msg) {  
                   switch (msg.what) {  
                        case TestHandler.GUIUPDATEIDENTIFIER:  
                             myView.invalidate(); 
                             break;  
                   }  
                   super.handleMessage(msg);  
              }  
         }; 
         public void onCreate(Bundle savedInstanceState) {  
              super.onCreate(savedInstanceState);  
              this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
              this.myBounceView = new BounceView(this); 
              this.setContentView(this.myBounceView);  
              new Thread(new TestThread()).start(); 
         }  
         class TestThread implements Runnable {  
              public void run() { 
                   while (!Thread.currentThread().isInterrupted()) {   
                        Message message = new Message();  
                        message.what = TestHandler.GUIUPDATEIDENTIFIER;  
                        TestHandler.this.myHandler.sendMessage(message);  
                        try {  
                             Thread.sleep(100);   
                        } catch (InterruptedException e) {  
                             Thread.currentThread().interrupt();  
                        }  
                   }  
              }  
         }  
    }

  • 相关阅读:
    Python的函数式编程: map, reduce, sorted, filter, lambda
    idea cant resolve symbo 'Table'
    idea离线下载lombok,以及lobok版本不兼容
    idea 设置author 设置黑色主题
    sbmvnmysql配置
    vue.js 接收url参数
    简单商城的数据库建表sql
    vue项目从静态页面添加后台出现的一些问题
    HTML转义字符大全
    vue dialog样式
  • 原文地址:https://www.cnblogs.com/wzh206/p/1736329.html
Copyright © 2011-2022 走看看