我有一个GridView来显示一些对象,并且在视觉上每个对象都有一个图像图标和一个文本标签.我还希望图像图标在单击时具有一些"推动和弹出"效果,也就是说,按下时,图像将向右下方移动一小段距离,并在释放后返回其原始位置.
对象(及其图像图标)来自某些动态源.我的直觉是为每个项创建一个StateListDrawable,它有两种状态:是否按下.对于GridView项目视图,我会使用一个Button,它可以容纳Drawable和一个标签,完全满足我的要求.
我定义了一个item类来包装原始对象:
public class GridItem<T> {
public static final int ICON_OFFSET = 4;
private StateListDrawable mIcon;
private String mLabel;
private T mObject;
public Drawable getIcon() {
return mIcon;
}
public void setIcon(Drawable d) {
if (null == d) {
mIcon = null;
}else if(d instanceof StateListDrawable) {
mIcon = (StateListDrawable) d;
} else {
InsetDrawable d1 = new InsetDrawable(d, 0, 0, ICON_OFFSET, ICON_OFFSET);
InsetDrawable d2 = new InsetDrawable(d, ICON_OFFSET, ICON_OFFSET, 0, 0);
mIcon = new StateListDrawable();
mIcon.addState(new int[] { …Run Code Online (Sandbox Code Playgroud) 以下代码是我到目前为止所得到的.但是,有两个问题:
我想要内部和外部发光效果,看起来类似于Photoshop的混合选项.但我只设法制作外部发光,如果我设置BlurMaskFilter.Blur.INNER或其他值,整个图像被阻挡,而不是只是边缘.
尽管我将" FF " 设置为alpha值,但发光颜色仍然很暗.
Bitmap alpha = origin.extractAlpha();
BlurMaskFilter blurMaskFilter = new BlurMaskFilter(5, BlurMaskFilter.Blur.OUTER);
Paint paint = new Paint();
paint.setMaskFilter(blurMaskFilter);
paint.setColor(0xffffffff);
Canvas canvas = new Canvas(origin);
canvas.drawBitmap(alpha, 0, 0, paint);
return origin;
Run Code Online (Sandbox Code Playgroud)