android 加载大图的原理和实现
来源:互联网 发布:爱淘宝网 编辑:程序博客网 时间:2024/05/19 21:17
package com.alleged.imageLoad;import android.support.v7.app.ActionBarActivity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.WindowManager;import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private ImageView image; /*实现逻辑 * 第一步得到当前屏幕的分辨率 * 第二步得到要加载图片的信息 * 第三步计算缩放比例 * 第四步加载目标图片 * */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView)findViewById(R.id.showImage); } public void loadImage(View v){ //得到当前屏幕的分辨率 //创建WindowManger类对象 WindowManager window = (WindowManager)getSystemService(WINDOW_SERVICE); //screenWidth代表屏幕的宽 screenHeight代表屏幕的高 int screenWidth = window.getDefaultDisplay().getWidth(); int screenHight = window.getDefaultDisplay().getHeight(); //获取图片的信息 BitmapFactory.Options options = new Options(); //只加载信息 不加载内容 options.inJustDecodeBounds = true; //把一个图片文件 解码到bitmap中 只加载了文件信息 BitmapFactory.decodeFile("/mnt/sdcard/6.jpg",options); //得到图片的宽 高 int imageWidth = options.outWidth; int imageHeight = options.outHeight; //计算缩放比 int scale = 1; int scalex = imageWidth/screenWidth; int scaley = imageHeight/screenHight; if(scalex>scale&&scalex>scaley){ scale =scalex; }else if(scaley>scale&&scaley>scalex){ scale =scaley; }else{ scale = 1; } System.out.println(scale); //正式加载图片 //设置缩放比 options.inSampleSize=scale; options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/6.jpg",options); image.setImageBitmap(bitmap); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
布局文件
<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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" android:gravity="center_horizontal" tools:context="com.alleged.imageLoad.MainActivity" > <Button android:id="@+id/imageLoad" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="加载" android:onClick="loadImage"/> <ImageView android:id="@+id/showImage" android:layout_width="wrap_content" android:layout_height="wrap_content"/></LinearLayout>
0 0
- android 加载大图的原理和实现
- Android中对大图的处理的实现和分析
- android加载大图片的方法
- Android 加载大图的缩略图显示
- Android ImageView加载摄像头拍摄的大图
- Android中对加载大图的处理
- Android加载大图的优化策略
- Android高效的加载大图片
- android大图加载问题解决的心路历程
- Android大图加载方法
- android 高效加载大图
- Android 加载大图片
- android 加载大图片
- android加载大图片
- android高效加载大图
- Android-加载大图片
- android加载大图片
- Android高效加载大图
- ListView背景修饰
- The Linux Command Line 11-20章总结
- Redis在游戏开发中的应用
- 继承BaseAdapter实现Filterable的adapter类完整示例
- CodeForces 548E Mike and Foam (容斥+数论)
- android 加载大图的原理和实现
- PagerSildingTab的简单实现
- windows10下安装Microsoft Visual Studio 2013.4 Community enu中文语言包出错,提示“”程序兼容模式已打开.请将其关闭”的解决方法
- LuBan图片压缩
- 51Nod-1320-合法尾数序列
- Android 仿照微信发说说,既能实现拍照,选图库,多图案上传 使用Retrofit2.0技术
- hdu 2089 不要62 (数位DP)
- c#中线程池
- Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values;