ice*_*eam 5 xml layout android shape
如果我通过代码绘制圆形矩形,我可以使用setShadowLayer来获取形状的阴影.在XML中定义形状时是否存在等价物?
以下示例将圆形rect背景绘制为形状.我需要添加什么才能将阴影添加到形状中?甚至可以使用XML吗?
shape_test.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#8067BF6A"/>
<stroke android:width="3dp" android:color="#80000000" />
<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
<corners android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:background="#ffdddddd"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:background="@drawable/shape_test"
android:padding="5dp"
android:textStyle="bold"
android:textSize="28sp"
android:text="Hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
使用XML,我知道没有真正的方法可以做到这一点.我已经看到了一些建议,在项目后面制作第二个相同形状的盒子,只是填充黑色,但我觉得这不是一个好的解决方案.我一直试图找到一种方法来做这件事.
如果它有帮助,这里是我发布的类似问题的链接,以及一些代码.我让它适用于某些图像,但它有时仍然无法找到alpha通道.基本上,我已经覆盖了ImageView并将其放在onDraw()方法中:
@Override
protected void onDraw(Canvas canvas)
{
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.omen);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShadowLayer(5.5f, 6.0f, 6.0f, Color.BLACK);
canvas.drawColor(Color.GRAY);
canvas.drawRect(50, 50, 50 + bmp.getWidth(), 50 + bmp.getHeight(), paint);
canvas.drawBitmap(bmp, 50, 50, null);
}
Run Code Online (Sandbox Code Playgroud)
那只是测试,所以很明显很多参数都必须更通用.我最近没有太多时间研究它,但也许这会帮助你找到答案.
| 归档时间: |
|
| 查看次数: |
5824 次 |
| 最近记录: |