- 浏览: 59072 次
- 性别:
- 来自: 南京
最新评论
-
cuixuelei:
图形中RChart Demo 字样,怎么去掉
android饼状图表 -
Mr.Cheney:
代码太乱了
gallery加载大量图片时内存溢出的解决方法(一) -
ygswine:
最后一点是否可以在发送QQ邮箱,成功后程序关闭,在Activi ...
开机实现将手机联系人、通话记录、手机号码、手机所在地、发送到指定邮箱里,失败则发送短信到指定手机之(获取联系人和电话号码、通话记录) -
zxuenet:
erwin_king 写道因为这个时收费的,所以会有的demo ...
android饼状图表 -
mvpstevenlin:
博主,麻烦发一份我学习吧 1577360984@qq.com, ...
开机实现将手机联系人、通话记录、手机号码、手机所在地、发送到指定邮箱里,失败则发送短信到指定手机之(获取联系人和电话号码、通话记录)
这只是我以前开始搞android事留下的代码,发现还是存在问题的,我现在把代码放出来,仅供参考,如没有帮助就不要看了,
Gallery加载大量图片的时候容易内存溢出,但是如果及时回收不用的图片,在使用的时候再重新加载,这样就不会出现内存溢出的现象了,所以一定要将加载图片的地址保存起来,在加载图片的时候将生成的bitmap对象用图片地址的字符串保存在map里,不用的时候再根据key值回收。
下面是实现的几个主要部分
1、工具类
public class ImageManager {
static int index = 0;
public static ConcurrentHashMap<String, Bitmap> imageMap = new ConcurrentHashMap<String, Bitmap>();
public static String ISFALSE="ISFALSE";
public static String ISTRUE="ISTRUE";
public static List<String[]> getSD(String dir) {
List<String[]> it = new ArrayList<String[]>();
File f = new File(dir);
File[] files = f.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
String[] s = new String[2];
File file = files[i];
if (file.isFile()) {
if (getImageFile(file.getPath())) {
System.out.println("file " + String.valueOf(file));
s[0] = file.getPath();
s[1] = file.getName();
it.add(s);
}
} else if(file.isDirectory()){
System.out.println("file.isDirectory() " + file.getAbsolutePath());
getSD(String.valueOf(file.getAbsolutePath()));
}
}
}
return it;
}
public static boolean getImageFile(String fName) {
boolean re;
String end = fName
.substring(fName.lastIndexOf(".") + 1, fName.length())
.toLowerCase();
if (end.equals("jpg") || end.equals("gif") || end.equals("png")
|| end.equals("jpeg") || end.equals("bmp")) {
re = true;
} else {
re = false;
}
return re;
}
public static Bitmap getImage(String fileName) {
try {
File file = new File(fileName);
Bitmap bitmap = null;
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
addImage(fileName, bitmap);
return bitmap;
} catch (Exception e) {
return null;
}
}
public static Bitmap getRefImage(String fileName) {
try {
File file = new File(fileName);
Bitmap bitmap = null;
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
addImage(fileName, bitmap);
return createReflectionImageWithOrigin(fileName, bitmap);
} catch (Exception e) {
return null;
}
}
public static void addImage(String uri, Bitmap bitmap) {
imageMap.put(uri.toString(), bitmap);
}
private static void clearBitmap(String uri) {
if (imageMap.get(uri) != null) {
System.out.println("remove image:" + uri);
imageMap.get(uri).recycle();
imageMap.remove(uri);
}
}
// 清空左边到0、右边到最后,保留中间
public static List<ImageMessage> clearImage(List<ImageMessage> imageList,
int start, int end) {
if (start >= 0 && end < imageList.size()) {
for (int i = 0; i < start; i++) {
if (imageList.get(i).getIsNull().equals(ISFALSE)) {
imageList.get(i).setIsNull(ISTRUE);
clearBitmap(imageList.get(i).getPath().toString());
clearBitmap(imageList.get(i).getPath().toString() + "1");
clearBitmap(imageList.get(i).getPath().toString() + "2");
imageList.get(i).setImage(null);
}
}
for (int i = end + 1; i < imageList.size(); i++) {
if (imageList.get(i).getIsNull().equals(ISFALSE)) {
imageList.get(i).setIsNull(ISTRUE);
clearBitmap(imageList.get(i).getPath().toString());
clearBitmap(imageList.get(i).getPath().toString() + "1");
clearBitmap(imageList.get(i).getPath().toString() + "2");
imageList.get(i).setImage(null);
}
}
}
return imageList;
}
// 获得带倒影的图片方法
public static Bitmap createReflectionImageWithOrigin(String str,
Bitmap bitmap) {
final int reflectionGap = 0;//原图片与倒影图片之间的缝隙
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Matrix matrix = new Matrix();
matrix.preScale(1, -1);
Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, height / 2,
width, height / 2, matrix, false);
addImage(str + "1", reflectionImage);
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
addImage(str + "2", bitmapWithReflection);
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(bitmap, 0, 0, null);
Paint deafalutPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap, deafalutPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
- LoadingImage.rar (76.6 KB)
- 下载次数: 292
评论
发表评论
-
android 使用des算法
2012-02-09 12:52 1927转自:http://www.linuxidc.com/Linu ... -
Toast显示图片
2012-02-02 12:56 1422转自:http://blog.csdn.net/ling ... -
文字中间加横线效果
2012-02-02 11:00 1824priceTV.setText("价格:2.00 ... -
开机实现将手机联系人、通话记录、手机号码、手机所在地、发送到指定邮箱里,失败则发送短信到指定手机之(apn操作)
2011-11-08 12:51 1298static Uri uri = Uri.parse(&qu ... -
开机实现将手机联系人、通话记录、手机号码、手机所在地、发送到指定邮箱里,失败则发送短信到指定手机之(gps操作)
2011-11-08 12:48 1545public static String getCityNam ... -
开机实现将手机联系人、通话记录、手机号码、手机所在地、发送到指定邮箱里,失败则发送短信到指定手机之(获取联系人和电话号码、通话记录)
2011-11-08 12:46 2979首先声明者只是一个个 ... -
Android Activity界面切换添加动画特效
2011-06-14 13:48 1179在Android 2.0之后有了overridePending ... -
android 权限介绍(二)
2011-06-02 17:08 981SYSTEM_ALERT_WINDOW 允许 ... -
android 权限介绍(一)
2011-06-02 17:00 796Manifest.permission 这个类定义了andro ... -
编写高效的Android代码(提高运行速度,节省电量)
2011-06-02 16:28 1256编写高效的Android代码( ... -
[整理]Selector、shape详解
2011-06-02 15:15 4133Selector、shape详解(一) Selector的结 ... -
[转帖]Android自定义Activity漂亮跳转效果
2011-05-31 20:10 1242Android自定义Activity漂亮跳转效果 ... -
gallery加载大量图片时内存溢出的解决方法(三)
2011-05-31 19:14 20036、ImageAdapter public class Im ... -
gallery加载大量图片时内存溢出的解决方法(二)
2011-05-31 18:56 2509Paint deafalutPaint = new Paint ... -
ListView学习(三) 加载视野内的数据
2011-05-31 17:13 1741在滑动的过程中,只有在视野中的item才会加载数据,其他的其实 ... -
ListView学习(二) 点击条目隐藏展开正文
2011-05-28 00:00 3782本篇是listview条目点击展开或者隐藏内容,本文参照了an ... -
[整理] 操作通话记录(一)
2011-05-25 11:31 1845/* *为了方便后面页面的封装,这里定义了一个实体类 ... -
[整理] 操作通话记录(二)
2011-05-25 11:25 1083//处理时间 public String for ... -
android饼状图表
2011-05-15 15:12 4147相信图表再很多统计应 ... -
ListView学习(一) 滑动分页时底部显示进度条
2011-05-15 14:24 2616我们在使用listview时难免会遇到分页的情况,既然是分页, ...
相关推荐
无人机最强算法源码,易于部署和学习交流使用
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
此数据集主要是一个跟酒店类型有关的数据集,源于kaggle网站上的Guatemalas_Travel数据集,因设计所需,本人对原来的数据集进行了必要的修改。
3D相册.zip
数据来源:中国统计NJ-2023版
3dmax空对象清除器,在场景中找到空对象,向你显示这些对象的列表,并允许你从场景中删除它们。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
数据来源:中国统计NJ-2023版
数据要素资产化与数据资产入表路线框架总体规划方案.pptx
施耐德电气 8100C 8200C 8300C 用户手册
无人机最强算法源码,易于部署和学习交流使用
员工培训方案gl.ppt
旅行商问题
小米扫地机器人工程源码程序STM32103 freeRTOS设计源代码,某米早起的扫地机器人的源码,使用的是STM32开发,freeRTOS系统,包含完整的工程源码,可以做为你的学习设计参考。 HARDWARE文件夹 硬件初始化源文件 application_Robot 机器人行为相关的文件 application_Share 机器人共享相关的文件(一般为算法) application_Motor 机器人电机应用相关文件 application_Key 机器人按键应用相关文件 application_Led 机器人LED应用相关文件 application_Led 机器人adc获取与处理应用相关文件 application_PowerChip 机器人电池管理芯片与充电应用相关文件 application_Bmi160 机器人BMI160 陀螺仪芯片 应用相关文件 application_Drop 机器人掉落传感器应用相关文件 application_UltraSonic 机器人超声波传感器应用相关文件 appl
39黎秋菊.ipynb
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
模板描述:域名注册查询 微信小程序。域名注册查询的微信小程序页面源码是使用微信WEB开发者工具开发,亲测可直接运行。该程序从设计上满足了相关应用服务的设计要求,是一款非常值得学习简介的DEMO小程序源码。
无人机最强算法源码,易于部署和学习交流使用
DCS 400 手册
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。