2012-02-03 75 views
0

我是Android.My應用程序的新手,需要重複繪製一個畫布圓圈。但是,重繪的速度比我想要的要少。我怎樣才能增加同樣的。提高速度以重新繪製Android屏幕

我的代碼如下:

- > ImagePracActivity.java

package com.pkg.ImagPrac; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.Window; 
    import android.view.WindowManager; 

    public class ImagePracActivity extends Activity { 
     //DrawView drawView; 
     movement mv; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Set full screen view 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
             WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     requestWindowFeature(Window.FEATURE_NO_TITLE);  

     mv=new movement(getApplicationContext());    
     setContentView(mv);    
     mv.requestFocus();    
     } 
    } 

- > movement.java

package com.pkg.ImagPrac; 

import android.content.Context; 
import android.content.Intent; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.util.Log; 
import android.view.Display; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.view.WindowManager; 

public class movement extends View implements OnTouchListener{  
    Display display; 
    float x=0,y=0; 
    Paint paint=new Paint(); 
    private boolean flag; 

    public movement(Context context) { 
     super(context);   
     setFocusable(true); 
     setFocusableInTouchMode(true);  
     this.setOnTouchListener(this); 

     paint.setColor(Color.BLUE); 
     paint.setAntiAlias(true); 

     display = ((WindowManager) 
     context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
     x = 0; 
     y = display.getHeight();    
    } 

     @Override 
     protected void onDraw(Canvas canvas) {    

      if(x<(display.getWidth()/2)) 
     { 
      canvas.drawCircle(x++, y--, 5, paint); 
     }   
      else if(x<(display.getWidth())) 
     { 
      canvas.drawCircle(x++, y++, 5, paint); 
     }  

     this.invalidate(); 
    }  
      public boolean onTouch(View arg0, MotionEvent arg1) { 
     // TODO Auto-generated method stub 
     return false; 
    }  
} 

回答

0

一會建議你使用SurfaceVi ew類而不是View,因爲SurfaceView速度更快,並允許您在單獨的線程中使用所有繪圖邏輯。閱讀更多關於SurfaceView:http://developer.android.com/guide/topics/graphics/2d-graphics.html

+0

感謝您的幫助。它的確幫助我取得了一些進展。但是我想知道我是應該創建一個單獨的線程,還是應該在Surfaceview自身的方法中執行繪圖。 – Jay 2012-02-07 03:01:28

0

試試這個

mPaint = new Paint(); 
mPaint.setAntiAlias(true); 
mPaint.setDither(true); 
mPaint.setColor(Color.BLUE); 
mPaint.setStyle(Paint.Style.STROKE); 
mPaint.setStrokeJoin(Paint.Join.ROUND); 
mPaint.setStrokeCap(Paint.Cap.ROUND); 
mPaint.setStrokeWidth(5);