我需要制作带圆角和内阴影的缩略图.通常我正在制作带有9个补丁的ImageView帧,这对我来说效果很好,但这次我需要的效果需要在图像顶部绘制内部阴影(而不仅仅是它周围).这导致我扩展ImageView类并覆盖onDraw()方法.
public class ThumbnailImageView extends ImageView {
Run Code Online (Sandbox Code Playgroud)
经过很多教程(感谢StackOverflow!),我最终得到了onDraw()方法的代码:
@Override
protected void onDraw(Canvas canvas) {
if (mBitmap == null) {
return;
}
int radius = 4;
int padding = 2;
int bleed = 2;
RectF frame = new RectF(padding, padding, getWidth() - padding, getHeight() - padding);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(0xFF000000);
canvas.drawRoundRect(frame, radius, radius, mPaint);
Shader bitmapShader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(0xFF000000);
mPaint.setMaskFilter(new BlurMaskFilter(bleed, Blur.INNER));
mPaint.setShader(bitmapShader);
canvas.drawRoundRect(frame, radius, radius, mPaint);
}
Run Code Online (Sandbox Code Playgroud)
我基本上做的是先绘制一个黑色的圆角矩形,然后绘制一个带有渐变边缘(带有BlurMaskFilter)的圆角位图.结果就是我想要的:
mBitmap值在ImageView构造函数中初始化,如下所示:
mDrawable = getDrawable(); …Run Code Online (Sandbox Code Playgroud) 我想做inner shadow一个textview,但我在网上找不到任何这样的例子.
在Android上有没有办法做到这一点?
我知道这些属性:
android:shadowColor
android:shadowRadius
android:shadowDx
android:shadowDy
Run Code Online (Sandbox Code Playgroud)
我错过了有用的东西吗?
我试图在点击时在图像按钮上添加某种阴影.有可能吗?
所以我有按钮,我希望它点击它时看起来会被推.所以我创建了这样的新xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@color/btn_pushed"
/>
<item
android:drawable="@drawable/btn" />
</selector>
Run Code Online (Sandbox Code Playgroud)
好吧它工作正常,但我有50个按钮,我必须为他们所有人制作新的图像.这是很多工作,是否可以在其上添加某种阴影?还是会让它看起来如此推动?