Android 绘制圆形图片

来源:互联网 发布:开淘宝店要会什么软件 编辑:程序博客网 时间:2024/05/20 11:51

Android 绘制圆形图片

MainActivity 

package com.example.roundbitmap_demo;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView mImg;
private String uriImg="http://p4.so.qhmsg.com/sdr/534_768_/t01b32d0278850a58ae.jpg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
threadTime();
}
private void initView() {
mImg=(ImageView) findViewById(R.id.mImg);
}
private void threadTime(){
new Thread(new Runnable() {

@Override
public void run() {
try {
URL url=new URL(uriImg);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
final Bitmap bitmap = BitmapFactory.decodeStream(is);
runOnUiThread(new Runnable() {

@Override
public void run() {
//设置给图片
mImg.setImageBitmap(getBitmap(bitmap));
}
});
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
private static Bitmap getBitmap(Bitmap bitmap){
//依据原有的图片丶创建一个新的图片   格式是:Config.ARGB_4444
Bitmap bt=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_4444);
//创建一个画布
Canvas canvas=new Canvas(bt);
//创建一个画笔
Paint paint=new Paint(Paint.ANTI_ALIAS_FLAG);
//画笔的颜色
paint.setColor(Color.WHITE);
//画布的格式默认为  零
canvas.drawARGB(0, 0, 0, 0);
//求得圆的半径
float radius = Math.min(bitmap.getWidth()/2, bitmap.getHeight()/2);
canvas.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, radius, paint);
//重置画笔
paint.reset();
//调用截图图层的方法
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
//画图片
canvas.drawBitmap(bitmap, 0, 0, paint);
return bt;
}

}

//以下是xml布局:

activity

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.roundbitmap_demo.MainActivity" >
    <ImageView
        android:id="@+id/mImg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY" />
</RelativeLayout>

原创粉丝点击