Drawable を使ってみた

Drawableクラスは abstract class で
サブクラスには
  • BitmapDrawable
  • ColorDrawable
  • RotateDrawable
  • ScaleDrawable
  • etc...
といろいろあります

今回は BitmapDrawable クラスを使ってみた

BitmapDrawable は
java.lang.Object
  ↳ android.graphics.drawable.Drawable
    ↳ android.graphics.drawable.BitmapDrawable
を使用します

というわけで BitmapDrawable をいじってみた

サンプルプログラム
  1. import android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.BitmapFactory;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.drawable.BitmapDrawable;  
  6. import android.os.Bundle;  
  7. import android.view.Gravity;  
  8. import android.view.View;  
  9.   
  10. public class DrawableTest extends Activity {  
  11.   BitmapDrawable bitmapDrawable;  
  12.   @Override  
  13.   public void onCreate(Bundle savedInstanceState) {  
  14.     super.onCreate(savedInstanceState);  
  15.     setContentView(new DrawableTestView(this));  
  16.   }  
  17.   
  18.   class DrawableTestView extends View {  
  19.     public DrawableTestView(Context context) {  
  20.       super(context);  
  21.       // BitmapDrawable を作成  
  22.       bitmapDrawable = (BitmapDrawable) context.getResources().getDrawable(R.drawable.icon);  
  23.     }  
  24.     @Override  
  25.     public void onDraw(Canvas canvas) {  
  26.       // BitmapDrawable の範囲を設定  
  27.       bitmapDrawable.setBounds(004848);  
  28.       // BitmapDrawable の描画  
  29.       bitmapDrawable.draw(canvas);  
  30.      
  31.       // BitmapDrawable のアルファ値を設定  
  32.       bitmapDrawable.setAlpha(128);  
  33.       bitmapDrawable.setBounds(4809648);  
  34.       bitmapDrawable.draw(canvas);  
  35.       bitmapDrawable.setAlpha(255);     
  36.   
  37.       // BitmapDrawable にアンチエイリアスを設定  
  38.       bitmapDrawable.setAntiAlias(true);  
  39.       bitmapDrawable.setBounds(048240288);  
  40.       bitmapDrawable.draw(canvas);  
  41.      
  42.       bitmapDrawable.setAntiAlias(false);  
  43.       bitmapDrawable.setBounds(24048480288);  
  44.       bitmapDrawable.draw(canvas);  
  45.      
  46.       bitmapDrawable.setBounds(00, getWidth(), getHeight());  
  47.       // BitmapDrawable にグラビティを設定  
  48.       bitmapDrawable.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);  
  49.       bitmapDrawable.draw(canvas);  
  50.     }  
  51.   }  
  52. }  

プログラムを実行してみると...


こんな感じ!(左:アンチエイリアスあり, 右:なし)

この画像だとアンチエイリアスの違いはよく分からないですね
状況によって使い分けるのが良さそう

参考サイト
http://developer.android.com/intl/ja/reference/android/graphics/drawable/Drawable.html
http://developer.android.com/intl/ja/reference/android/graphics/drawable/BitmapDrawable.html

0 件のコメント:

コメントを投稿