編輯:關於Android編程
/**
* @author intbird@163.com
* @time 20140606
*/
package com.intbird.utils;
import java.io.File;
import com.yilake.store.FileHelper;
import android.graphics.Bitmap;
import android.os.Environment;
import android.util.LruCache;
public class CacheManager {
//單例
private static CacheManager cacheInstance;
//內存緩存大小
private final int MEMO_CACHE_SIZE=((int)(Runtime.getRuntime().maxMemory()/1024));
//文件緩存大小
private final int DISK_CACHE_SIZE=1024*1024*100;
//內存緩存
private LruCache mMemoryCache;
//文件緩存
private DiskLruCache mDiskLruCache;
private String cacheUrl="";
public CacheManager() {
//內存緩存
mMemoryCache=new LruCache(MEMO_CACHE_SIZE){
protected int sizeOf(String key, Bitmap bitmap) {
return bitmap.getByteCount()/1024;
};
};
//文件緩存
setBitmapFileCacheDir(FileHelper.DISK_CACHE_FILEDIR);
}
/**
* 獲取單例
* @return
*/
public static CacheManager getInstance() {
if(cacheInstance==null){
cacheInstance=new CacheManager();
}
return cacheInstance;
}
/**
* 設置緩存目錄;
* @param cacheDir
*/
public void setBitmapFileCacheDir(String cacheDir){
File cacheFile= getDiskFileCache(cacheDir);
cacheUrl=cacheFile.getAbsolutePath();
mDiskLruCache=DiskLruCache.openCache(cacheFile, DISK_CACHE_SIZE);
}
/**
* 返回緩存目錄路徑
* @return
*/
public String getBitmapFileCacheDir(){
return cacheUrl;
}
//通用外部調用
public void addBitmapToCache(String fileUrl, Bitmap bitmap) {
addBitmapToMemory(fileUrl,bitmap);
addBitmapToDisk(fileUrl,bitmap);
}
public Bitmap getBitmapFromCache(String key){
Bitmap bmp=null;
bmp=getBitmapFromMemory(key);
if(bmp==null){
bmp=getBitmapFromDisk(key);
}
return bmp;
}
/**
* 圖片加入內存緩存
* @param key
* @param bitmap
*/
private void addBitmapToMemory(String key,Bitmap bitmap){
if(getBitmapFromMemory(key)==null){
mMemoryCache.put(key, bitmap);
}
}
/**
* 獲取內存緩存圖片
* @param key
* @return
*/
private Bitmap getBitmapFromMemory(String key){
return mMemoryCache.get(key);
}
/**
* 將圖片加入文件緩存
* @param key
* @param bitmap
*/
private void addBitmapToDisk(String key,Bitmap bitmap){
if (mDiskLruCache != null && mDiskLruCache.get(key) == null) {
mDiskLruCache.put(key, bitmap);
}
}
/**
* 從文件緩存中獲取圖片
* @param key
* @return
*/
private Bitmap getBitmapFromDisk(String key){
if (mDiskLruCache != null) {
return mDiskLruCache.get(key);
}
return null;
}
/**
* 獲取緩存目錄
* @return
*/
public static File getDiskFileCache(String cacheDir){
String cachePath =Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||
!Environment.isExternalStorageRemovable() ?
Environment.getExternalStorageDirectory().getPath():
Environment.getDataDirectory().getPath();
File file =new File(cachePath + File.separator + cacheDir);
if(!file.exists()) file.mkdir();
return file;
}
}
Android RecyclerView 上拉加載更多及下拉刷新功能的實現方法
RecyclerView 已經出來很久了,但是在項目中之前都使用的是ListView,最近新的項目上了都大量的使用了RecycleView.尤其是瀑布流的下拉刷新,網上吧
Android 四大組件學習之Activity一
Activity是Android四大組件中最基礎也是最常用的組件之一。Activity作為一個應用程序組件,提供了一個與用戶交互的界面。可以這麼說Activity是和用戶
Android 自定義SeekBar動態改變硬件音量大小實現和音量鍵的同步(推薦)
1,上圖:2,代碼:MainActivity.Javapackage com.hero.zhaoq.seekbarchangeddemo;import android.c
Android中常見Intent習慣用法-上篇(附源碼下載)
發送短信 發送短信的時候,我們要使用的action是Intent.ACTION_SENDTO,並且要指定其URI是smsto:協議,這樣能保證是短信應用接