如何正确的在Android中使用位图

  介绍

这篇文章给大家介绍如何正确的在Android中使用位图,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一图片表示原理

图片是由每个像素点来组成像素点就是小方块

图片的大小等于宽*高*每个像素点的大小

二加载图片伯父异常

如何正确的在Android中使用位图

解决办法,

其中big.jpg是一张21.2 mb的高清图

public  class  MainActivity  extends  AppCompatActivity  implements  View.OnClickListener  {      ImageView 才能;mImageView;      @Override才能   protected 才能;void  onCreate (Bundle  savedInstanceState), {   ,,,super.onCreate (savedInstanceState);   ,,,setContentView (R.layout.activity_main);      ,,,findViewById (R.id.load) .setOnClickListener(这个);   ,,,mImageView =, findViewById (R.id.image);   ,,}      @Override才能   public 才能;void  onClick (View 视图),{   ,,,switch  (view.getId ()), {   ,,,,,case  R.id.load:   ,,,,,,,负载();   ,,,,,,,休息;   ,,,}   ,,}      private 才能;void 负荷(),{   ,,,try  {   ,,,,,BitmapFactory.Options  option =, new  BitmapFactory.Options ();   ,,,,,option.inJustDecodeBounds =,真的,,//只会解析图片的大小,不会加载图片的内容   ,,,,,BitmapFactory.decodeStream (getAssets () .open (“big.jpg"),空,,选项);   ,,,,,//,获取图片的宽高   ,,,,,int  width =, option.outWidth;   ,,,,,int  height =, option.outHeight;   ,,,,,//,获取屏幕的宽高   ,,,,,int  screenWidth =, getScreenWidth ();   ,,,,,int  screenHeight =, getScreenHeight ();   ,,,,,//,把图片的宽高和屏幕的宽高进行对比   ,,,,,int  scaleX =, width /, screenWidth;   ,,,,,int  scaleY =, height /, screenHeight;   ,,,,,int  scale =, scaleX 祝辞,scaleY  ?, scaleX :,写入scaleY;   ,,,,,option.inJustDecodeBounds =,假的,,//加载图片的内容   ,,,,,//,如果设置为祝辞1,请求解码器对原始数据进行子采样,例如inSampleSize==4返回图像的宽度/高度是原始图像的1/4   ,,,,,//,任何值& lt;=1都与1相同   ,,,,,option.inSampleSize =,规模;   ,,,,,Bitmap  Bitmap =, BitmapFactory.decodeStream (getAssets () .open (“big.jpg"),空,,选项);   ,,,,,int  byteCount =, bitmap.getByteCount ();   ,,,,,Log.i (“HUANG",,“byteCount=? +, byteCount);   ,,,,,mImageView.setImageBitmap(位图);      ,,,},catch  (IOException  e), {   ,,,,,e.printStackTrace ();   ,,,}   ,,}/* *,才能得到设备屏幕的宽度,(像素),* */private 才能;int  getScreenWidth (), {   ,,,return  getresource () .getDisplayMetrics () .widthPixels;   ,,}/* *,才能得到设备屏幕的高度,(像素),* */private 才能;int  getScreenHeight (), {   ,,,return  getresource () .getDisplayMetrics () .heightPixels;   ,,}      }

三图片处理原理

Android里面所有的显示效果都是绘制出来的

用Android封装好的绘图类去绘制图片

画布:画布

漆:画笔

矩阵:图形矩阵3 * 3

位图:要绘制的图片

四图片的旋转平移缩放

其中mm.jpg是一张57 kb的图属于正常范围不需要额外处理

public  class  MainActivity  extends  AppCompatActivity  implements  View.OnClickListener  {      ImageView 才能;mImageView, mCopyView;   Bitmap 才能;mBitmap;      @Override才能   protected 才能;void  onCreate (Bundle  savedInstanceState), {   ,,,super.onCreate (savedInstanceState);   ,,,setContentView (R.layout.activity_main);      ,,,findViewById (R.id.change) .setOnClickListener(这个);   ,,,mImageView =, findViewById (R.id.image);   ,,,mCopyView =, findViewById (R.id.copy);   ,,,try  {   ,,,,,mBitmap =, BitmapFactory.decodeStream (getAssets () .open (“mm.jpg"));   ,,,,,mImageView.setImageBitmap (mBitmap);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何正确的在Android中使用位图