ImageView在开启硬件加速时加载长图
来源:互联网 发布:最好的php 分销系统 编辑:程序博客网 时间:2024/06/01 10:44
本文参考文章http://tieba.baidu.com/p/3064414697
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); HashMap<Integer , Bitmap> mMap = (HashMap<Integer , Bitmap>)msg.obj; if(mMap !=null){ try{ mOtherRouteContainer.removeAllViews(); //先移除容器内的全部子view for(int i = 0 ; i < mMap.size() ; i ++){ ScaleImageView imageView = new ScaleImageView(GroupProductDetailActivity.this); float width = mMap.get(i).getWidth(); scale = (AppConfig.getScreenWidth() - ExtendUtils.dip2px(GroupProductDetailActivity.this, 20)) / width; LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT,(int)(mMap.get(i).getHeight()* scale)); imageView.zoomTo(scale); imageView.setLayoutParams(params); imageView.setImageBitmap(mMap.get(i)); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //imageview点击事件 if (mjourney != null) { Intent route_img_intent = new Intent(GroupProductDetailActivity.this, RouteBrowsePictureActivity.class); route_img_intent.putExtra(GlobalConstant.IntentConstant.ROUTE_IMG_URL, mjourney.image); route_img_intent.putExtra(GlobalConstant.IntentConstant.ROUTE_IMG_DOWNLOAD_URL, mjourney.pdfPath); startActivity(route_img_intent); } } }); mOtherRouteContainer.addView(imageView); } }catch(Exception e){ } } } }; /** * 新线程切割bitmap运算 */ public class calThread extends Thread{ private Bitmap bitmap; public calThread(Bitmap bitmap){ this.bitmap = bitmap; } @Override public void run() { super.run(); deviderBitmapToShow(bitmap); } } /** * bitmap 转换成 InputStream * @param bm * @return */ private InputStream Bitmap2IS(Bitmap bm){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); InputStream sbs = new ByteArrayInputStream(baos.toByteArray()); return sbs; } /** * 将原bitmap切割显示 * @param bitmap */ private void deviderBitmapToShow(Bitmap bitmap){ if(bitmap == null || bitmap.getHeight()<=0 || bitmap.getWidth()<=0){ return; } int num = 0 ; //要分割的份数 HashMap<Integer , Bitmap> mMap = new HashMap<>(); //保存bitmap的 hashmap Bitmap mbitmap = null; //切割后的bitmap Rect rect = null; BitmapRegionDecoder bitmapRegionDecoder = null; int height = bitmap.getHeight(); //bitmap的高度和寬度 num = height / 4000; if(height % 4000 > 0){ //如果height对4000取余未除尽,则n加1 num++; } try{ bitmapRegionDecoder = BitmapRegionDecoder.newInstance(Bitmap2IS(bitmap), false); for(int i = 0 ; i < num ; i ++){ if( num - i == 1 ){ rect = new Rect(0,4000 * i,bitmap.getWidth() ,height); }else{ rect = new Rect(0,4000 * i,bitmap.getWidth() ,4000 * (i+1)); } mbitmap = bitmapRegionDecoder.decodeRegion(rect,null); mMap.put(i, mbitmap); } Message msg = Message.obtain(); msg.obj = mMap; handler.sendMessage(msg); }catch (Exception e){ return; } }
0 0
- ImageView在开启硬件加速时加载长图
- 开启硬件加速时Web页面绘制流程
- 开启硬件加速时Web页面绘制流程
- DirectX 开启硬件加速
- chrome如何开启硬件加速?
- win2003开启硬件加速
- 开启与关闭硬件加速
- android模拟器开启硬件加速
- Android开启硬件加速
- css开启硬件加速
- 用CSS开启硬件加速
- 如何开启浏览器硬件加速
- 开启硬件加速的方式
- 基于xUtils3的在listview中加载长图
- Android 加载长图
- 给Windows Server2008开启硬件加速
- win8中virtualbox开启硬件加速
- Android 开启或关闭硬件加速
- Lapack安装与测试
- leetcode-10 Regular Expression Matching
- SQL Server 2008 数据库同步
- Block的简单记录
- LeetCode(73)Set Matrix Zeroes
- ImageView在开启硬件加速时加载长图
- 解决js 在onkeydown事件按键停顿问题
- Objective-C Runtime 运行时之一:类与对象
- hdu 4427 三维dp
- modal一个导航控制器
- Eclipse中的Maven项目一键部署到Tomcat服务器 - 支持多环境部署
- codeforces 574D. Bear and Blocks
- cortex-m3 NVIC优先级一角
- Eclipse项目往Android studio 上移植 所出现的bug 和问题