我已在app:overlayImage
的{{1}}设置了SimpleDraweeView
drawable,用于在xml layout
之上添加选择器涟漪效果。正确设置SimpleDraweeView
属性会在图像上显示涟漪效应,但热点始终从中心显示。为了解决这个问题,我需要在xml资源中设置的overlayImage
,但我没有找到任何方法可以通过编程方式将overlayImage drawable设置为overlayImage drawable
资源。
如果我以编程方式准备SimpleDraweeView
,那么我可以准备overlayImage drawable并可以设置触摸侦听器热点。代码段:
GenericDraweeHierarchy
但是我不想以编程方式创建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;
}
});
}
,因为我已经在xml中设置了不同的属性,并且不想更改它并以编程方式设置。请建议我在GenericDraweeHierarchy
资源中设置overlayImage
drawable的任何方法。
我尝试了但没有奏效:
xml layout
和getTopLevelDrawable()
方法
getDrawable()
获取SimpleDraweeView
和drawable
。setHotSpot
使用的getTopLevelDrawable
方法
通过将ControllerListener设置为它并将hotSpot设置为来加载
获得了drawable。如果我能以任何其他方式添加热点,请告诉我。
答案 0 :(得分:3)
我努力在Fresco SimpleDraweeView
上添加纹波覆盖。
我没有找到使涟漪效果在SimpleDraweeView
上正常工作的确切解决方案,但我提出了两种方法来增加工作涟漪效应:
在SimpleDraweeView
内包裹FrameLayout
并设置
android:foreground
属性FrameLayout
。加
android:clickable
属性FrameLayout
或添加点击监听器
它。代码段:
<FrameLayout
android:id="@+id/image_container"
android:layout_width="wrap_content"
android:layout_height"wrap_content"
android:foreground="@drawable/ripple_selector"
android:clickable="true">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/image"
android:layout_width="20dp"
android:layout_height="20dp"/>
</FrameLayout>
为FrameLayout
容器设置clicklistener:
findViewById(R.id.id/image_container).setOnClickListener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
// Do your stuff
}
})
SimpleDraweeView
并在其上绘制涟漪drawable
。
以下解决方案由github上的“boxcounter”提供。校验
关注显示涟漪的自定义SimpleDraweeView
的{{3}}
效果位于SimpleDraweeView
。我在link报告了同样的问题。希望很快得到答复。
Fresco#912问题更新:
几天前我向Fresco提交了修复此问题的提交。现在在com.facebook.fresco:fresco:0.11.0
中,我们只需将ripple drawable设置为app:overlayImage
属性的值,它就能完美运行。