2012-02-20 5 views
0

レイヤードイメージの個々のコンポーネントに色をフィルタリングする必要があるため、コードで作成しているLayerDrawableがあります。階層化された画像の上に、私は互いに上にImageViewsを持っていなければならず、1つは不可視に設定されています。表示されているImageViewをクリックすると、それは90度に回転して非表示になり、不可視のImageViewが表示され、-90から0に回転します。LayerDrawableの上に配置したときにアニメーションが不安定になる、または動作しないように見える

8つのPngで構成されたLayerDrawableをアクティビティアニメーションはこれまでと同じように機能しませんでした。それは非常に不安定になったか、まったく回転していないように見えました。

誰もがこれに関するアイディアを持っていますか?

答えて

0

私はこれが最善の方法であるとは確信していませんが、私がやったのは画像を自分で合成することでした。 8つのイメージすべてを1つのビットマップに描画し、その単一のビットマップをImageViewに適用することで、私が望むようにアニメーションを実行できるようになりました。コンポジット画像の一部を更新したいときは、構成ビットマップに変更を加えてそれを自分の画像ビューに適用する必要があります。

final BitmapFactory.Options opt = new BitmapFactory.Options(); 
    opt.inPreferredConfig = Config.ARGB_8888; 

    Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), this.houseMatrix[0][0], opt); 

    final int width = bitmap.getWidth(); 
    final int height = bitmap.getHeight(); 

    final Bitmap result = Bitmap.createBitmap(width, height, Config.ARGB_8888); 

    final Paint paint = new Paint(); 
    paint.setColorFilter(new PorterDuffColorFilter(this.houseMatrix[0][1], PorterDuff.Mode.MULTIPLY)); 
    final Canvas canvas = new Canvas(result); 
    canvas.drawBitmap(bitmap, 0, 0, paint); 
    bitmap.recycle(); 

    for (int i = 1; i < 8; i++) { 
     paint.setColorFilter(new PorterDuffColorFilter(this.houseMatrix[i][1], PorterDuff.Mode.MULTIPLY)); 
     bitmap = BitmapFactory.decodeResource(this.getResources(), this.houseMatrix[i][0], opt); 
     canvas.drawBitmap(bitmap, 0, 0, paint); 
     bitmap.recycle(); 
    } 

    this.house.setImageBitmap(result); 
関連する問題