app中头像,圆形图片

今天写项目的时候,遇到了这个东西,写完了,就在记录一份,其实不难。

下面是真相:

app中头像,圆形图片_第1张图片


其实关键代码就一个方法:

 /**
     * 圆形的图片
     */
    private void roundPic() {
    	//这一张图是要进行圆形的图片
    	bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.dsafsdafas);
    	//这一张是一张圆形的透明图片,也是一张魔板吧
        Bitmap backBp = BitmapFactory.decodeResource(getResources(),R.drawable.userbg);
        //获取模板图片的宽。高。规格、布局,画布
        alterBitmap = Bitmap.createBitmap(backBp.getWidth(),backBp.getHeight(), backBp.getConfig());
        //画一张这样的画布
        Canvas canvas = new Canvas(alterBitmap);
        //画笔
        Paint paint = new Paint();
        //抗锯齿
        paint.setAntiAlias(true);
        //画一张bitmap,新的矩阵。规格
        canvas.drawBitmap(backBp, new Matrix(), paint);
        //这一步是关键,设置两张图片相交时的处理
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        bitmap = Bitmap.createScaledBitmap(bitmap, backBp.getWidth(),backBp.getHeight(), true);
        //产生新图,画好
        canvas.drawBitmap(bitmap, new Matrix(), paint);
        //设置图片
         im.setImageBitmap(alterBitmap);
    }

当然,我这里只是做了一个小的Dome,真正的项目中应该是在自己相册或者调用系统的相机照相,得到的图片,然后上传到网上,显示到界面上,这样一个过程,就要去封装了。不过上边的方法我做了大量的注释,核心的方法就是这里。下面我把整个代码贴一下:

package com.example.sdfasdfadfada;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private ImageView im;
	private Bitmap alterBitmap,bitmap;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		im=(ImageView) findViewById(R.id.id_im);
		
		roundPic();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	  /**
     * 圆形的图片
     */
    private void roundPic() {
    	//这一张图是要进行圆形的图片
    	bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.dsafsdafas);
    	//这一张是一张圆形的透明图片,也是一张魔板吧
        Bitmap backBp = BitmapFactory.decodeResource(getResources(),R.drawable.userbg);
        //获取模板图片的宽。高。规格、布局,画布
        alterBitmap = Bitmap.createBitmap(backBp.getWidth(),backBp.getHeight(), backBp.getConfig());
        //画一张这样的画布
        Canvas canvas = new Canvas(alterBitmap);
        //画笔
        Paint paint = new Paint();
        //抗锯齿
        paint.setAntiAlias(true);
        //画一张bitmap,新的矩阵。规格
        canvas.drawBitmap(backBp, new Matrix(), paint);
        //这一步是关键,设置两张图片相交时的处理
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        bitmap = Bitmap.createScaledBitmap(bitmap, backBp.getWidth(),backBp.getHeight(), true);
        //产生新图,画好
        canvas.drawBitmap(bitmap, new Matrix(), paint);
        //设置图片
         im.setImageBitmap(alterBitmap);
    }
}

注:如果上边的代码功能不能实现的话,可以下载Dome......


http://download.csdn.net/detail/jiajia1112223/9452874


你可能感兴趣的:(android开发,android,图片,位图,圆形)