android – 像Google一样可选的圆形图像

如何在用于个人资料照片的当前Google应用程序中创建可选择的圆形 ImageView?

这就是我所说的:

取消选择上面的图像,然后选择下面的图像.

我尝试复制配置文件图片1到1.

到目前为止我的工作:

loadedImage是显示的位图

mImageView.setBackground(createStateListDrawable());
mImageView.setImageBitmap(createRoundImage(loadedImage));

使用的方法:

private Bitmap createRoundImage(Bitmap loadedImage) {
    Bitmap circleBitmap = Bitmap.createBitmap(loadedImage.getWidth(),loadedImage.getHeight(),Bitmap.Config.ARGB_8888);

    BitmapShader shader = new BitmapShader(loadedImage,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setShader(shader);

    Canvas c = new Canvas(circleBitmap);
    c.drawCircle(loadedImage.getWidth() / 2,loadedImage.getHeight() / 2,loadedImage.getWidth() / 2,paint);

    return circleBitmap;
}

private StateListDrawable createStateListDrawable() {
    StateListDrawable stateListDrawable = new StateListDrawable();

    OvalShape ovalShape = new OvalShape();
    ShapeDrawable shapeDrawable = new ShapeDrawable(ovalShape);
    stateListDrawable.addState(new int[] { android.R.attr.state_pressed },shapeDrawable);
    stateListDrawable.addState(StateSet.WILD_CARD,shapeDrawable);

    return stateListDrawable;
}

ImageView的大小是imageSizePx,图像的大小是imageSizePx – 3.因此,这意味着背景应该与图像重叠.哪个不起作用.

解决方法

非常简单的解决方案,感谢@CommonsWare的提示.

位图大小:imageSizePx – 3DP
ImageView的大小:imageSizePx

mImageView.setBackground(createStateListDrawable(imageSizePx));
mImageView.setImageBitmap(loadedImage);

private StateListDrawable createStateListDrawable(int size) {
    StateListDrawable stateListDrawable = new StateListDrawable();

    OvalShape ovalShape = new OvalShape();
    ovalShape.resize(size,size);
    ShapeDrawable shapeDrawable = new ShapeDrawable(ovalShape);
    shapeDrawable.getPaint().setColor(getResources().getColor(R.color.somecolor));

    stateListDrawable.addState(new int[]{android.R.attr.state_pressed},shapeDrawable);
    stateListDrawable.addState(new int[]{android.R.attr.state_focused},shapeDrawable);
    stateListDrawable.addState(new int[]{},null);

    return stateListDrawable;
}

以上是来客网为你收集整理的android – 像Google一样可选的圆形图像全部内容,希望文章能够帮你解决android – 像Google一样可选的圆形图像所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。