13

android で、その境界内に表示されている下のすべてにカラーフィルターを適用する方法でビューを設定することは可能ですか? この例のように:

ビューのフィルタリング

その下のすべての色を反転する単純な長方形のビュー。もちろん、ユーザーがリストをスクロールすると、反転したボックスにも反映されます。カラーフィルター、PorterDuff モードなどを使用して簡単に行う方法はありますか?

4

3 に答える 3

1

これが私がすることです:

ビューの階層:

  • RelativeLayout (または FrameLayout)
    • リストビュー
      • CustomInverterView

InverterView は、onTouchListener の親ビュー (RelativeLayout) の OnTouch によって配置されます。

if (event.getAction() == MotionEvent.ACTION_MOVE)
           // Set Coordinates for the custom View.
           // Copy the bitmapCache of the ListView (jsut the portion you need
           // and send it to the customView.
           // Apply the filters you want.
           // Invalidate!

このメソッドを使用して拡大鏡を実装しました。それは魅力のように機能します。後でもう少しコードを投稿できるかもしれませんが、現時点では少し忙しいです。

于 2013-09-03T07:20:35.783 に答える
1

ここで私が正しいかどうかわからないので、簡単にコメントできればそうします。バイヤーは注意してください、ここに行きます:

View.OnDragEve[]ntListener を利用することで、この効果を実現できるのではないかと思います。これがドキュメントです。

Android で使用されているドラッグ アンド ドロップ トリガー モデル (つまり、アプリと OS 間の通信手段) を微調整する必要があると思います。それをどのように微調整するかは、あるビューを別のビューの境界に強制するアプリ内のメカニズムに完全に依存します。それがわかったら、 ColorMatrixPorterDuffColorFilter 、およびその他のいくつかを使用して、高度なカラー マジックを実行できます 。

これは、代替のXfermodeよりもはるかに簡単に思えます。幸運を!

于 2013-08-29T03:52:58.747 に答える