上にセレクターのリップル効果を追加するために、app:overlayImageドローアブルをオンSimpleDraweeViewに設定しました。アトリビュートを正しく設定すると、画像にリップル エフェクトが表示されますが、ホット スポットは常に中心から表示されます。これを解決するには、xml リソースに設定する必要がありますが、overlayImage ドローアブルをプログラムでリソースに設定する方法が見つかりませんでした。xml layoutSimpleDraweeViewoverlayImageoverlayImage drawableSimpleDraweeView
プログラムで準備する場合はGenericDraweeHierarchy、overlayImage ドローアブルを準備し、それにタッチ リスナーのホット スポットを設定できます。コードスニペット:
SimpleDraweeView image = (SimpleDraweeView) findViewById(R.id.image);
GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(mContext.getResources());
Drawable overlayImage = getDrawable(R.drawable.image_selector);
builder.setOverlay(overlayImage);
image.setHierarchy(builder.build());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.setOnTouchListener(new View.OnTouchListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onTouch(View v, MotionEvent event) {
if (overlayImage != null) {
overlayImage.setHotspot(event.getX(), event.getY());
}
return false;
}
});
}
しかしGenericDraweeHierarchy、私はすでにxmlにさまざまな属性を設定しており、それを変更してプログラムで設定したくないので、プログラムで作成したくありません。リソースoverlayImageに設定したドローアブルを取得する方法を提案してください。xml layout
私が試したがうまくいかなかった:
- 使用方法
getTopLevelDrawable()と取得方法。getDrawable()SimpleDraweeViewdrawablesetHotSpot - ControllerListener を設定し、hotSpot を取得した drawable に設定して、イメージをロードした後
getTopLevelDrawableのメソッドを使用しました。SimpleDraweeView
他の方法でホットスポットを追加できるかどうか教えてください。