我对这方面的代码示例做了一些广泛的搜索,但找不到任何东西。
特别是,我正在寻找添加一个阴影的png绘图,我正在使用的ImageView。此png绘图是一个圆角矩形与透明的角落。
谁能提供一个代码示例,说明如何在代码或XML中为视图添加一个像样的投影?
发布于 2010-08-26 02:18:35
您可以使用Bitmap.extractAlpha和BlurMaskFilter的组合来手动为需要显示的任何图像创建投影,但只有当您的图像仅偶尔加载/显示时才有效,因为该过程的成本很高。
伪代码(甚至可以编译!):
BlurMaskFilter blurFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
/* Might need to convert shadowImage from 8-bit to ARGB here, can't remember. */
Canvas c = new Canvas(shadowImage);
c.drawBitmap(originalBitmap, offsetXY[0], offsetXY[1], null);然后将shadowImage放入您的ImageView中。如果这个图像从未更改过,但却显示了很多,那么您可以创建它并将其缓存在onCreate中,以绕过昂贵的图像处理。
即使这不能按原样工作,它也应该足以让你朝着正确的方向前进。
发布于 2011-12-06 01:23:46
对于投影,请使用以下代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#ffffff"
android:centerColor="#d3d7cf"
android:endColor="#2e3436"
android:angle="90" />
</shape>使用上面的可绘制作为视图的背景
<View
android:id="@+id/divider"
android:background="@drawable/black_white_gradient"
android:layout_width="match_parent"
android:layout_height="10sp"
android:layout_below="@+id/buildingsList"/>发布于 2014-05-06 14:18:42
这帮助我得到了影子的工作,所以我想分享工作代码:
private Bitmap createShadowBitmap(Bitmap originalBitmap) {
BlurMaskFilter blurFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);
int[] offsetXY = new int[2];
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
/* Need to convert shadowImage from 8-bit to ARGB here. */
Bitmap shadowImage32 = shadowImage.copy(Bitmap.Config.ARGB_8888, true);
Canvas c = new Canvas(shadowImage32);
c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);
return shadowImage32;
}https://stackoverflow.com/questions/3567312
复制相似问题