2010-03-03 53 views
1

我寫了代碼來繪製視圖。完成後,如何從視圖中獲取生成的圖像。例如,在下面的代碼中,我想從mCustomDrawableView中獲取drawable(Image)。我怎樣才能做到這一點?謝謝。如何從視圖中檢索drawable(圖片)?

public class HelloTestGraph extends Activity { 
    /** Called when the activity is first created. */ 

    // @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 
     LinearLayout lo = (LinearLayout) findViewById(R.id.top_view); 
     LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT); 

     CustomDrawableView mCustomDrawableView = new CustomDrawableView(this); 
     mCustomDrawableView.setLayoutParams(param); 
     lo.addView(mCustomDrawableView); 
    } 

    public class CustomDrawableView extends View { 
     private ShapeDrawable mDrawable; 
     private Drawable mPic; 

     public CustomDrawableView(Context context) { 
      super(context); 

      int x = 10; 
      int y = 10; 
      int width = 300; 
      int height = 50; 

      mDrawable = new ShapeDrawable(new OvalShape()); 
      mDrawable.getPaint().setColor(0xff74AC23); 
      mDrawable.setBounds(x, y, x + width, y + height); 

      mPic = getResources().getDrawable(R.drawable.example_picture); 
      mPic.setBounds(x, y + 100, x + width, y + height+100); 
     } 

     protected void onDraw(Canvas canvas) { 
      mDrawable.draw(canvas); 
      mPic.draw(canvas); 
     } 
    } 
} 

回答

1

這是有點複雜,但應該讓你在那裏。

第1步:創建一個您想要的大小的可變位圖並將其放在一邊。它可能是設備屏幕的大小或最大視圖的大小(取決於您稍後想要使用的大小)將該位圖指針保存在一旁,如myBitmap

第2步:使用上述創建畫布位圖。 「Canvas myCanvas = new Canvas(myBitmap);」

第3步:在您的onDraw()方法中,將視圖同時繪製到傳入的「canvas」對象中,然後繪製到您自己的自定義視圖中。

protected void onDraw(Canvas canvas) { 
    mDrawable.draw(canvas); 
    mPic.draw(canvas); 
    mDrawable.draw(myCanvas); 
    mPic.draw(myCanvas); 
} 

第4步:您的原始位圖現在應該包含您的視圖的完全渲染版本。

我不確定這是否正是您要查找的內容,但它會爲您提供位圖(可將其轉換爲圖像)視圖內容。

+0

你的做法是對的。我也在網上搜索,發現我可以使用下面的代碼來做到這一點: Bitmap image = Bitmap.createBitmap(mCustomDrawableView.getWidth(),mCustomDrawableView.getHeight(),Bitmap.Config.RGB_565); mCustomDrawableView.draw(new Canvas(image)); – user256239 2010-03-03 21:43:28

0

如果您想從課堂外訪問它們,您可以在自定義類中指定getter和setter。

public Drawable getDrawable() { return mDrawable; } 

然後從類外部(如在您的活動中),您可以在實例化視圖後調用getDrawable()方法。

Drawable drawable = mCustomDrawableView.getDrawable();