在前面的文章中,我們做了基礎的網(wǎng)絡庫Lib衣摩、數(shù)據(jù)庫Lib、UI庫Lib捂敌,現(xiàn)在還有一節(jié)重要的Lib庫等著我們去搭建艾扮,那就是功能庫。
功能庫中存放一些常用的工具類占婉,比如時間/日期工具泡嘴、文件處理工具、集合判斷工具逆济、Toast工具酌予、SharedPreferences(偏好)工具等。下面我們開始處理
-
創(chuàng)建module:
- 在工程目錄下的build.gradle中ext中添加如下版本號:
// Common Library版本號
commonVersionCode = 1
commonVersionName = "1.0" - 在common目錄下的build.gradle中修改為如下樣式(保持與其它Library相同樣式):
apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.commonVersionCode
versionName rootProject.ext.commonVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile("com.android.support.test.espresso:espresso-core:$rootProject.ext.androidTestCompileVersion", {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "com.android.support:appcompat-v7:$rootProject.ext.supportVersion"
testCompile "junit:junit:$rootProject.ext.junitVersion"
}
- 在common目錄下纹腌,打開src->main下的AndroidManifest.xml霎终,將application標簽刪除。
- 接下來升薯,我們先在common目錄下的com.monch.common包下莱褒,添加第一個工具類,在Android中最常用的就是Toast涎劈,筆者的習慣是創(chuàng)建一個類广凸,起名叫T.java,代碼如下:
public final class T {
private T() {}
public static void ss(Context context, @StringRes int id) {
Toast.makeText(context, id, Toast.LENGTH_SHORT).show();
}
public static void ss(Context context, CharSequence text) {
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
public static void sl(Context context, @StringRes int id) {
Toast.makeText(context, id, Toast.LENGTH_LONG).show();
}
public static void sl(Context context, CharSequence text) {
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}
這個類我們簡單處理一下蛛枚,如果有需要修改Toast的樣式或其它需求谅海,可以直接在這里修改。這樣大家在使用的時候蹦浦,會非常方便扭吁,例如T.ss("xxx");或T.sl("xxx"); 這兩個方法的區(qū)別是顯示的時間長短。
再來個字符串工具類
public class StringUtils {
private StringUtils() {}
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
public static boolean isNotEmpty(CharSequence cs) {
return !isEmpty(cs);
}
public static boolean equals(String str1, String str2) {
return (str1 == null && str2 == null) ||
(isNotEmpty(str1) && str1.equals(str2));
}
public static boolean isWebSite(String string) {
return isNotEmpty(string) && string.matches(Patterns.WEB_URL.pattern());
}
public static boolean isPhone(String string) {
return isNotEmpty(string) && string.matches(Patterns.PHONE.pattern());
}
public static boolean isEmail(String string) {
return isNotEmpty(string) && string.matches(Patterns.EMAIL_ADDRESS.pattern());
}
}
再來一個偏好存儲工具類
public final class PreferenceUtils {
private PreferenceUtils() {}
private static SharedPreferences sp;
/**
* 獲取偏好執(zhí)行器
* @return
*/
public static void init(Context context) {
sp = context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
}
/**
* 添加偏好內容:異步盲镶,不會引起長時間等待
* @param key
* @param value
*/
public static void put(String key, Object value) {
if (StringUtils.isEmpty(key) || value == null) return;
SharedPreferences.Editor editor = sp.edit();
if (value instanceof String ||
value instanceof StringBuilder ||
value instanceof StringBuffer) {
editor.putString(key, String.valueOf(value));
editor.apply();
} else if (value instanceof Integer) {
editor.putInt(key, (int) value);
editor.apply();
} else if (value instanceof Long) {
editor.putLong(key, (long) value);
editor.apply();
} else if (value instanceof Float) {
editor.putFloat(key, (float) value);
editor.apply();
} else if (value instanceof Boolean) {
editor.putBoolean(key, (boolean) value);
editor.apply();
}
}
/**
* 添加偏好內容:同步侥袜,可能會引起長時間等待
* @param key
* @param value
* @return 添加是否成功
*/
public static boolean putSync(String key, Object value) {
if (StringUtils.isEmpty(key) || value == null)
return false;
SharedPreferences.Editor editor = sp.edit();
if (value instanceof String ||
value instanceof StringBuilder ||
value instanceof StringBuffer) {
editor.putString(key, String.valueOf(value));
return editor.commit();
} else if (value instanceof Integer) {
editor.putInt(key, (int) value);
return editor.commit();
} else if (value instanceof Long) {
editor.putLong(key, (long) value);
return editor.commit();
} else if (value instanceof Float) {
editor.putFloat(key, (float) value);
return editor.commit();
} else if (value instanceof Boolean) {
editor.putBoolean(key, (boolean) value);
return editor.commit();
}
return false;
}
/**
* 獲取字符串
* @param key
* @return
*/
public static String getString(String key) {
return getString(key, null);
}
/**
* 獲取字符串
* @param key
* @param defaultValue
* @return
*/
public static String getString(String key, String defaultValue) {
return sp.getString(key, defaultValue);
}
/**
* 獲取整型
* @param key
* @return
*/
public static int getInt(String key) {
return getInt(key, 0);
}
/**
* 獲取整型
* @param key
* @param defaultValue
* @return
*/
public static int getInt(String key, int defaultValue) {
return sp.getInt(key, defaultValue);
}
/**
* 獲取長整型
* @param key
* @return
*/
public static long getLong(String key) {
return getLong(key, 0L);
}
/**
* 獲取長整型
* @param key
* @param defaultValue
* @return
*/
public static long getLong(String key, long defaultValue) {
return sp.getLong(key, defaultValue);
}
/**
* 獲取浮點型
* @param key
* @return
*/
public static float getFloat(String key) {
return getFloat(key, 0F);
}
/**
* 獲取浮點型
* @param key
* @param defaultValue
* @return
*/
public static float getFloat(String key, float defaultValue) {
return sp.getFloat(key, defaultValue);
}
/**
* 獲取布爾型
* @param key
* @return
*/
public static boolean getBoolean(String key) {
return getBoolean(key, false);
}
/**
* 獲取布爾型
* @param key
* @param defaultValue
* @return
*/
public static boolean getBoolean(String key, boolean defaultValue) {
return sp.getBoolean(key, defaultValue);
}
/**
* 移除偏好內容:異步,不會引起長時間等待
* @param key
*/
public static void remove(String key) {
if (StringUtils.isEmpty(key)) return;
SharedPreferences.Editor editor = sp.edit();
editor.remove(key);
editor.apply();
}
/**
* 移除偏好內容:同步溉贿,可能會引起長時間等待
* @param key
* @return
*/
public static boolean removeSync(String key) {
if (StringUtils.isEmpty(key)) return false;
SharedPreferences.Editor editor = sp.edit();
editor.remove(key);
return editor.commit();
}
}
我們暫時先添加這幾個工個類枫吧,接下來使用到什么,我們再添加就可以了宇色。
查看源碼請移步GitHub