android如果给imageview做圆角,如果在原有的bitmap上加上一些修饰的drawable

先上效果图:

Layout文件:

<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:background="#99CC99"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/img1"
        android:layout_centerInParent="true"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:adjustViewBounds="true"
        android:scaleType="centerInside"
        android:src="@drawable/portrait"
        />

    <ImageView
        android:id="@+id/img5"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@id/img1"
        android:layout_marginRight="20dp"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/portrait"
        />

    <ImageView
        android:id="@+id/img6"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@id/img5"
        android:layout_marginRight="20dp"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:adjustViewBounds="true"
        android:scaleType="center"
        android:src="@drawable/portrait"
        />

    <ImageView
        android:id="@+id/img4"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@id/img1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        android:src="@drawable/portrait"
        />

     <ImageView
        android:id="@+id/img7"
        android:layout_centerVertical="true"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@id/img4"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:src="@drawable/portrait"
        />

      <ImageView
        android:id="@+id/img2"
        android:layout_marginBottom="20dp"
        android:layout_centerHorizontal="true"
        android:layout_above="@id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

        <ImageView
        android:id="@+id/img3"
        android:layout_marginTop="20dp"
         android:layout_centerHorizontal="true"
        android:layout_below="@id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</RelativeLayout>

首先介绍两种把资源里的drawable转成bitmap的方式

第一种:

Bitmap bmp=BitmapFactory.decodeResource(this.getResources(), R.drawable.portrait);

第二种:

	Drawable d = this.getResources().getDrawable(R.drawable.portrait);
		Bitmap bmp = drawableToBitmap(d);
	public static Bitmap drawableToBitmap(Drawable drawable) {
        Bitmap bitmap = Bitmap.createBitmap(
                                        drawable.getIntrinsicWidth(),
                                        drawable.getIntrinsicHeight(),
                                        Bitmap.Config.ARGB_8888
                                                        );

        Canvas canvas = new Canvas(bitmap);
        //canvas.setBitmap(bitmap);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
        drawable.draw(canvas);
        return bitmap;
}

把Bitmap加上圆角的方法:

private static RectF rrbRectf = new RectF();
	private static Path rrbRath = new Path();
	private static final int RRB_DEFAULT_SIZE = 10;

	public static Bitmap outputBmp(Context ctx, Bitmap src, boolean isCover) {
		Bitmap v = null;
		if (isCover) {
			v = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.v);
		}else{
			v = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.tv);
		}
		Bitmap bmp = null;
		int arcLength = RRB_DEFAULT_SIZE;
		if (src != null && arcLength > 0) {
			int width = src.getWidth();
			int height = src.getHeight();
			// Utils.loge("width:" + width + "height:" + height);
			Bitmap newBitmap = Bitmap.createBitmap(width, height,
					Bitmap.Config.ARGB_4444);
			Canvas canvas = new Canvas(newBitmap);
			rrbRath.reset();
			rrbRectf.set(0, 0, width, height);
			<strong>rrbRath.addRoundRect(rrbRectf, arcLength, arcLength,
					Path.Direction.CW);  //这里是加上圆角</strong>
			canvas.clipPath(rrbRath);
			canvas.drawBitmap(src, 0, 0, new Paint(Paint.ANTI_ALIAS_FLAG));
			if (newBitmap != null && v != null) {
				int width1 = newBitmap.getWidth();
				int height1 = newBitmap.getHeight();
				int width2 = v.getWidth();
				int height2 = v.getHeight();
				bmp = Bitmap.createBitmap(width1 + (width2 / 2), height1
						+ (height2 / 2), Bitmap.Config.ARGB_4444);
				bmp.eraseColor(Color.TRANSPARENT);
				Canvas canvas2 = new Canvas(bmp);
				canvas2.drawBitmap(newBitmap, 0, 0, new Paint(
						Paint.ANTI_ALIAS_FLAG));
				<strong>canvas2.drawBitmap(v, width1 - (width2 / 2), height1
						- (height2 / 2), new Paint(Paint.ANTI_ALIAS_FLAG));  //这里是在图片右下角加上v</strong>
				newBitmap.recycle();
				v.recycle();
				return bmp;
			}
			src.recycle();
		}
		return bmp;

	}

android如果给imageview做圆角,如果在原有的bitmap上加上一些修饰的drawable,布布扣,bubuko.com

时间: 2024-10-23 18:29:18

android如果给imageview做圆角,如果在原有的bitmap上加上一些修饰的drawable的相关文章

Android ImageView 图片圆角显示(转载)

转载自:http://www.w2bc.com/Article/3623 android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪圆形的bitmap,然后在onDraw()进行绘制圆形图片输出. 自定义的圆形的ImageView类的实现代码如下: package com.rainwii.entity; //包名 import android.c

Android Demo---如何敲出圆角的Button+圆角头像

经常玩儿App的小伙伴都知道,APP上面有很多按钮都是圆角的,圆形给人感觉饱满,富有张力,不知道设计圆角按钮的小伙伴是不是和小编有着相同的想法`(*∩_∩*)′,听小编公司开发IOS的小伙伴说,他们里面直接有圆角的button,但是对于开发Android的小伙伴就不一样了,里面没有直接的圆角button可以供我们使用,在xml里面布局一个button,还不是圆角的,怎么办nie,方法总比困难多,我们成长的机会又来了,最近在小编的项目中,需要用到圆角的button,还需要用到圆角的头像,经过半天捣

Android 两种制作圆形/圆角图片的方法

前言: 目前网上有很多圆角图片的实例,Github上也有一些成熟的项目.之前做项目,为了稳定高效都是选用Github上的项目直接用.但这种结束也是Android开发必备技能 ,所以今天就来简单研究一下该技术,分享给大家. 预备知识: Xfermode介绍: 下面是Android ApiDemo里的"Xfermodes"实例,效果图. Xfermode有三个子类,结构如下: public class Xfermode extends Object java.lang.Object ? a

android如果用ListView做一个表格形式

效果图: 这样来写: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); ListView list = (ListView)findViewById(R.id.lvLinks); SquareItemAdapter adapter = new SquareItemAdapter(this)

Android学习笔记-ImageView(图像视图)

原文来自:http://www.runoob.com/w3cnote/android-tutorial-imageview.html 本节引言: 本节介绍的UI基础控件是:ImageView(图像视图),见名知意,就是用来显示图像的一个View或者说控件! 官方API:ImageView;本节讲解的内容如下: ImageView的src属性和blackground的区别: adjustViewBounds设置图像缩放时是否按长宽比 scaleType设置缩放类型 最简单的绘制圆形的ImageVi

Android API之ImageView.ScaleType代码演示

摘抄自http://blog.sina.com.cn/s/blog_407abb0d0100mao1.html 为了全面演示ImageView.ScaleType的八种类型即CENTER,CENTER_CROP,CENTER_INSIDE,FIT_CENTER,FIT_START,FIT_END,FIT_XY,MATRIX,我在这里通过一个GridView进行显示,可通过点击每一种类型的ImageButton进行详细查看.比较. 背景图片为一个像素宽度(443px)×高度(500px),大于默认

Android ListView 嵌套 ImageView,如何响应ImageView的点击和长按事件

http://www.tuicool.com/articles/EZv2Uv 1.先说下嵌套在ListView中的ImageView如何响应点击事件 方法:在imageView中设置onClick属性,例如:android:onClick="TimeClick" 然后在Activity中写TimeClick方法,获取ImageView的id就可以了. 2.长按事件: 本人是用BaseAdapter的,然后在getView中写:holder.iv.setOnLongClickListen

Android有感(21):ImageView及其子类

ImageView继承自View,主要作用是显示图片和其他Drawable对象. ImageView也派生了ImageButton.ZoomButton等子类. ImageView支持的XML属性和相关的方法: XML属性 相关方法 说明 android:adjustViewBounds setAdjustViewBounds(boolean) 是否调整自己的边界来保持所显示图片的长宽比 android:baseline setBaseline(int) 设置视图内基线的偏移量 android:

android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法

先说说我的遇到的问题: 1. 我在activity里写一个 fragment 2.这个fragment里有个 imageView ,用于显示图片. 我使用 asyncTask获得图片,并准备在这个imageView 中显示该图片的缩略图,我准备使用  ThumbnailUtils.extractThumbnail 方法生成缩略图. 我们先看看ThumbnailUtils.extractThumbnail(source, width, height);  这个方法的参数   source 源文件(