android图片_加载大图片

来源:互联网 发布:时时彩返奖统计软件 编辑:程序博客网 时间:2024/04/28 22:41

一、项目目录结构

二、activity_main.xml界面

三、activity_main.xml代码

<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="com.zgs.loadBigImage.MainActivity" >    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="click"        android:text="加载" />    <ImageView        android:id="@+id/iv"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>
四、MainActivity.java代码
package com.zgs.loadBigImage;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.view.View;import android.view.WindowManager;import android.widget.ImageView;public class MainActivity extends Activity {private ImageView iv;private int screenWidth;private int screenHeight;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//[1]找到iv用于显示加载图片 iv = (ImageView) findViewById(R.id.iv);//[2]获取手机的分辨率,获取windowmanager实例WindowManager wm  = (WindowManager) getSystemService(WINDOW_SERVICE);//谷歌过时方法screenWidth = wm.getDefaultDisplay().getWidth();screenHeight = wm.getDefaultDisplay().getHeight();//谷歌新方法// Point size=new Point();// wm.getDefaultDisplay().getSize(size);// screenWidth = size.x;// screenHeight = size.y;System.out.println("手机的宽和高:"+screenWidth+"---"+screenHeight);}//点击按钮  加载dog.jpg 这张图片public void click(View v) {//[2]把dog.jpg 转换成bitmap  //创建bitmap工厂的配置参数 BitmapFactory.Options options = new Options();//返回一个null 没有bitmap   不去真正解析位图 但是能返回图片的一些信息(宽和高)options.inJustDecodeBounds = true;String pathNameString = Environment.getExternalStorageDirectory().getAbsolutePath();System.out.println(pathNameString);BitmapFactory.decodeFile("/storage/sdcard/dog.jpg",options);//[3]获取图片的宽和高  int imgWidth = options.outWidth;int imgHeight = options.outHeight;System.out.println("图片的宽:"+imgWidth+"-----"+imgHeight);//[4]计算缩放比 int scale = 1;  //我们定义的缩放比 int scalex =  imgWidth/screenWidth;int scaley = imgHeight /screenHeight;if (scalex >=scaley&&scalex > scale) {scale = scalex;}if (scaley > scalex && scaley>scale) {scale = scaley;}System.out.println("缩放比为:"+scale);//[5]按照缩放比显示图片 options.inSampleSize = scale;//[6]开始真正的解析位图 options.inJustDecodeBounds = false;Bitmap bitmap = BitmapFactory.decodeFile("/storage/sdcard/dog.jpg",options);//[7]把bitmap显示到控件上iv.setImageBitmap(bitmap);}}
五、AndroidManifest.xml代码
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.zgs.loadBigImage"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="16"        android:targetSdkVersion="22" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>
注意一定要在配置清单中加上面代码中的这两句话:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

0 0