android 加载图片到内存(缩放)
2015-08-31 18:33
603 查看
package com.example.looding;
import java.io.File;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView iv;
private Button button;
File file;
private String TAG=this.getClass().getName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView) findViewById(R.id.iv);
button=(Button) findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
file=new File(Environment.getExternalStorageDirectory().toString()+"");
}*/
//1.获取手机的宽高
WindowManager windowManager=getWindowManager();
int phonewidth=windowManager.getDefaultDisplay().getWidth();
int photoheght=windowManager.getDefaultDisplay().getHeight();
Log.d(TAG, "phonewidth"+phonewidth+"+++++"+"photoheght"+photoheght);
//2.获取图片的宽高
BitmapFactory.Options opts=new Options();//解析位图的附加条件
opts.inJustDecodeBounds=true;//设置为true的话不加载到内存,就是不去解析位图,知识获取它的头部信息。
Bitmap bitmap=BitmapFactory.decodeFile("/mnt/sdcard/heshuo.jpg", opts);
int imagewidth=opts.outWidth;
int imageheight=opts.outHeight;
//3.获取缩放的比例
int dx=imagewidth/phonewidth;
int dy=imageheight/photoheght;
Log.d(TAG, "dx"+dx+"+++++"+"dy"+dy);
int scale=1;
if(dx>dy&&dx>1){//按水平方向缩小
scale=dx;
Log.d(TAG, String.valueOf(scale));
}
if(dy>dx&&dy>1){//按竖直方向缩小
scale=dy;
}
//4.显示图片
opts.inSampleSize=scale;
opts.inJustDecodeBounds=false;
bitmap=BitmapFactory.decodeFile("/mnt/sdcard/heshuo.jpg", opts);
iv.setImageBitmap(bitmap);
}
});
}
}
import java.io.File;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView iv;
private Button button;
File file;
private String TAG=this.getClass().getName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView) findViewById(R.id.iv);
button=(Button) findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
file=new File(Environment.getExternalStorageDirectory().toString()+"");
}*/
//1.获取手机的宽高
WindowManager windowManager=getWindowManager();
int phonewidth=windowManager.getDefaultDisplay().getWidth();
int photoheght=windowManager.getDefaultDisplay().getHeight();
Log.d(TAG, "phonewidth"+phonewidth+"+++++"+"photoheght"+photoheght);
//2.获取图片的宽高
BitmapFactory.Options opts=new Options();//解析位图的附加条件
opts.inJustDecodeBounds=true;//设置为true的话不加载到内存,就是不去解析位图,知识获取它的头部信息。
Bitmap bitmap=BitmapFactory.decodeFile("/mnt/sdcard/heshuo.jpg", opts);
int imagewidth=opts.outWidth;
int imageheight=opts.outHeight;
//3.获取缩放的比例
int dx=imagewidth/phonewidth;
int dy=imageheight/photoheght;
Log.d(TAG, "dx"+dx+"+++++"+"dy"+dy);
int scale=1;
if(dx>dy&&dx>1){//按水平方向缩小
scale=dx;
Log.d(TAG, String.valueOf(scale));
}
if(dy>dx&&dy>1){//按竖直方向缩小
scale=dy;
}
//4.显示图片
opts.inSampleSize=scale;
opts.inJustDecodeBounds=false;
bitmap=BitmapFactory.decodeFile("/mnt/sdcard/heshuo.jpg", opts);
iv.setImageBitmap(bitmap);
}
});
}
}
相关文章推荐
- android自定义正方形的imageview和textview
- 用EditText实现的 连续输入的密码框
- 史上最全selector和shape使用方法 Android ListView 列表项点击之后,保持背景颜色
- Android 自定义对话框
- android studio的一些技术
- 2015-8-31
- Android 设置系统亮度
- Android development 国内镜像
- Android 如何监听返回键
- 自定义布局的IMS
- Android开发相关的Blog推荐
- Android输入法框架分析
- Android屏幕适配全攻略
- android textview里面显示图文混排
- android中?和@的区别
- jni动态注册
- Android中EditText实现不可编辑解决办法
- Android上调用ffmpeg的简单实例,附源码FFmpegTest
- Android混淆打包规范
- Android Canvas drawArc方法介绍