手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android中图片加载到内存的实例代码
android中图片加载到内存的实例代码
摘要:本文演示android中图片加载到内存首先设计界面:代码如下:往mnt/sdcard中上传测试图片添加逻辑部分代码:publicclassM...

本文演示android中图片加载到内存

首先设计界面:

android中图片加载到内存的实例代码1

代码如下:

<LinearLayout 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:orientation="vertical" tools:context=".MainActivity" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="load" android:text="加载图片到内存" /> <ImageView android:id="@+id/iv" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>

往mnt/sdcard中上传测试图片

添加逻辑部分代码:

public class MainActivity extends Activity { private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); } public void load() { Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/a.jpg"); iv.setImageBitmap(bitmap); } }

运行代码,产生错误,原因是图片太大(选取的是大照片)

可以使用BitmapFactory中包含的静态类Options在不解析图片信息的前提下得到图片的宽高信息:

BitmapFactory.Options opts = new Options(); // 不去解析图片信息,只是得到图片的头部信息 宽高 opts.inJustDecodeBounds = true; BitmapFactory.decodeFile("/sdcard/a.jpg", opts); int imageHeight = opts.outHeight; int imagewidth = opts.outWidth; System.out.println("图片宽:" + imagewidth); System.out.println("图片高" + imageHeight);

运行一下:

09-04 06:09:10.519: I/System.out(1812): 图片宽:2560

09-04 06:09:10.519: I/System.out(1812): 图片高1920

接下来得到手机屏幕的宽高:

//得到手机屏幕的宽高 WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE); int height = wm.getDefaultDisplay().getHeight(); int width = wm.getDefaultDisplay().getWidth();

可以看到getHeight与getWidth方法均已过时,使用下面的方法替代:

// 得到手机屏幕的宽高 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); Point outSize = new Point(); wm.getDefaultDisplay().getSize(outSize); // 3.0以后的版本才能使用

完整代码如下:

package com.wuyudong.loadimage; import android.os.Bundle; 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.view.Menu; import android.view.View; import android.view.WindowManager; import android.widget.ImageView; public class MainActivity extends Activity { private ImageView iv; private int windowHeight; private int windowWidth; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); // 得到手机屏幕的宽高 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); windowHeight = wm.getDefaultDisplay().getHeight(); windowWidth = wm.getDefaultDisplay().getWidth(); //Point outSize = new Point(); //wm.getDefaultDisplay().getSize(outSize); // 3.0以后的版本才能使用 //windowHeight = outSize.y; //windowWidth = outSize.x; } public void load(View view) { // Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/a.jpg"); // iv.setImageBitmap(bitmap); // 图片解析的配置 BitmapFactory.Options opts = new Options(); // 不去解析图片信息,只是得到图片的头部信息 宽高 opts.inJustDecodeBounds = true; BitmapFactory.decodeFile("/sdcard/a.jpg", opts); int imageHeight = opts.outHeight; int imagewidth = opts.outWidth; System.out.println("图片宽:" + imagewidth); System.out.println("图片高" + imageHeight); // 计算缩放比例 int scaleX = imagewidth / windowWidth; int scaleY = imageHeight / windowHeight; int scale = 1; if (scaleX > scaleY & scaleY >= 1) { scale = scaleX; } if (scaleY > scaleX & scaleX >= 1) { scale = scaleY; } //解析图片 opts.inJustDecodeBounds = false; //采样率 opts.inSampleSize = scale; Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/a.jpg", opts); iv.setImageBitmap(bitmap); } }

以上所述是小编给大家介绍的android中图片加载到内存的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我们留言,小编会及时回复大家的。在此也非常感谢大家对查字典教程网的支持!

【android中图片加载到内存的实例代码】相关文章:

android WebView加载html5介绍

android快捷简单的实现音乐播放器

Android应用开发中模拟按下HOME键的效果(实现代码)

Android 异步加载图片的实例代码

android获取屏幕的长与宽实现代码(手写)

android 线性布局LinearLayout实例代码

Android三种播放视频的方式

Android日期时间格式国际化的实现代码

Android 监听apk安装替换卸载广播的实现代码

Android 简单的照相机程序的实例代码

精品推荐
分类导航