最終更新:2016-01-04 (月) 19:01:23 (3033d)  

Android/描画
Top / Android / 描画

http://developer.android.com/guide/topics/graphics/2d-graphics.html

ビュー

android.view.View

  • 描画処理:メインスレッドのみ
  • 画面の更新時にViewクラスでは、onDrawメソッドが自動的に呼ばれ、グラフィックの描画が行われますが、 SurfaceViewでは、呼び出されません。

android.view.TextureView

  • Viewなのでレイアウトの移動とかもできる
  • 回転もできる、アルファも使える

android.view.SurfaceView

  • アプリケーションの裏に新しいWindowを生成する
  • アプリケーションの一部に穴を開けて裏のWindowを表示する
  • 裏のWindowに描画されたコンテンツなので、意図したとおりに変形させられない
    • このため、ListViewScrollViewで使いづらい
    • UIに直接作用するView Propertyが使えない。View#setAlpha()とか

SurfaceHolder

  • Surfaceのピクセルを実際にいじったり、Surfaceの変化を監視する人のためのインターフェイス。
  • SurfaceView.getHolder()メソッドが用意されていて、そのSurfaceViewのホルダーのインスタンスを取得できる
    public MySurfaceView(Context context) {
        super(context);
        SurfaceHolder holder = getHolder(); // でもこのタイミングではまだSurfaceの準備ができてない
        holder.addCallback(this);
        //new Thread
        thread = new Thread();
    }
  • SurfaceHolder.lockCanvas?
  • SurfaceHolder.unlockCanvasAndPost?

SurfaceHolder.Callback

SurfaceViewのrun

  •     Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.BLUE);
        paint.setStyle(Style.FILL);
    
        Canvas canvas = holder.lockCanvas();
        canvas.drawColor(Color.BLACK);
        canvas.drawCircle(100, 200, 50, paint);
        holder.unlockCanvasAndPost(canvas);

描画

android.graphics.Bitmap

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);

android.graphics.Paint

android.graphics.Canvas

android.graphics.Color

android.graphics.Picture

RectとかText

Drawable