将ImageView加载到另一个ImageView之上

时间:2014-07-10 00:27:57

标签: java android imageview picasso

我有92张图片,我希望有一个指示符,例如复选标记,表示图像已解锁。我在.png文件中有复选标记,我最初尝试的是在photoshop中将图像顶部的复选标记放在每个图像的单独副本上。但是我知道必须有一种更简单的方法,只需在已经存在的图像上添加复选标记文件,而不是在图像副本上面加上复选标记。

我有一个GridViewAdapter类负责将原始图像加载到gridview中:

@Override public View getView(int position, View convertView, ViewGroup parent) {
    SquaredImageView view = (SquaredImageView) convertView;
    if (view == null) {
        view = new SquaredImageView(context);
        view.setScaleType(CENTER_CROP);
    }

    // Get the image URL for the current position.
    Integer url = getItem(position);

    // Trigger the download of the URL asynchronously into the image view.
    Picasso.with(context) //
            .load(url) //
             //
            .error(R.drawable.error) //
            .fit() //
            .into(view);



    return view;
}

其中url是一个列表,其中包含对要加载的每个图像的引用

提到的SquaredImageView类是:

/** An image view which always remains square with respect to its width. */
final class SquaredImageView extends ImageView {
    public SquaredImageView(Context context) {
        super(context);
    }

    public SquaredImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());
    }
} 

感谢任何建议

1 个答案:

答案 0 :(得分:0)

我可以想到几种方法:

  • 选项1:

    SquaredImageView包裹在Framelayout中,并在其中放置另一个SqauredImageView。在第二个图像视图上设置复选标记。

  • 选项2:

    SquaredImageView换成FrameLayout并在foreground的{​​{1}}属性上设置复选标记图片(使用FrameLayout)。

  • 选项3:

    创建支持覆盖图片的setForeground(类似于ForegroundSquaredImageView的{​​{1}}属性)。

    可以在此处找到类似这样的代码:https://gist.github.com/JakeWharton/0a251d67649305d84e8a。您需要将其更改为从foreground扩展。