android加载大图片内存问题
16lz
2021-01-23
复制图片:
package com.example.photocopy;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.graphics.Point;import android.os.Bundle;import android.view.View;import android.view.WindowManager;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView im1,im2;private Bitmap srcbitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); im1=(ImageView) findViewById(R.id.image1); im2=(ImageView) findViewById(R.id.image2); } @SuppressLint("NewApi") public void click(View view){ BitmapFactory.Options op=new Options(); op.inJustDecodeBounds=true; Bitmap bp=BitmapFactory.decodeResource(getResources(), R.drawable.icon,op); //获取图片大小,按照一定比例缩放 int photoWidth=op.outWidth; int photoHeight=op.outHeight; //获取窗口管理类 WindowManager ma=getWindowManager(); Point point=new Point(); //接收显示屏幕宽高ma.getDefaultDisplay().getSize(point);int screenWidth=point.x;int screenHeight=point.y;//求出比例float dy=photoHeight/screenHeight;float dx=photoWidth/screenWidth;float scale=(float) 1.0;if(dy>dx&&dy>1){//按照垂直缩放scale=dy;}if(dx>dy&&dx>1){//按照水平缩放scale=dx;}op.inSampleSize = (int) scale;op.inJustDecodeBounds=false;srcbitmap=BitmapFactory.decodeResource(getResources(), R.drawable.icon, op); im2.setImageBitmap(srcbitmap); }}
图片复制,放大
package com.example.photocopy;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.os.Bundle;import android.view.View;import android.widget.ImageView;public class SecondActivity extends Activity {private ImageView im1,im2;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);im1=(ImageView) findViewById(R.id.im2);im1.setImageResource(R.drawable.ic_launcher);im2=(ImageView) findViewById(R.id.im3);}public void click(View view){//获取原图Bitmap srcbitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);//创建可修改的副本Bitmap alterbitmap=Bitmap.createBitmap(srcbitmap.getWidth(),srcbitmap.getHeight(), srcbitmap.getConfig());//创建画布Canvas canvas=new Canvas(alterbitmap);//创建画笔Paint paint=new Paint();//设置图片矩阵Matrix matrix=new Matrix();matrix.setScale(1.0f, 1.0f);//paint.setColor(color);//画画canvas.drawBitmap(srcbitmap, matrix, paint);im2.setImageBitmap(alterbitmap);}}
更多相关文章
- android图片异步加载解决步骤
- android 大图片拖拽并缩放实现原理
- Android 原始下载图片 通过HTTp
- Android:下载网络图片
- android ScrollView 多张图片之间有空白
- android从网上下载图片
- Android图片上传工具类
- android:编写属性动画程序(旋转,缩放,淡出淡入)