设置圆形图片
2016-05-20 16:31
267 查看
1.圆形图片布局
2.CircularImage类
3.MaskedImage类
4.适配器类
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.bwei.jishixiong.makingfriends4.Base.activity.CircularImage android:id="@+id/icon" android:layout_width="35dp" android:layout_height="35dp" android:layout_marginTop="5dp" android:scaleType="centerCrop" android:src="@drawable/ll_img2" /> </LinearLayout>
2.CircularImage类
package com.bwei.jishixiong.makingfriends4.Base.activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; public class CircularImage extends MaskedImage { public CircularImage(Context paramContext) { super(paramContext); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public Bitmap createMask() { int i = getWidth(); int j = getHeight(); Bitmap.Config localConfig = Bitmap.Config.ARGB_8888; Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig); Canvas localCanvas = new Canvas(localBitmap); Paint localPaint = new Paint(1); localPaint.setColor(-16777216); float f1 = getWidth(); float f2 = getHeight(); RectF localRectF = new RectF(0.0F, 0.0F, f1, f2); localCanvas.drawOval(localRectF, localPaint); return localBitmap; } }
3.MaskedImage类
package com.bwei.jishixiong.makingfriends4.Base.activity; //com.bwie.text.RoundCornerI import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Xfermode; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageView; public abstract class MaskedImage extends ImageView { private static final Xfermode MASK_XFERMODE; private Bitmap mask; private Paint paint; static { PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN; MASK_XFERMODE = new PorterDuffXfermode(localMode); } public MaskedImage(Context paramContext) { super(paramContext); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public abstract Bitmap createMask(); @SuppressLint("DrawAllocation") protected void onDraw(Canvas paramCanvas) { Drawable localDrawable = getDrawable(); if (localDrawable == null) return; try { if (this.paint == null) { Paint localPaint1 = new Paint(); this.paint = localPaint1; this.paint.setFilterBitmap(false); Paint localPaint2 = this.paint; Xfermode localXfermode1 = MASK_XFERMODE; @SuppressWarnings("unused") Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1); } float f1 = getWidth(); float f2 = getHeight(); int i = paramCanvas.saveLayer(0.0F, 0.0F, f1, f2, null, 31); int j = getWidth(); int k = getHeight(); localDrawable.setBounds(0, 0, j, k); localDrawable.draw(paramCanvas); if ((this.mask == null) || (this.mask.isRecycled())) { Bitmap localBitmap1 = createMask(); this.mask = localBitmap1; } Bitmap localBitmap2 = this.mask; Paint localPaint3 = this.paint; paramCanvas.drawBitmap(localBitmap2, 0.0F, 0.0F, localPaint3); paramCanvas.restoreToCount(i); return; } catch (Exception localException) { StringBuilder localStringBuilder = new StringBuilder() .append("Attempting to draw with recycled bitmap. View ID = "); System.out.println("localStringBuilder=="+localStringBuilder); } } }
4.适配器类
package com.bwei.jishixiong.makingfriends4.Base.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import com.bwei.jishixiong.makingfriends4.Base.bean.Reward; import com.bwei.jishixiong.makingfriends4.R; import java.util.ArrayList; import java.util.List; /** * Created by jishixiong on 2016/5/17. */ public class MyFindLivingGridViewAdapter extends BaseAdapter { List<Reward> nlist = new ArrayList<Reward>(); Context context; int count; public MyFindLivingGridViewAdapter(Context context) { super(); this.context=context; } public void addrest(List<Reward> nlist){ this.nlist.clear(); this.nlist.addAll(nlist); this.notifyDataSetChanged(); } @Override public int getCount() { return nlist.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { VoidHolder holder; if(convertView==null){ holder=new VoidHolder(); convertView=View.inflate(context, R.layout.find_listview_livingarea_gridview_item,null); holder.icon=(ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); }else{ holder = (VoidHolder) convertView.getTag(); } holder.icon.setImageResource(R.drawable.ll_img2); return convertView; } class VoidHolder{ ImageView icon; } }
相关文章推荐
- Ajax局部页面刷新和history
- ZooKeeper示例 分布式锁
- 科学摆放鼠标可以预防鼠标手
- 【MySql性能优化三】索引优化
- 自定义今天的520
- JSP页面固定页面为绝对路径
- MYSQL 分组合并函数
- Python 简单快速折线图,绘图、报表 教程
- iOS开发 微信支付
- jQuery的实例及必知重要的jQuery选择器详解
- Mock以及Mockito的使用
- hadoop mr sort排序 demo
- 转载:一个故事告诉你比特币的原理及运作机制
- JSON的哲学思维
- Linux下的CentOS、Ubuntu、Gentoo 比较
- qrencode 第三方库 的vs编译---------------------完全正确
- 多态与虚函数 4
- 【vmware】VMware ESXi 虚拟硬盘格式:厚置备延迟置零、厚置备置零、精简置备
- layer.js 贤心制作的弹出层插件-不仅仅是弹层
- iPad、iPhone、Android 横屏、竖屏(window.orientation实现)的知识点