-
Notifications
You must be signed in to change notification settings - Fork 74
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
胡涛
committed
Apr 10, 2017
1 parent
d423d62
commit ec4b694
Showing
130 changed files
with
992 additions
and
4,035 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<manifest package="com.aries.ui.widget"> | ||
|
||
</manifest> |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
200 changes: 200 additions & 0 deletions
200
library/src/main/java/com/aries/ui/view/title/StatusBarUtil.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,200 @@ | ||
package com.aries.ui.view.title; | ||
|
||
import android.annotation.TargetApi; | ||
import android.app.Activity; | ||
import android.graphics.Color; | ||
import android.os.Build; | ||
import android.view.View; | ||
import android.view.Window; | ||
import android.view.WindowManager; | ||
|
||
import java.lang.reflect.Field; | ||
import java.lang.reflect.Method; | ||
|
||
/** | ||
* Created: AriesHoo on 2017-02-16 14:38 | ||
* Function: 状态栏工具 | ||
* Desc: | ||
*/ | ||
public class StatusBarUtil { | ||
|
||
/** | ||
* 修改状态栏为全透明 | ||
* | ||
* @param activity | ||
*/ | ||
@TargetApi(19) | ||
public static void transparencyBar(Activity activity) { | ||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | ||
Window window = activity.getWindow(); | ||
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); | ||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | ||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE); | ||
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); | ||
window.setStatusBarColor(Color.TRANSPARENT); | ||
|
||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | ||
Window window = activity.getWindow(); | ||
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, | ||
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); | ||
} | ||
} | ||
|
||
/** | ||
* 修改状态栏颜色,支持4.4以上版本 | ||
* | ||
* @param activity | ||
* @param colorId | ||
*/ | ||
public static void setStatusBarColor(Activity activity, int colorId) { | ||
|
||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | ||
Window window = activity.getWindow(); | ||
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); | ||
window.setStatusBarColor(activity.getResources().getColor(colorId)); | ||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | ||
//使用SystemBarTint库使4.4版本状态栏变色,需要先将状态栏设置为透明 | ||
transparencyBar(activity); | ||
// SystemBarTintManager tintManager = new SystemBarTintManager(activity); | ||
// tintManager.setStatusBarTintEnabled(true); | ||
// tintManager.setStatusBarTintResource(colorId); | ||
} | ||
} | ||
|
||
/** | ||
* 设置状态栏黑色字体图标, | ||
* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android | ||
* | ||
* @param activity | ||
* @return 1:MIUUI 2:Flyme 3:android6.0 | ||
*/ | ||
public static int StatusBarLightMode(Activity activity) { | ||
int result = 0; | ||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | ||
if (MIUISetStatusBarLightMode(activity.getWindow(), true)) { | ||
result = 1; | ||
} else if (FlymeSetStatusBarLightMode(activity.getWindow(), true)) { | ||
result = 2; | ||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | ||
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); | ||
result = 3; | ||
} | ||
} | ||
return result; | ||
} | ||
|
||
/** | ||
* 已知系统类型时,设置状态栏黑色字体图标。 | ||
* 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android | ||
* | ||
* @param activity | ||
* @param type 1:MIUUI 2:Flyme 3:android6.0 | ||
*/ | ||
public static void StatusBarLightMode(Activity activity, int type) { | ||
if (type == 1) { | ||
MIUISetStatusBarLightMode(activity.getWindow(), true); | ||
} else if (type == 2) { | ||
FlymeSetStatusBarLightMode(activity.getWindow(), true); | ||
} else if (type == 3) { | ||
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); | ||
} | ||
|
||
} | ||
|
||
public static int StatusBarDarkMode(Activity activity) { | ||
int result = 0; | ||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { | ||
if (MIUISetStatusBarLightMode(activity.getWindow(), false)) { | ||
result = 1; | ||
} else if (FlymeSetStatusBarLightMode(activity.getWindow(), false)) { | ||
result = 2; | ||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | ||
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_VISIBLE); | ||
result = 3; | ||
} | ||
} | ||
return result; | ||
} | ||
|
||
/** | ||
* 清除MIUI或flyme或6.0以上版本状态栏黑色字体 | ||
*/ | ||
public static void StatusBarDarkMode(Activity activity, int type) { | ||
if (type == 1) { | ||
MIUISetStatusBarLightMode(activity.getWindow(), false); | ||
} else if (type == 2) { | ||
FlymeSetStatusBarLightMode(activity.getWindow(), false); | ||
} else if (type == 3) { | ||
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); | ||
} | ||
|
||
} | ||
|
||
|
||
/** | ||
* 设置状态栏图标为深色和魅族特定的文字风格 | ||
* 可以用来判断是否为Flyme用户 | ||
* | ||
* @param window 需要设置的窗口 | ||
* @param dark 是否把状态栏字体及图标颜色设置为深色 | ||
* @return boolean 成功执行返回true | ||
*/ | ||
public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) { | ||
boolean result = false; | ||
if (window != null) { | ||
try { | ||
WindowManager.LayoutParams lp = window.getAttributes(); | ||
Field darkFlag = WindowManager.LayoutParams.class | ||
.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); | ||
Field meizuFlags = WindowManager.LayoutParams.class | ||
.getDeclaredField("meizuFlags"); | ||
darkFlag.setAccessible(true); | ||
meizuFlags.setAccessible(true); | ||
int bit = darkFlag.getInt(null); | ||
int value = meizuFlags.getInt(lp); | ||
if (dark) { | ||
value |= bit; | ||
} else { | ||
value &= ~bit; | ||
} | ||
meizuFlags.setInt(lp, value); | ||
window.setAttributes(lp); | ||
result = true; | ||
} catch (Exception e) { | ||
|
||
} | ||
} | ||
return result; | ||
} | ||
|
||
/** | ||
* 设置状态栏字体图标为深色,需要MIUIV6以上 | ||
* | ||
* @param window 需要设置的窗口 | ||
* @param dark 是否把状态栏字体及图标颜色设置为深色 | ||
* @return boolean 成功执行返回true | ||
*/ | ||
public static boolean MIUISetStatusBarLightMode(Window window, boolean dark) { | ||
boolean result = false; | ||
if (window != null) { | ||
Class clazz = window.getClass(); | ||
try { | ||
int darkModeFlag = 0; | ||
Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); | ||
Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); | ||
darkModeFlag = field.getInt(layoutParams); | ||
Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); | ||
if (dark) { | ||
extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体 | ||
} else { | ||
extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体 | ||
} | ||
result = true; | ||
} catch (Exception e) { | ||
|
||
} | ||
} | ||
return result; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.