Android 图片视图底部阴影
Android image view bottom shadow
如何在 android 中制作这样的 recyclerview 项目(阴影)?
https://dribbble.com/shots/4020189-Scroll-and-sidebar-interaction
要添加阴影,您可以使用这样的代码:
Paint forShadow = new Paint();
// radius=10, y-offset=2, color=black
forShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas) method
canvas.drawBitmap(bitmap, 0.0f, 0.0f, forShadow);
同样Honeycomb及以上版本需要调用setLayerType(LAYER_TYPE_SOFTWARE, forShadow)
,否则看不到自己的影子!
不幸的是,SetShadowLayer
不适用于硬件加速,因此它大大降低了性能。
完整代码可能如下所示:
public class ShadowImage extends Drawable {
Bitmap bm;
@Override
public void draw(Canvas canvas) {
Paint forShadow = new Paint();
//trying for rectangle
Rect rect = new Rect(0,0,bm.getWidth(), bm.getHeight());
forShadow.setAntiAlias(true);
forShadow.setShadowLayer(5.5f, 4.0f, 4.0f, Color.BLACK);
canvas.drawRect(rect, forShadow);
canvas.drawBitmap(bm, 0.0f, 0.0f, null);
}
public ShadowImage(Bitmap bitmap) {
super();
this.bm = bitmap;
} ... }
如何在 android 中制作这样的 recyclerview 项目(阴影)?
https://dribbble.com/shots/4020189-Scroll-and-sidebar-interaction
要添加阴影,您可以使用这样的代码:
Paint forShadow = new Paint();
// radius=10, y-offset=2, color=black
forShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas) method
canvas.drawBitmap(bitmap, 0.0f, 0.0f, forShadow);
同样Honeycomb及以上版本需要调用setLayerType(LAYER_TYPE_SOFTWARE, forShadow)
,否则看不到自己的影子!
SetShadowLayer
不适用于硬件加速,因此它大大降低了性能。
完整代码可能如下所示:
public class ShadowImage extends Drawable {
Bitmap bm;
@Override
public void draw(Canvas canvas) {
Paint forShadow = new Paint();
//trying for rectangle
Rect rect = new Rect(0,0,bm.getWidth(), bm.getHeight());
forShadow.setAntiAlias(true);
forShadow.setShadowLayer(5.5f, 4.0f, 4.0f, Color.BLACK);
canvas.drawRect(rect, forShadow);
canvas.drawBitmap(bm, 0.0f, 0.0f, null);
}
public ShadowImage(Bitmap bitmap) {
super();
this.bm = bitmap;
} ... }