android Bitmap

 1)从android的资源文件夹layout中加载xml布局文件,并把布局文件映射为Bitmap

main.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="256px"
	android:layout_height="256px">
	<TextView android:layout_width="wrap_content" android:id="@+id/city"
		android:layout_height="wrap_content" android:textSize="20px"
		android:textColor="#ffffff" android:shadowColor="#0000AA"
		android:shadowDx="0" android:shadowDy="-2" android:shadowRadius="0.1"
		android:layout_gravity="right" android:layout_marginRight="5px" />
	</LinearLayout>

 

java代码中的处理,方法一:

//加载xml布局文件
		LayoutInflater factory = LayoutInflater.from(context);
		View view = factory.inflate(R.layout.main, null);
		//获得布局文件中的TextView
		TextView city = (TextView) view.findViewById(R.id.city);
		//设置city的文本信息
		city.setText("xml中的textview");	
		//启用绘图缓存
		view.setDrawingCacheEnabled(true);		
		//调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
		view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
				MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
		//这个方法也非常重要,设置布局的尺寸和位置
		view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
		//获得绘图缓存中的Bitmap
		view.buildDrawingCache();
		Bitmap bitmap = view.getDrawingCache();

 

java代码中的处理,方法二:

 

//加载xml布局文件
		LayoutInflater factory = LayoutInflater.from(context);
		View view = factory.inflate(R.layout.main, null);
		//获得布局文件中的TextView
		TextView city = (TextView) view.findViewById(R.id.city);
		//设置city的文本信息
		city.setText("xml中的textview");	
		//调用下面这个方法非常重要,如果没有调用这个方法,得到的bitmap为null
		view.measure(MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY),
				MeasureSpec.makeMeasureSpec(256, MeasureSpec.EXACTLY));
		//这个方法也非常重要,设置布局的尺寸和位置
		view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
		//生成bitmap
		Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
				Bitmap.Config.RGB_565);
		//利用bitmap生成画布
		Canvas canvas = new Canvas(bitmap);
		//把view中的内容绘制在画布上
		view.draw(canvas);



2)Bitmap转换为byte[]数组

方法一:

private byte[] Bitmap_To_Bytes(Bitmap bitmap){   
    ByteArrayOutputStream baos = new ByteArrayOutputStream();     
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);     
    return baos.toByteArray();   
   } 


 

方法二:

public static byte[] readStream(InputStream inStream) throws Exception {   
        byte[] buffer = new byte[1024];  
        int len = -1;  
        ByteArrayOutputStream baos  = new ByteArrayOutputStream();  
        while ((len = inStream.read(buffer)) != -1) {  
            baos .write(buffer, 0, len);  
        }  
        byte[] data = baos .toByteArray();  
        baos .close();  
        inStream.close();  
        return data;  
  
    }  



3)设置在应用中支持32位的图像:

在onCreate()函数中加入以下两行:

        getWindow().setFormat(PixelFormat.RGBX_8888);
        BitmapFactory.setDefaultConfig(Bitmap.Config.ARGB_8888);


以使之 支持32bit的图像。

 

4)把drawable文件夹下的文件转成Bitmap

        Bitmap bm = BitmapFactory.decodeResource(getApplicationContext().getResources(),
                R.drawable.down);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值