私はアイデアをテストしてきましたが、問題に遭遇しました。カスタム ImageView を作成しました。私はこれを LayeredView と呼びました。ビットマップのいくつかのレイヤーをそれにフィードし、これらのレイヤーを src ドローアブルの上に追加して、フレーム、スティックなどを作成するという考えです。画像をオーバーレイして適切に表示することができましたが、結果のビットマップを取得しようとすると、スケールが外れます。私のテストでは、描画キャッシュを取得して別の ImageView に配置しようとしました。結果はこれらのリンクにあります(評判の欠如のため)
LayeredView が正常に表示されました: https://www.dropbox.com/s/34dcktew05yc1hg/Screenshot_2015-06-17-00-30-34.png?dl=0レイヤーが正しく配置されていない 結果 https://www.dropbox.com/s /pveeotksxss2oos/Screenshot_2015-06-17-00-30-53.png?dl=0 私のコードは次のようになります:
public class LayeredView extends ImageView
{
private List<Layer> layers;
public LayeredView(Context context){
this(context, null);
}
public LayeredView(Context context, AttributeSet attrs){
super(context, attrs);
layers = new ArrayList<Layer>();
addBitmap(((BitmapDrawable) context.getResources().getDrawable(R.drawable.frame1)).getBitmap());
}
public void addBitmap(Bitmap bitmap){
layers.add(new Layer(bitmap, true));
invalidate();
}
@Override
protected void onDraw(Canvas canvas)
{
// TODO: Implement this method
super.onDraw(canvas);
Rect rect = new Rect(0, 0, getWidth(), getHeight());
// using get(0) to test
canvas.drawBitmap(layers.get(0).bitmap, rect, rect, null);
}
private class Layer{
public Bitmap bitmap;
public boolean show;
public Layer(Bitmap b, boolean s){
this.bitmap = b;
this.show = s;
}
}
}
ボタンの OnClick で
public void copy(View v){
((LayeredView)findViewById(R.id.lv)).buildDrawingCache();
((ImageView)findViewById(R.id.iv)).setImageBitmap(((LayeredView)findViewById(R.id.lv)).getDrawingCache(true));
}
手がかりを事前にありがとう。