现在正在做一个测绘的软件,需要加载100M-200M左右的区域图,遇到的问题就是如何能讲这么大的图片加载进去?
求高手,前提是不损失精度(像素)
求高手,前提是不损失精度(像素)
解决方案 »
- 关于android自动化测试的那些事!
- TableLayout 问题
- 关于activity显示的问题
- jsoup问题
- Excessive JNI global references,VM aborting.错误是怎么一回事?
- android 左右滑屏怎么实现 哪位大神教教我
- listview中的每个item定义的是一个tablelayout 然后呢tablelayout背景是张图片 问 我要怎么才能实现点击item变色
- 谁能告诉我个eclipse或者myeclipse能装成功android环境的方法
- android短信收件人UI效果
- android studioyn模拟器只可以选择一个,别的怎么下载?
- 如何画出移动的心电图?
- pendingIntent会被系统杀死吗?
第二种方法你要读取文件屏幕要显示的数据,首先得先把一百M的文件载进来,然后每次读取的时候还要skip,而从java的源代码可以看出来
public long skip(long n) throws IOException { long remaining = n;
int nr;
if (skipBuffer == null)
skipBuffer = new byte[SKIP_BUFFER_SIZE]; byte[] localSkipBuffer = skipBuffer;
if (n <= 0) {
return 0;
} while (remaining > 0) {
nr = read(localSkipBuffer, 0,
(int) Math.min(SKIP_BUFFER_SIZE, remaining));
if (nr < 0) {
break;
}
remaining -= nr;
}
skip方法并不是直接“跳到”你要读取的位置,还是要遍历。第一种方法 楼主可以找或者自己写切分图片的工具,把大图切成多个2-4个屏幕大小的小图,就像楼上说的那样就行了。
链表根据你现在的坐标存放应该存放的图。比如现在是初始化 链表里只有编号是0的图,你移动到800,800的时候(假设切片是1000*1000的),这时候你的链表里就是0,1,2,3。
具体到画的时候就是一个for循环 然后把这些图画出来就可以,再具体就是0的全局坐标是0,0,图1的全局坐标是0,1000;2的坐标是1000,0;3的坐标是1000,1000;然后你画的时候在全局坐标的基础上加个偏移,作为视窗坐标就可以了。