2016-09-28 18 views
0

私はプリ画像を持っています。つまり、ベースイメージの1つのベースイメージと複数の透明レイヤーがあります。 私は、ベースイメージの上にレイヤーイメージを追加してレイヤーを選択し、そのレイヤーに異なる色を適用しようとしています。ブレンドレイヤーイメージでのタッチイベントAndroid

私はそれを達成するために次の方法を試しましたが、終了できませんでした。

  1. ImageView - イメージビューと透明レイヤーイメージがオーバーラップしています。それはブレンドされたイメージを示しますが、タッチイベントは最終的にオーバーラップしたイメージIDを常に検出します。塗りつぶし親でイメージを描画するので、すべてのレイヤーイメージも同じです。

  2. レイヤー描画可能 - 描画可能なイメージのみを許可できますが、ギャラリーやその他のリソースからプレカットをロードすることができます。タッチでレイヤーを選択することはできません。

  3. GPUImageライブラリ - 画像にフルイメージビューが表示されません。

よろしく Sathiya

答えて

0

onDraw()関数は、あなたが描きたいものを描く行い、Viewクラスを拡張します。 onTouchEvent()関数はタッチイベントを実装します。あなたがしようとしていることは、既に作成されたビューには含まれていませんが、ビューを作成するのはかなり簡単です。適切な順序でキャンバスにビットマップを描画し、適切なペイントを適切な透明度で描画します。

@Override 
     protected void onDraw(Canvas canvas) { 
int numLayers = mLayers.size(); 
     for (int i = 0; i < numLayers; i++) { 
      canvas.save(); 
      canvas.concat(matrix); 
      //or 
      canvas.translate(rect.left,rect.top); 
      Bitmap b = mLayers.get(i); 
      canvas.drawBitmap(b, paint); 
      canvas.restore(); 
     }} 

あなたはこのにだけ、必要に応じてどんな場所や順序でキャンバスにビットマップを追加束をやってしまいます。

+0

いくつかのサンプルコードを共有できますか? LayeredImageViewを試してみましたが、動的画像ビューIDを取得できませんでした。 – user2508399

+0

これは、単に複数回適用されたビットマップを描画するコードです。あなたはそれをループするか、またはそれらのセット番号を適用することができます。そのことをキャンバスに適用するだけです。 canvas.drawBitmap(ビットマップ、ペイント)を実行し、関連する各場所の関連するビットマップに対して行います。 – Tatarize

+0

@Override protected void onDraw(キャンバスキャンバス){ super.onDraw(canvas); 行列マトリックス= getImageMatrix(); if(matrix!= null){ int numLayers = mLayers.size(); (int i = 0; i user2508399

関連する問題