自己开发用到的某些工具类

转自:http://blog.csdn.net/zhou0614/article/details/53351857

一、全屏工具类(真对某些有虚拟按键的手机,如Google Nexus系列)

[java]  view plain  copy
  1. import android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.Color;  
  4. import android.os.Build;  
  5. import android.util.Log;  
  6. import android.view.View;  
  7. import android.view.Window;  
  8. import android.view.WindowManager;  
  9.   
  10. /** 
  11.  *  
  12.  * Created by xl on 2016/9/7. 
  13.  */  
  14.   
  15. public class FullScreenUtils {  
  16.     private static final String TAG = "screen util";  
  17.   
  18.     public static void transActionAndNavigation(Window window){  
  19.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  
  20.             window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  21.             window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  22.         }  
  23. //        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
  24. //            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS  
  25. //                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  26. //            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
  27. //                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
  28. //                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);  
  29. //            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
  30. //            window.setStatusBarColor(Color.TRANSPARENT);  
  31. //            window.setNavigationBarColor(Color.TRANSPARENT);  
  32. //        }  
  33.     }  
  34.   
  35.     public static void normalActionAndNavigation(Window window){  
  36.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  
  37.             window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  38.             window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
  39.         }  
  40.         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
  41.             window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);  
  42.             window.clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
  43.         }  
  44.     }  
  45.   
  46.     public static void toggleHideyBar(Window window) {  
  47.   
  48.         // The UI options currently enabled are represented by a bitfield.  
  49.         // getSystemUiVisibility() gives us that bitfield.  
  50.         int uiOptions = window.getDecorView().getSystemUiVisibility();  
  51.         int newUiOptions = uiOptions;  
  52.         boolean isImmersiveModeEnabled =  
  53.                 ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);  
  54.         if (isImmersiveModeEnabled) {  
  55.             Log.i(TAG, "Turning immersive mode mode off. ");  
  56.         } else {  
  57.             Log.i(TAG, "Turning immersive mode mode on.");  
  58.         }  
  59.   
  60.         // Navigation bar hiding:  Backwards compatible to ICS.  
  61.         if (Build.VERSION.SDK_INT >= 14) {  
  62.             newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;  
  63.         }  
  64.   
  65.         // Status bar hiding: Backwards compatible to Jellybean  
  66.         if (Build.VERSION.SDK_INT >= 16) {  
  67.             newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;  
  68.         }  
  69.   
  70.         // Immersive mode: Backward compatible to KitKat.  
  71.         // Note that this flag doesn't do anything by itself, it only augments the behavior  
  72.         // of HIDE_NAVIGATION and FLAG_FULLSCREEN.  For the purposes of this sample  
  73.         // all three flags are being toggled together.  
  74.         // Note that there are two immersive mode UI flags, one of which is referred to as "sticky".  
  75.         // Sticky immersive mode differs in that it makes the navigation and status bars  
  76.         // semi-transparent, and the UI flag does not get cleared when the user interacts with  
  77.         // the screen.  
  78.         if (Build.VERSION.SDK_INT >= 18) {  
  79.             newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;  
  80.         }  
  81.   
  82.         window.getDecorView().setSystemUiVisibility(newUiOptions);  
  83.     }  
  84. }  

二、SharePreference工具类

[java]  view plain  copy
  1. import android.content.Context;  
  2. import android.content.SharedPreferences;  
  3.   
  4. /** 
  5.  * 保存资源到本地 
  6.  * Created by xl on 2016/8/11. 
  7.  */  
  8. public class SharedPreferencesUtils {  
  9.     /** 
  10.      * 保存在手机里面的文件名 
  11.      */  
  12.     private static final String FILE_NAME = "share_date";  
  13.   
  14.   
  15.     /** 
  16.      * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 
  17.      * 
  18.      * @param context 
  19.      * @param key 
  20.      * @param object 
  21.      */  
  22.     public static void setParam(Context context, String key, Object object) {  
  23.   
  24.         String type = object.getClass().getSimpleName();  
  25.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);  
  26.         SharedPreferences.Editor editor = sp.edit();  
  27.   
  28.         if ("String".equals(type)) {  
  29.             editor.putString(key, (String) object);  
  30.         } else if ("Integer".equals(type)) {  
  31.             editor.putInt(key, (Integer) object);  
  32.         } else if ("Boolean".equals(type)) {  
  33.             editor.putBoolean(key, (Boolean) object);  
  34.         } else if ("Float".equals(type)) {  
  35.             editor.putFloat(key, (Float) object);  
  36.         } else if ("Long".equals(type)) {  
  37.             editor.putLong(key, (Long) object);  
  38.         }  
  39.   
  40.         editor.commit();  
  41.     }  
  42.   
  43.   
  44.     /** 
  45.      * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 
  46.      * 
  47.      * @param context 
  48.      * @param key 
  49.      * @param defaultObject 
  50.      * @return 
  51.      */  
  52.     public static Object getParam(Context context, String key, Object defaultObject) {  
  53.         String type = defaultObject.getClass().getSimpleName();  
  54.         SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);  
  55.   
  56.         if ("String".equals(type)) {  
  57.             return sp.getString(key, (String) defaultObject);  
  58.         } else if ("Integer".equals(type)) {  
  59.             return sp.getInt(key, (Integer) defaultObject);  
  60.         } else if ("Boolean".equals(type)) {  
  61.             return sp.getBoolean(key, (Boolean) defaultObject);  
  62.         } else if ("Float".equals(type)) {  
  63.             return sp.getFloat(key, (Float) defaultObject);  
  64.         } else if ("Long".equals(type)) {  
  65.             return sp.getLong(key, (Long) defaultObject);  
  66.         }  
  67.   
  68.         return null;  
  69.     }  
  70. }  

三、软键盘弹出和关闭

[java]  view plain  copy
  1. import android.app.Activity;  
  2. import android.graphics.Rect;  
  3. import android.view.View;  
  4. import android.view.ViewTreeObserver;  
  5.   
  6. /** 
  7.  * 监听键盘 
  8.  * Created by xulu on 16/7/29. 
  9.  */  
  10. public class SoftKeyBoardListener {  
  11.     private View rootView;//activity的根视图  
  12.     int rootViewVisibleHeight;//纪录根视图的显示高度  
  13.     private OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener;  
  14.   
  15.     public SoftKeyBoardListener(Activity activity) {  
  16.         //获取activity的根视图  
  17.         rootView = activity.getWindow().getDecorView();  
  18.   
  19.         //监听视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变  
  20.         rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {  
  21.             @Override  
  22.             public void onGlobalLayout() {  
  23.                 //获取当前根视图在屏幕上显示的大小  
  24.                 Rect r = new Rect();  
  25.                 rootView.getWindowVisibleDisplayFrame(r);  
  26.                 int visibleHeight = r.height();  
  27.                 if (rootViewVisibleHeight == 0) {  
  28.                     rootViewVisibleHeight = visibleHeight;  
  29.                     return;  
  30.                 }  
  31.   
  32.                 //根视图显示高度没有变化,可以看作软键盘显示/隐藏状态没有改变  
  33.                 if (rootViewVisibleHeight == visibleHeight) {  
  34.                     return;  
  35.                 }  
  36.   
  37.                 //根视图显示高度变小超过200,可以看作软键盘显示了  
  38.                 if (rootViewVisibleHeight - visibleHeight > 200) {  
  39.                     if (onSoftKeyBoardChangeListener != null) {  
  40.                         onSoftKeyBoardChangeListener.keyBoardShow(rootViewVisibleHeight - visibleHeight);  
  41.                     }  
  42.                     rootViewVisibleHeight = visibleHeight;  
  43.                     return;  
  44.                 }  
  45.   
  46.                 //根视图显示高度变大超过200,可以看作软键盘隐藏了  
  47.                 if (visibleHeight - rootViewVisibleHeight > 200) {  
  48.                     if (onSoftKeyBoardChangeListener != null) {  
  49.                         onSoftKeyBoardChangeListener.keyBoardHide(visibleHeight - rootViewVisibleHeight);  
  50.                     }  
  51.                     rootViewVisibleHeight = visibleHeight;  
  52.                     return;  
  53.                 }  
  54.   
  55.             }  
  56.         });  
  57.     }  
  58.   
  59.     private void setOnSoftKeyBoardChangeListener(OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {  
  60.         this.onSoftKeyBoardChangeListener = onSoftKeyBoardChangeListener;  
  61.     }  
  62.   
  63.     public interface OnSoftKeyBoardChangeListener {  
  64.         void keyBoardShow(int height);  
  65.   
  66.         void keyBoardHide(int height);  
  67.     }  
  68.   
  69.     public static void setListener(Activity activity, OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {  
  70.         SoftKeyBoardListener softKeyBoardListener = new SoftKeyBoardListener(activity);  
  71.         softKeyBoardListener.setOnSoftKeyBoardChangeListener(onSoftKeyBoardChangeListener);  
  72.     }  
  73. }  

四、其他一些工具
[java]  view plain  copy
  1. import android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.Color;  
  4. import android.os.Build;  
  5. import android.util.DisplayMetrics;  
  6. import android.util.Log;  
  7. import android.view.Display;  
  8. import android.view.View;  
  9. import android.view.Window;  
  10. import android.view.WindowManager;  
  11. import android.view.inputmethod.InputMethodManager;  
  12.   
  13. import com.jyjapp.jyjzhibo.JYJApp;  
  14.   
  15. /** 
  16.  * 尺寸工具 
  17.  * Created by xulu on 16/8/10. 
  18.  */  
  19. public class Utils {  
  20.     /** 
  21.      * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
  22.      */  
  23.     public static int dip2px(Context context, float dpValue) {  
  24.         final float scale = context.getResources().getDisplayMetrics().density;  
  25.         return (int) (dpValue * scale + 0.5f);  
  26.     }  
  27.   
  28.     /** 
  29.      * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
  30.      */  
  31.     public static int px2dip(Context context, float pxValue) {  
  32.         final float scale = context.getResources().getDisplayMetrics().density;  
  33.         return (int) (pxValue / scale + 0.5f);  
  34.     }  
  35.   
  36.     /** 
  37.      * 获取屏幕宽高 
  38.      * 
  39.      * @param context 
  40.      * @return 
  41.      */  
  42.     public static int[] getScreenWidthAndHeight(Activity context) {  
  43.         WindowManager wm = context.getWindowManager();  
  44.         int width = wm.getDefaultDisplay().getWidth();  
  45.         int height1 = wm.getDefaultDisplay().getHeight();  
  46.         return new int[]{width, height1};  
  47.     }  
  48.   
  49.     /** 
  50.      * 隐藏键盘 
  51.      * 
  52.      * @param view 
  53.      */  
  54.     public static void hideKeyboard(View view) {  
  55.         InputMethodManager imm = (InputMethodManager) JYJApp.getInstance().getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);  
  56.         imm.hideSoftInputFromWindow(view.getWindowToken(), 0);  
  57.     }  
  58.   
  59.     /** 
  60.      * 显示键盘 
  61.      * 
  62.      * @param view 
  63.      */  
  64.     public static void showKeyboard(View view) {  
  65.         InputMethodManager imm = (InputMethodManager) JYJApp.getInstance().getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);  
  66.         imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);  
  67.     }  
  68.   
  69.     /** 
  70.      * 获取屏幕真实宽度,横屏时 
  71.      * 
  72.      * @param context 
  73.      * @return 
  74.      */  
  75.     public static int getScreentWidth(Activity context) {  
  76.         int widthPixels;  
  77.         WindowManager w = context.getWindowManager();  
  78.         Display d = w.getDefaultDisplay();  
  79.         DisplayMetrics metrics = new DisplayMetrics();  
  80.         d.getMetrics(metrics);  
  81.         // since SDK_INT = 1;  
  82.         widthPixels = metrics.widthPixels;  
  83.         // includes window decorations (statusbar bar/navigation bar)  
  84.         if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17)  
  85.             try {  
  86.                 widthPixels = (Integer) Display.class  
  87.                         .getMethod("getRawWidth").invoke(d);  
  88.             } catch (Exception ignored) {  
  89.             }  
  90.             // includes window decorations (statusbar bar/navigation bar)  
  91.         else if (Build.VERSION.SDK_INT >= 17)  
  92.             try {  
  93.                 android.graphics.Point realSize = new android.graphics.Point();  
  94.                 Display.class.getMethod("getRealSize",  
  95.                         android.graphics.Point.class).invoke(d, realSize);  
  96.                 widthPixels = realSize.x;  
  97.             } catch (Exception ignored) {  
  98.             }  
  99.         Log.e("realHightPixels:", widthPixels + "width");  
  100.         return widthPixels;  
  101.     }  
  102. }  

你可能感兴趣的:(自己开发用到的某些工具类)