用ListView来展示自定义圆形控件(加载的是本地图片)
来源:互联网 发布:电商美工培训 编辑:程序博客网 时间:2024/06/05 11:10
1、主布局 就是ListView
<ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"></ListView>
2、给每一个ListView'的Item项写布局 文件名叫 item
<com.baway.circle.RoundImageView android:id="@+id/rv" android:layout_width="100dp" android:layout_height="100dp" />
引用了画图片的那个类
3、定义画图的类
package com.baway.circle;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;/** * Created by 王秋旺 on 2016/6/7. */public class RoundImageView extends ImageView { public RoundImageView(Context context) { super(context); } public RoundImageView(Context context, AttributeSet attrs) { super(context, attrs); } public RoundImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Drawable drawable = getDrawable(); if (drawable == null) { return; } if (getWidth() == 0 || getHeight() == 0) { return; } Bitmap b = ((BitmapDrawable)drawable).getBitmap(); if(null == b) { return; } 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(), Bitmap.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(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(sbmp, rect, rect, paint); return output; }}
4、MainActivity中的内容
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv= (ListView) findViewById(R.id.lv); List<Integer> img_list=new ArrayList<>(); img_list.add(R.mipmap.aaa); img_list.add(R.mipmap.bbb); img_list.add(R.mipmap.ccc); img_list.add(R.mipmap.ddd); lv.setAdapter(new MyAdapter(MainActivity.this,img_list)); }}
5、适配器里面的内容
package com.baway.circle.adapter;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.Drawable;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import com.baway.circle.R;import com.baway.circle.RoundImageView;import java.util.List;import static android.view.View.*;/** * Created by 王秋旺 on 2016/6/7. */public class MyAdapter extends BaseAdapter{ private Context context; private List<Integer> img_list; public MyAdapter(Context context,List<Integer> img_list){ this.context=context; this.img_list=img_list; } @Override public int getCount() { return img_list.size(); } @Override public long getItemId(int position) { return position; } @Override public Object getItem(int position) { return img_list.get(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView==null){ convertView=View.inflate(context,R.layout.item,null); } RoundImageView rv= (RoundImageView) convertView.findViewById(R.id.rv); Bitmap bm=BitmapFactory.decodeResource(context.getResources(),img_list.get(position)); Bitmap bitmap = RoundImageView.getCroppedBitmap(bm, 400); rv.setImageBitmap(bitmap); return convertView; }}
0 0
- 用ListView来展示自定义圆形控件(加载的是本地图片)
- 自定义圆形控件继承ImageView加载本地图片
- Android 网络请求的图片用自定义圆形View展示
- 使用glide加载的图片在展示的时候是圆形
- 自定义圆形图片控件
- 自定义圆形图片控件
- 自定义控件---带边框的圆形图片
- 裁剪圆形图片的自定义控件
- 自定义ImageView控件 (圆形图片)
- 用自定义的RoundImageView来实现圆形图片(可加边框)
- 自定义ImageView加载圆形图片
- ListView的上拉加载以及圆形图片的实现
- Android圆形图片--自定义控件
- Android圆形图片自定义控件
- android-自定义圆形图片控件
- Android圆形图片--自定义控件
- Android圆形图片--自定义控件
- android 自定义控件 圆形图片
- 在 Linux 上安装 SQLite
- 回溯算法:八皇后问题
- Java Map集合遍历
- Shell脚本: Mysql自动创建库和用户_20160607_七侠镇莫尛貝
- Jmeter关联,正则表达式提取器使用
- 用ListView来展示自定义圆形控件(加载的是本地图片)
- PPT用宏插入不同背景图片
- 自动化发布-GitLab WEB Hooks 配置
- iOS10个实用小技巧(总有你不知道的和你会用到的)
- JAVA中的文件删除
- Android中级教程之----Log图文详解
- jquery为多个元素添加事件
- Html5 Checkbox多种状态切换
- poj 3253 Fence Repair