android移动view

简介: <ol class="dp-j" start="1"><li class="alt"><span><span class="keyword">import</span><span> android.app.Activity;  </span></span></li><li><span><span class="keyword">import</span><span> android.c
  1. import android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.*;  
  4. import android.os.Bundle;  
  5. import android.view.*;  
  6.   
  7. public class Mian extends Activity {  
  8.     /** Called when the activity is first created. */  
  9.     @Override  
  10.     public void onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState);  
  12.         MyView my=new MyView(this);  
  13.         setContentView(my);  
  14.     }  
  15. }  
  16. class MyView extends SurfaceView implements SurfaceHolder.Callback,Runnable  
  17. {  
  18.     SurfaceHolder holder;  
  19.     Rect rect;//创建类  
  20.     public MyView(Context context)  
  21.     {  
  22.         super(context);  
  23.         holder = this.getHolder();//获取SurfaceHolder对象实例    
  24.         holder.addCallback(this);//添加callback接口  
  25.         setFocusable(true);   
  26.         rect=new Rect(150150);  
  27.         Thread t=new Thread(rect);  
  28.         t.start();  
  29.     }  
  30.     @Override  
  31.   //当SurfaceView尺寸改变时调用  
  32.     public void surfaceChanged(SurfaceHolder holder, int format, int width,int height){}  
  33.     @Override  
  34.   //当SurfaceView创建时调用  
  35.     public void surfaceCreated(SurfaceHolder holder)  
  36.     {  
  37.         new Thread(this).start();//启动新的线程  
  38.     }  
  39.   //当SurfaceView销毁时调用  
  40.     @Override  
  41.     public void surfaceDestroyed(SurfaceHolder holder){}  
  42.     @Override  
  43.     public synchronized void  run() {  
  44.         // TODO Auto-generated method stub  
  45.         while(true){  
  46.             Canvas canvas = holder.lockCanvas(null);//SurfaceHolder锁定并获得canvas对象   
  47.             canvas.drawColor(Color.WHITE);  
  48.             this.drawGraphics(canvas);  
  49.             holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像    
  50.             try {  
  51.                 Thread.sleep(500);  
  52.             } catch (InterruptedException e) {  
  53.                 // TODO Auto-generated catch block  
  54.                 e.printStackTrace();  
  55.             }  
  56.         }  
  57.     }  
  58.     public void drawGraphics(Canvas canvas){  
  59.         Paint mPaint = new Paint();  
  60.         mPaint.setStyle(Paint.Style.FILL);//设置为实心  
  61.         mPaint.setColor(Color.RED);  
  62.         mPaint.setAntiAlias(true);//设置抗锯齿  
  63.         this.draw(canvas, mPaint);  
  64.     }  
  65.     public void draw(Canvas canvas,Paint p){  
  66.         canvas.drawCircle(100, rect.y, 50, p);//画圆   
  67.     }  
  68. }  
  69. class Rect implements Runnable{//矩形类  
  70.     int x;  
  71.     int y;  
  72.     int speed=10;  
  73.     public Rect(int x,int y){  
  74.         this.x=x;  
  75.         this.y=y;  
  76.     }  
  77.     @Override  
  78.     public void run() {  
  79.         // TODO Auto-generated method stub  
  80.         while(true){  
  81.             y+=speed;  
  82.             try {  
  83.                 Thread.sleep(500);  
  84.             } catch (InterruptedException e) {  
  85.                 // TODO Auto-generated catch block  
  86.                 e.printStackTrace();  
  87.             }  
  88.         }  
  89.     }  

目录
相关文章
|
1月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
View的绘制和事件处理是两个重要的主题,上一篇《图解 Android事件分发机制》已经把事件的分发机制讲得比较详细了,这一篇是针对View的绘制,View的绘制如果你有所了解,基本分为measure、layout、draw 过程,其中比较难理解就是measure过程,所以本篇文章大幅笔地分析measure过程,相对讲得比较详细,文章也比较长,如果你对View的绘制还不是很懂,对measure过程掌握得不是很深刻,那么耐心点,看完这篇文章,相信你会有所收获的。
69 2
|
2月前
|
消息中间件 前端开发 Android开发
Android面试题自定义View之Window、ViewRootImpl和View的三大流程
Android开发中,View的三大核心流程包括measure(测量)、layout(布局)和draw(绘制)。MeasureSpec类在测量过程中起到关键作用,它结合尺寸大小和模式(EXACTLY、AT_MOST、UNSPECIFIED)来指定View应如何测量。onMeasure方法用于自定义View的测量,布局阶段,ViewGroup调用onLayout确定子元素位置,而draw阶段按照特定顺序绘制背景、内容、子元素和装饰。整个流程始于ViewRootImpl的performTraversals,该方法触发测量、布局和绘制。
36 0
|
Android开发
android之View Touch事件的传递流程
android应用界面的布局如下图所示,一般我们在展示一个界面时会使用一个Activity表示;而Activity时通过Window展示的,android的Window实现类叫PhoneWindow;PhoneWindow类有个mDecor的DectorView全局变量,用来对界面的View元素进行修饰;DectorView用来修饰ActionBar、ContentView(Activity.setContentView);ContentView里面包含了用户自定义的一些子Layout。
1195 0
|
Android开发 数据格式 XML
|
Java Android开发 容器