android-将带有圆角的图像设置为ImageView

android-将带有圆角的图像设置为ImageView,第1张

概述我有一个带有联系人图像和姓名或电话号码的ListView.现在,我想在此联系人图像的角上画上圆角.publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){Viewrow=convertView;UserHolderholder=null;Log.d("main","pos:"+""+pos

我有一个带有联系人图像和姓名或电话号码的ListVIEw.现在,我想在此联系人图像的角上画上圆角.

public VIEw getVIEw(final int position, VIEw convertVIEw, VIEwGroup parent) {    VIEw row = convertVIEw;    UserHolder holder = null;    Log.d("main", "pos:" + "" + position);            if (row == null) {        LayoutInflater inflater = ((Activity) context).getLayoutInflater();        row = inflater.inflate(layoutResourceID, parent, false);        holder = new UserHolder();        holder.name = (TextVIEw) row.findVIEwByID(R.ID.name);        holder.Number = (TextVIEw) row.findVIEwByID(R.ID.number);        holder.img=(ImageVIEw) row.findVIEwByID(R.ID.image);        Typeface face=Typeface.createFromAsset(context.getAssets(),"helve.ttf");        holder.name.setTypeface(face);        //holder.Number.setTypeface(face);        //bit = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);            //        //holder.img.setimageBitmap(getRoundedCornerBitmap(bit, 40));        row.setTag(holder);    } else {        holder = (UserHolder) row.getTag();    }    User user = data.get(position);     holder.name.setText(user.getname());    holder.img.setimageBitmap(user.getbi());    //holder.img.setimageBitmap(roundCornerImage(BitmapFactory.decodeResource(user.getbi(), R.drawable.ic_launcher),60));    holder.Number.setText(user.getNumber());    // Give Different Back Ground To List VIEw---------------------------------------------    if ((position % 2) == 0) {        row.setBackgroundResource(R.drawable.List_dark);    } else {        row.setBackgroundResource(R.drawable.List_light);    }    Log.d("main", "pos:" + "" + position);    return row;}static class UserHolder {    TextVIEw name,Number;    ImageVIEw img;}

如何在此图像上添加圆角?我有点困惑,我必须做什么样的改变.

解决方法:

嗨,请使用此自定义imagevIEw

public class RoundedImageVIEw extends ImageVIEw {public RoundedImageVIEw(Context context) {    super(context);    // Todo auto-generated constructor stub}public RoundedImageVIEw(Context context, AttributeSet attrs) {    super(context, attrs);}@Suppresslint("Instantiatable")public RoundedImageVIEw(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);}@OverrIDeprotected voID onDraw(Canvas canvas) {    Drawable drawable = getDrawable();    if (drawable == null) {        return;    }    if (getWIDth() == 0 || getHeight() == 0) {        return;    }    Bitmap b = ((BitmapDrawable) drawable).getBitmap();    Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);    int w = getWIDth(), h = getHeight();    Bitmap roundBitmap = getCroppedBitmap(bitmap, w);    canvas.drawBitmap(roundBitmap, 0, 0, null);}public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {    Bitmap sbmp;    if (bmp.getWIDth() != radius || bmp.getHeight() != radius)        sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false);    else        sbmp = bmp;    Bitmap output = Bitmap.createBitmap(sbmp.getWIDth(), sbmp.getHeight(),            Config.ARGB_8888);    Canvas canvas = new Canvas(output);    final int color = 0xffa19774;    final Paint paint = new Paint();    final Rect rect = new Rect(0, 0, sbmp.getWIDth(), sbmp.getHeight());    paint.setAntiAlias(true);    paint.setFilterBitmap(true);    paint.setDither(true);    canvas.drawARGB(0, 0, 0, 0);    paint.setcolor(color.parsecolor("#BAB399"));    canvas.drawCircle(sbmp.getWIDth() / 2 + 0.7f,            sbmp.getHeight() / 2 + 0.7f, sbmp.getWIDth() / 2 + 0.1f, paint);    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));    canvas.drawBitmap(sbmp, rect, rect, paint);    return output;}

}

总结

以上是内存溢出为你收集整理的android-将带有圆角的图像设置为ImageView全部内容,希望文章能够帮你解决android-将带有圆角的图像设置为ImageView所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1095438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存