2012-02-03 7 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

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); 
Смежные вопросы