android - Android图像视图底部阴影
解决方案
要添加阴影,您可以使用如下代码:
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;
} ... }
推荐阅读
- html - 如何处理 Html5 的展开/折叠事件元素?
- mysql - MYSQL 的序列策略不起作用(EclipseLink、Glassfish)
- delphi - 安装前更改服务名称
- python-3.x - 嵌套字段中的 Elasticsearch 排序值
- python - 在循环中创建一个 numpy 数组
- java - 我如何能够仅通过引用访问枚举值,其中引用本身为空?
- java - 如何在我的方法中将 MyClass.class 作为参数传递?
- hyperledger-fabric - 如何修复无法运行对等体,因为无法初始化加密,文件夹不存在
- haskell - 创建一个没有前一个指针的新表达式
- node.js - 如何完全擦除 Windows 中的控制台输出?