中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android下圖片變圓角的代碼封裝

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
main.xml
<?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;
 
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) {
        //創(chuàng)建一個和原始圖片一樣大小位圖
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Config.ARGB_8888);
        //創(chuàng)建帶有位圖bitmap的畫布
        Canvas canvas = new Canvas(output);
 
        final int color = 0xff424242;
        //創(chuàng)建畫筆
        final Paint paint = new Paint();
        //創(chuàng)建一個和原始圖片一樣大小的矩形
        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);
          //設(shè)置相交模式
        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();
         //創(chuàng)建一個和原始圖片一樣大小位圖
         Bitmap bitmap = Bitmap.createBitmap(width, height,
         drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
         : Bitmap.Config.RGB_565);//創(chuàng)建一個指定高、寬的可變的Bitmap圖像
        //創(chuàng)建帶有位圖bitmap的畫布
         Canvas canvas = new Canvas(bitmap);
         drawable.setBounds(0,0,width,height);
         drawable.draw(canvas);
         return bitmap;
         }
          
 
}
 
package com.lian.image;
import 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來導(dǎo)入資料文件
        LayoutInflater inflater;
        //用來接管要綁定的數(shù)據(jù)
         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;
        }
        //綁定的數(shù)據(jù)的長度,也就是ListView項的個數(shù)
        @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) {
            //創(chuàng)建一個ViewHolder來盛放控件
            ViewHolder vHolder;
            //經(jīng)由過程斷定convertView是否為空來取得ViewHolder對象
            //這個convertView就是ListView的一行
            if (convertView == null) {
                //若是為null則從布局文件中導(dǎo)入
                convertView=inflater.inflate(resID, null);
                vHolder=new ViewHolder();
                vHolder.image = (SetImage)convertView.findViewById(R.id.show);                                              
                //setTag辦法用來設(shè)置與視圖接洽關(guān)系的標(biāo)簽,我的懂得就是把和它相干的ViewHolder存儲起來,到用的時候再拿出來
                convertView.setTag(vHolder);
            }
            else{
                //若是不為null就直接經(jīng)由過程getTag取出來
                vHolder = (ViewHolder)convertView.getTag();
            }
            //然后給ViewHolder對象的每一項賦值  s
                Drawable drawable1 = getResources().getDrawable(R.drawable.benchi1);
                vHolder.image.setImageBitmap(drawable1, 20);          
            return convertView;
        }
   }
} 

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:java合并文本文件并刪除文件中重復(fù)行

下一篇:python中map的用法