该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

public class MainWangActivity extends Activity{

private static final String TAG = MainWangActivity.class.getName();

private ImageView imageView1,imageView2,imageView3;

/**

* 图片显示的宽度,这里为屏幕的宽度

*/

int width;

int heightFollwidth;

int imgW,imgH;

// InputStream inputStream;

int dealImgW1,dealImgH1;

int dealImgW2,dealImgH2;

int dealImgW3,dealImgH3;

Bitmap bitmap,dealBitmap1,dealBitmap2,dealBitmap3;

Rect rect1,rect2,rect3;

BitmapRegionDecoder bitmapRegionDecoder;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

DisplayMetrics metric = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metric);

width = metric.widthPixels; // 屏幕宽度(像素)

System.out.println("屏幕width: " +width+"\ndip2px(this, 460): "+dip2px(this, 460));

setContentView(R.layout.main_wang);

Log.d(TAG, "1");

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.longimg);

Log.d(TAG, "2"); // 1.4s

//inputStream = Bitmap2Is(bitmap);

imgW = bitmap.getWidth(); // 这个值是dp(=920),它大于图片实际像素宽px(=460)

imgH = bitmap.getHeight();

System.out.println("原始长图w: "+bitmap.getWidth()+"\n原始长图h: "+bitmap.getHeight());

imageView1 = (ImageView) findViewById(R.id.imageView1);

imageView2 = (ImageView) findViewById(R.id.imageView2);

imageView3 = (ImageView) findViewById(R.id.imageView3);

rect1 = new Rect(0, 0, imgW, imgH/3);

rect2 = new Rect(0, imgH/3, imgW, 2*imgH/3);

rect3 = new Rect(0, 2*imgH/3, imgW, 3*imgH/3);

try {

Log.d(TAG, "3"); // 0.004s

bitmapRegionDecoder = BitmapRegionDecoder.newInstance(Bitmap2Is(bitmap), false);

Log.d(TAG, "4"); // 1s

dealBitmap1 = bitmapRegionDecoder.decodeRegion(rect1, null);

dealBitmap2 = bitmapRegionDecoder.decodeRegion(rect2, null);

dealBitmap3 = bitmapRegionDecoder.decodeRegion(rect3, null);

Log.d(TAG, "5"); // 1.1s

if(dealBitmap1!=null&&dealBitmap2!=null&&dealBitmap3!=null){

Log.d(TAG, "6"); // 0.012s

dealImgW1 = dealBitmap1.getWidth();

dealImgH1 = dealBitmap1.getHeight();

dealImgW2 = dealBitmap2.getWidth();

dealImgH2 = dealBitmap2.getHeight();

dealImgW3 = dealBitmap3.getWidth();

dealImgH3 = dealBitmap3.getHeight();

heightFollwidth = width*dealImgH1/dealImgW1;

imageView1.setLayoutParams(new LinearLayout.LayoutParams(width, heightFollwidth));

imageView2.setLayoutParams(new LinearLayout.LayoutParams(width, heightFollwidth));

imageView3.setLayoutParams(new LinearLayout.LayoutParams(width, heightFollwidth));

imageView1.setImageBitmap(dealBitmap1);

imageView2.setImageBitmap(dealBitmap2);

imageView3.setImageBitmap(dealBitmap3);

Log.d(TAG, "7"); // 0.000s

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

这个是我使用bitmapRegionDecoder的代码

android 图片过长,【05-25求助】怎样无损加载一张过长的图片相关推荐

  1. Android 高清加载巨图方案 拒绝压缩图片

    Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处:  http://blog.csdn.net/lmj623565791/article/details/49300989:  本文出自: ...

  2. 高清加载巨图方案-拒绝压缩图片

    Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自:[张 ...

  3. Android中关于Volley的使用(二)加载Json数据

    前面一篇关于Volley的文章中,我们学习了如何利用ImageRequest去网络中加载图片,那么今天我们就来学习一下如何利用volley去网络中加载Json格式数据,并将其展示在一个ListView ...

  4. 【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 拷贝 DEX 文件到内置存储 | 加载并执行 DEX 字节码文件 )

    文章目录 一.拷贝 Assets 目录下的 classes.dex 字节码文件到内置存储区 二.加载 DEX 文件并执行其中的方法 三.MainActivity 及执行结果 四.博客资源 一.拷贝 A ...

  5. 《android开发艺术探索》笔记之Bitmap的加载和Cache

    <Android开发艺术探索>笔记之Bitmap的加载和Cache<一> 我放暑假前,就在图书馆借了一本<Android开发艺术探索>,这也是我看到很多人推荐的.之 ...

  6. Android 页面或文件或网络请求时的加载动画

    //加载图片或页面或网络请求时出现加载动画 public Class LoadingAnimation{ private static LoadingAnimation loadingAnimatio ...

  7. Android一键生成包含.dex的Jar及动态加载方案

    Android一键生成包含.dex的Jar及动态加载方案 背景:谈到动态加载相信很多小伙伴都会想到 热更新 及 动态加载dex 的技术,最近也因为项目重构的需求,折腾了下这方面的技术点,以前研究过但时 ...

  8. iOS原生如何加载HTML中img标签的图片

    原文出自:iOS原生如何加载HTML中img标签的图片 前言 最近iOS App项目中使用Webview加载H5页面比较多,也有不少朋友经常问到这个问题,在这里我也学习学习如何通过iOS原生的方式来加 ...

  9. 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。...

    a. 图片懒加载,滚动到相应位置才加载图片. b. 图片预加载,如果为幻灯片.相册等,将当前展示图片的前一张和后一张优先下载. c. 使用CSSsprite,SVGsprite,Iconfont.Ba ...

最新文章

  1. 计算机专业毕业生人数稳居前十,你该怎么脱颖而出?
  2. SQLSERVER存储过程基本语法
  3. Android 学习笔记--android——AsyncTask在Android4.X的机制问题
  4. SQL比oracle卡,对比Oracle与SQL Server
  5. [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)
  6. linux mysql移植_linux 下mysql 移植设置方法
  7. linux for循环
  8. JEECMS站群管理系统-- 标签的配置流程
  9. 详解Oracle数据货场中三种优化:分区、维度和物化视图
  10. html页面打开字都有蓝色背景,为什么有些网页打不开?网页空白页、白底蓝字问题怎么解决?...
  11. 如何删除360的防火墙模块(详解)
  12. window11在注册表修改用户名后登陆不了账户
  13. 【最简单】地图获取经纬度的办法
  14. 奥克兰大学计算机专业好找工作吗,留学选择奥克兰大学的计算机专业肯定不会后悔...
  15. 特斯拉充电电流设置多大_特斯拉满电状态517公里,实际使用500公里。三种充电方式比较...
  16. Spring| Spring中的动态代理配置(aspectj-autoproxy属性介绍)
  17. Linux之线程条件变量cond
  18. UML画图总结以及浅谈UNL九种图
  19. 抖店与淘宝有什么不同?
  20. 用Python写简历

热门文章

  1. 打破国外垄断 数字音频国家标准DRA颁布
  2. 优麒麟配置java环境变量
  3. 复杂业务下,我们为何选择Akka作为异步通信框架?
  4. 虚拟信用卡绑定paypal验证的教程
  5. 动态像素绘画——StarDust
  6. 编译原理 LL1文法的判断和句子识别
  7. matlab 蜗杆轮廓,solidworks环面蜗杆画法
  8. 为何现在的程序员没工作动力,迷茫、中年危机普遍发生?
  9. 暑假假期训练总结-26
  10. 组态王图素制作_组态王主界面制作