您的位置:首页 > 移动开发

app中头像,圆形图片

2016-03-04 16:42 239 查看
今天写项目的时候,遇到了这个东西,写完了,就在记录一份,其实不难。

下面是真相:



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

/**
* 圆形的图片
*/
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: