Android 实现图片的圆角 (转)
2016-04-13 09:41
483 查看
/** * 获取圆角位图的方法 * @param bitmap 需要转化成圆角的位图 * @param pixels 圆角的度数,数值越大,圆角越大 * @return 处理后的圆角位图 */ public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); 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; }
下面就测试一下这个方法,将一个Activity的背景图设置为圆角,即将Activity的LinerLayout的背景设置为圆角:
配置文件 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" > </LinearLayout>
Java代码:
import android.app.Activity;效果如下:
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
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.os.Bundle;
import android.widget.LinearLayout;
/**
* 将Activity的背景图设置为圆角图
*/
public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Drawable drawable = getResources().getDrawable(R.drawable.bg);
// BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
// Bitmap bitmap = bitmapDrawable.getBitmap();
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
Drawable drawable = getResources().getDrawable(R.drawable.yexuan);
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
BitmapDrawable bbb = new BitmapDrawable(toRoundCorner(bitmap, 30));
layout.setBackgroundDrawable(bbb);
// ImageView imageView = (ImageView) findViewById(R.id.imgShow);
// imageView.setImageBitmap(MyActivity.getRoundedCornerBitmap(bitmap));
// imageView.setImageBitmap(MyActivity.toRoundCorner(bitmap, 20));
}
/** * 获取圆角位图的方法 * @param bitmap 需要转化成圆角的位图 * @param pixels 圆角的度数,数值越大,圆角越大 * @return 处理后的圆角位图 */ public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); 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; }}
相关文章推荐
- Android中shape的使用
- 【转】Android 实现ListView的滑动删除效果
- 最新Android & iOS设计尺寸规范
- Android Studio 配置
- 根据年和月计算这个月有多少天的算法
- Android使用ViewPager实现左右循环滑动及轮播效果
- android进程和线程
- android项目大全,总有你所需的(二)
- Android开发中,那些让你相见恨晚的方法、类或接口
- 通用的RecyclerView Adapter适配器
- Android减少布局层次--有关Activity根视图DecorView的思考
- Android自定义控件简单实现ratingbar效果
- 好博客记录
- 国内外Android大牛Blog
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
- android canvas.drawText()的研究
- 优秀的Android资源
- Android平台 Psensor传感器调试方法
- Android平台 Psensor传感器调试方法
- 彻底明白Android中AIDL及其使用