欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android下图片变圆角的代码封装,,main.xml```j

来源: javaer 分享于  点击 36301 次 点评:42

Android下图片变圆角的代码封装,,main.xml```j


main.xml```java<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

<!-- <com.lian.image.SetImage    android:id="@+id/show"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /> --><ListView    android:id="@+id/listview"    android:layout_width="wrap_content"    android:layout_height="fill_parent"    android:layout_marginLeft="50dp"    android:cacheColorHint="#000"    android:divider="#000"    android:dividerHeight="5px"    android:fadingEdge="none"    android:scrollbars="none"    android:scrollingCache="true" />

</LinearLayout>

package com.lian.image;java

import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PixelFormat;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;

public class SetImage extends ImageView {

public SetImage(Context context) {    super(context);    // TODO Auto-generated constructor stub}public SetImage(Context context, AttributeSet attrs) {    super(context, attrs, 0);}protected void onDraw(Canvas canvas) {    // TODO Auto-generated method stub        Path clipPath = new Path();          int w = this.getWidth();          int h = this.getHeight();          clipPath.addRoundRect(new RectF(0, 0, w, h), 10.0f, 10.0f, Path.Direction.CW);          canvas.clipPath(clipPath);          super.onDraw(canvas);}public void setImageDrawable(Drawable drawable, int pixels) {    // TODO Auto-generated method stub     Bitmap bitmap =toRoundCorner(drawableToBitmap(drawable), pixels);       Drawable drawable1 = new BitmapDrawable(bitmap);       super.setImageDrawable(drawable1);      }public void setImageBitmap(Drawable drawable, int pixels) {         // TODO Auto-generated method stub    super.setImageBitmap(toRoundCorner(drawableToBitmap(drawable), pixels));}public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {    //创建一个和原始图片一样大小位图    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),            bitmap.getHeight(), Config.ARGB_8888);    //创建带有位图bitmap的画布    Canvas canvas = new Canvas(output);    final int color = 0xff424242;    //创建画笔    final Paint paint = new Paint();    //创建一个和原始图片一样大小的矩形    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());    final RectF rectF = new RectF(rect);    final float roundPx = pixels;     // 去锯齿    paint.setAntiAlias(true);    canvas.drawARGB(0, 0, 0, 0);    paint.setColor(color);     //画一个和原始图片一样大小的圆角矩形    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);      //设置相交模式    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));    //把图片画到矩形去    canvas.drawBitmap(bitmap, rect, rect, paint);    return output;}public static Bitmap drawableToBitmap(Drawable drawable){    int width = drawable.getIntrinsicWidth();     int height = drawable.getIntrinsicHeight();     //创建一个和原始图片一样大小位图     Bitmap bitmap = Bitmap.createBitmap(width, height,     drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888     : Bitmap.Config.RGB_565);//创建一个指定高、宽的可变的Bitmap图像    //创建带有位图bitmap的画布     Canvas canvas = new Canvas(bitmap);     drawable.setBounds(0,0,width,height);     drawable.draw(canvas);     return bitmap;     }

}

package com.lian.image;javaimport java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.Context;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;public class SetDrawable extends Activity { private ArrayList<HashMap<String,Object>> data; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); / Drawable drawable1 = getResources().getDrawable(R.drawable.benchi1); SetImage imageView1 = (SetImage) findViewById(R.id.show); imageView1.setImageDrawable(drawable1, 20); imageView1.setImageBitmap(drawable1, 20);/ data = getData();
ListView list = (ListView)findViewById(R.id.listview); MyAdapter adapter = new MyAdapter(SetDrawable.this, data, R.layout.list); list.setAdapter(adapter); } private ArrayList<HashMap<String,Object>> getData(){
ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>(); HashMap<String,Object> map = new HashMap<String,Object>(); for(int i = 0 ; i<100 ; i++){ map.put("show",R.drawable.benchi1);
list.add(map);
}
return list; } class ViewHolder{ public SetImage image;
}class MyAdapter extends BaseAdapter{ //定义一个LayoutInflater来导入资料文件 LayoutInflater inflater; //用来接管要绑定的数据 ArrayList<HashMap<String,Object>> arrayList; //要绑定的资料文件id int resID;
public MyAdapter(Context context, ArrayList<HashMap<String, Object>> arrayList, int resID) { this.inflater = LayoutInflater.from(context); this.arrayList = arrayList; this.resID = resID; } //绑定的数据的长度,也就是ListView项的个数 @Override public int getCount() { // TODO Auto-generated method stub return this.arrayList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { //创建一个ViewHolder来盛放控件 ViewHolder vHolder; //经由过程断定convertView是否为空来取得ViewHolder对象 //这个convertView就是ListView的一行 if (convertView == null) { //若是为null则从布局文件中导入 convertView=inflater.inflate(resID, null); vHolder=new ViewHolder(); vHolder.image = (SetImage)convertView.findViewById(R.id.show);
//setTag办法用来设置与视图接洽关系的标签,我的懂得就是把和它相干的ViewHolder存储起来,到用的时候再拿出来 convertView.setTag(vHolder); } else{ //若是不为null就直接经由过程getTag取出来 vHolder = (ViewHolder)convertView.getTag(); } //然后给ViewHolder对象的每一项赋值 s Drawable drawable1 = getResources().getDrawable(R.drawable.benchi1); vHolder.image.setImageBitmap(drawable1, 20);
return convertView; } }}

```

相关栏目:

用户点评