アプリのホーム画面のバックで画面外から動物が出てきたり、また画面外へ消えて行ったりという感じのアニメーションを作っています。
Surfaceviewを使って、5種類の画像を代わる代わる位置を変えて表示させているのですが一度、addContentViewでオーバーレイしたSurfaceViewを消してから、また次のSurfaceViewをオーバーレイするということは可能でしょうか?
public class Main extends ActionBarActivity { SurfaceTest surface; int key = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.bt).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); surface = new SurfaceTest(Main.this, key); addContentView( surface , params); key++; } } }); findViewById(R.id.remove).setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ final LinearLayout ll = (LinearLayout) findViewById(R.id.ll); ll.removeAllViews(); setContentView(R.layout.main); } }); } }
class SurfaceTest extends SurfaceView implements SurfaceHolder.Callback { int key = 0; int id = 1; float left = 0; float top = 0; public SurfaceTest(Context context, int key) { super(context); getHolder().addCallback(this); this.key = key; getHolder().setFormat(PixelFormat.TRANSLUCENT); setZOrderOnTop(true); switch (key) { (略) //id.left,top 値の設定 } Log.i("left,top", String.valueOf(left) + " , " + String.valueOf(top)); } @Override public void surfaceCreated(SurfaceHolder holder) { Bitmap bmp = BitmapFactory.decodeResource(this.getContext() .getResources(), id); Paint paint = new Paint(); Canvas canvas = holder.lockCanvas(); canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); canvas.drawBitmap(bmp, left, top, paint); holder.unlockCanvasAndPost(canvas); } }
http://qiita.com/circularuins/items/a61c5e7149f355a54a8b
など参考に上記のようなコードを書いては見たものの、前に描画したSurfaceViewが残ります。
removeAllViewをしてMainアクティビティのlayoutからsetContentView→SurfaceViewオーバーレイで一応思ったようにはなるのですが、この動物を4-5くらい重ねたいと思っているので、全てのSurfaceViewのオーバーレイ時にそれをするのもちょっとおかしいなと・・・。
そもそもSurfaceViewでなくてもいいんでしょうか?
ご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/24 20:57