我想在用户上传的图像上添加图层列表中的效果。在此代码中,我只能对可绘制图像进行效果,我想将其更改为用户上传图像 这是我生效的xml文件
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary"/>
<item>
<bitmap android:src="@drawable/icn" android:gravity="center" android:alpha="0.1"/>
</item>
<item android:top="300dp"
android:left="0dp"
>
<rotate
android:fromDegrees="-12">
<shape
android:shape="rectangle">
<solid
android:color="?android:colorBackground"/>
</shape>
</rotate>
</item>
这是我用于显示最终图像的xml文件
<ImageView
android:id="@+id/bgImage"
android:layout_width="match_parent"
android:gravity="center"
android:background="@drawable/background"
android:layout_height="290dp"/>
答案 0 :(得分:0)
您可以通过组合用户照片的位图和图层列表可绘制对象来实现。
以下是示例:
Bitmap effects = BitmapFactory.decodeResource(context.getResources(), R.drawable.effect_name);
Bitmap[] parts = new Bitmap[2];
parts[0] = userImage; //Bitmap
parts[1] = effects; //Bitmap
Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint();
for (int i = 0; i < parts.length; i++) {
canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i / 2), paint);
}
答案 1 :(得分:0)
首先创建一个这样的图层列表
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/background" />
<item
<shape>
<solid/>
<stroke android:width="1dip" android:color="#225786" />
<corners android:radius="10dip"/>
<padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
</shape>
</item>
</layer-list>
只需要背景:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background"
android:tileMode="repeat" >
</bitmap>
最后在 ImageView
上添加背景<ImageView
android:id="@+id/bgImage"
android:layout_width="match_parent"
android:gravity="center"
android:background="@drawable/background"
android:layout_height="290dp"/>
答案 2 :(得分:0)
您可以通过代码而不是xml来构建LayerDrawable
。
只需新建一个LayerDrawable
并调用其addLayer
方法即可添加Drawable
,并且您在xml中设置的所有属性也可以在代码中进行设置,例如{{1} }方法。
例如,定义可绘制对象:
setLayerInset
从代码获取可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="-12">
<shape
android:shape="rectangle">
<solid
android:color="?android:colorBackground"/>
</shape>
</rotate>
创建Drawable myDrawable;
Resources res = getResources();
try {
myDrawable = Drawable.createFromXml(res, res.getXml(R.xml.my_drawable));
} catch (Exception ex) {
Log.e("Error", "Exception loading drawable");
}
并在其中添加图层:
LayerDrawable