一、应用程序上下文
Android 应用程序上下文: 扩展 Application 类 ; AndroidManifest.xml 中注册 <application android:name=".AppContext" />
BaseApplication extend Application ;
AppContext extend BaseApplication
BaseApplication 功能解析:
1、context
private static Context sContext;
private static Resources sResources;
@Override
public void onCreate() {
super.onCreate();
sContext=getApplicationContext();
sResources=sContext.getResources();
}
public static synchronized Context context(){
return sContext;
}
public static Resources resources(){
return sResources;
}
2、showToast : Toast消息提醒,防止重复或间隔时间过短
private static String sLastToastMessage = "";
private static long sLastToastTime;
public static void showToast(int message) {
showToast(message, Toast.LENGTH_LONG, 0);
}
public static void showToast(String message) {
showToast(message, Toast.LENGTH_LONG, 0);
}
public static void showToastShort(int message) {
showToast(message, Toast.LENGTH_SHORT, 0);
}
public static void showToastShort(String message) {
showToast(message, Toast.LENGTH_SHORT, 0);
}
public static void showToast(String message, int duration, int icon) {
showToast(message, duration, icon, Gravity.BOTTOM);
}
public static void showToast(int message, int duration, int icon) {
showToast(resources().getString(message), duration, icon, Gravity.BOTTOM);
}
public static void showToast(int message, int duration, int icon, int gravity) {
showToast(resources().getString(message), duration, icon, gravity);
}
public static void showToast(int message, int duration, int icon, int gravity, Object... args) {
showToast(resources().getString(message, args), duration, icon, gravity);
}
public static void showToast(String message, int duration, int icon, int gravity) {
if (message != null && !message.equalsIgnoreCase("")) {
if (message.equalsIgnoreCase(sLastToastMessage) ||
Math.abs(sLastToastTime - System.currentTimeMillis()) < 2000) {
return;
}
View view = LayoutInflater.from(context()).inflate(R.layout.view_toast, null);
TextView tvMessage = (TextView) view.findViewById(R.id.tv_message);
ImageView ivIcon = (ImageView) view.findViewById(R.id.iv_icon);
tvMessage.setText(message);
if (icon != 0) {
ivIcon.setImageResource(icon);
ivIcon.setVisibility(View.VISIBLE);
}
Toast toast = new Toast(context());
toast.setView(view);
if (gravity == Gravity.CENTER)
toast.setGravity(gravity, 0, 0);
else
toast.setGravity(gravity, 0, 35); // margin-bottom:35
toast.setDuration(duration);
toast.show();
sLastToastMessage = message;
sLastToastTime = System.currentTimeMillis();
}
}
view_toast.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/toast_background">
<ImageView
android:id="@+id/iv_icon"
android:layout_width="wrap_content"
android:layout_height="40.0dip"
android:layout_centerVertical="true"
android:layout_marginRight="8dp"
android:scaleType="fitCenter"
android:visibility="gone" />
<TextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignWithParentIfMissing="true"
android:layout_toRightOf="@id/iv_icon"
android:gravity="center_vertical"
android:textColor="@color/white"
android:textSize="16.0dip" />
</LinearLayout>
3、sharePreference : 首选项的setter与getter , editor提交方式:commit vs. apply
private static final String PREFERENCE_NAME="oschina.pref";
public static SharedPreferences getPreferences(){
return context().getSharedPreferences(PREFERENCE_NAME,Context.MODE_MULTI_PROCESS);
}
public static void preference_editor_commit(SharedPreferences.Editor editor){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.GINGERBREAD){
editor.apply();
}else{
editor.commit();
}
}
public static void setPreference(String key,int value){
SharedPreferences.Editor editor=getPreferences().edit();
editor.putInt(key,value);
preference_editor_commit(editor);
}
public static void setPreference(String key,boolean value){
SharedPreferences.Editor editor=getPreferences().edit();
editor.putBoolean(key, value);
preference_editor_commit(editor);
}
public static void setPreference(String key,String value){
SharedPreferences.Editor editor=getPreferences().edit();
editor.putString(key, value);
preference_editor_commit(editor);
}
public static int getPreference(String key,int defValue){
return getPreferences().getInt(key,defValue);
}
public static boolean getPreference(String key,boolean defValue){
return getPreferences().getBoolean(key,defValue);
}
public static String getPreference(String key,String defValue){
return getPreferences().getString(key,defValue);
}
4、BaseApplication 完整代码
package com.yizhui.oschina.base;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Build;
import android.view.Gravity;
import android.widget.Toast;
/**
* Created by Yizhui on 2016/5/21.
*/
public class BaseApplication extends Application {
private static Context sContext;
private static Resources sResources;
private static String sLastToastMessage="";
private static long sLastToastTime;
private static final String PREFERENCE_NAME="oschina.pref";
@Override
public void onCreate() {
super.onCreate();
sContext=getApplicationContext();
sResources=sContext.getResources();
}
public static synchronized Context context(){
return sContext;
}
public static Resources resources(){
return sResources;
}
public static SharedPreferences getPreferences(){
return context().getSharedPreferences(PREFERENCE_NAME,Context.MODE_MULTI_PROCESS);
}
public static void preference_editor_commit(SharedPreferences.Editor editor){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.GINGERBREAD){
editor.apply();
}else{
editor.commit();
}
}
public static void setPreference(String key,int value){
SharedPreferences.Editor editor=getPreferences().edit();
editor.putInt(key,value);
preference_editor_commit(editor);
}
public static void setPreference(String key,boolean value){
SharedPreferences.Editor editor=getPreferences().edit();
editor.putBoolean(key, value);
preference_editor_commit(editor);
}
public static void setPreference(String key,String value){
SharedPreferences.Editor editor=getPreferences().edit();
editor.putString(key, value);
preference_editor_commit(editor);
}
public static int getPreference(String key,int defValue){
return getPreferences().getInt(key,defValue);
}
public static boolean getPreference(String key,boolean defValue){
return getPreferences().getBoolean(key,defValue);
}
public static String getPreference(String key,String defValue){
return getPreferences().getString(key,defValue);
}
public static void showToast(int message){
showToast(message,Toast.LENGTH_LONG,0);
}
public static void showToast(String message){
showToast(message,Toast.LENGTH_LONG,0);
}
public static void showToastShort(int message){
showToast(message,Toast.LENGTH_SHORT,0);
}
public static void showToastShort(String message){
showToast(message,Toast.LENGTH_SHORT,0);
}
public static void showToast(String message,int duration,int icon){
showToast(message,duration,icon,Gravity.BOTTOM);
}
public static void showToast(int message,int duration,int icon){
showToast(resources().getString(message),duration,icon, Gravity.BOTTOM);
}
public static void showToast(int message,int duration,int icon,int gravity){
showToast(resources().getString(message),duration,icon,gravity);
}
public static void showToast(int message,int duration,int icon,int gravity,Object... args){
showToast(resources().getString(message,args),duration,icon,gravity);
}
public static void showToast(String message,int duration,int icon,int gravity){
if(message!=null && !message.equalsIgnoreCase("")){
if(message.equalsIgnoreCase(sLastToastMessage)||
Math.abs(sLastToastTime-System.currentTimeMillis())<2000){
return ;
}
//View view= LayoutInflater.from(context()).inflate(R.layout.view_toast);
Toast toast=new Toast(context());
toast.setText(message);
toast.setDuration(duration);
toast.setGravity(gravity, 0, 0);
toast.show();
sLastToastMessage=message;
sLastToastTime=System.currentTimeMillis();
}
}
}
浙公网安备 33010602011771号