소스 검색

1.修改Android Apex Drivers登陆和登出主题切换。

Pen Li 7 년 전
부모
커밋
2f7d01cafb

+ 10 - 0
ApexDrivers/RAUtilsLibrary/src/main/java/com/usai/redant/rautils/utils/ImageUtil.java

@@ -352,9 +352,19 @@ public class ImageUtil {
     }
 
     public static void renderingDrawable(Drawable drawable, Resources res, int colorId) {
+        if (drawable == null || res == null) {
+            return;
+        }
 
         ColorStateList colorStateList = ColorStateList.valueOf(res.getColor(colorId));
         DrawableCompat.setTintList(drawable, colorStateList);
     }
 
+    public static void clearDrawableRendering(Drawable drawable) {
+        if (drawable == null) {
+            return;
+        }
+        DrawableCompat.setTintList(drawable, null);
+    }
+
 }

+ 73 - 23
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/MainActivity.java

@@ -8,6 +8,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.content.res.ColorStateList;
+import android.content.res.Resources;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.location.Location;
@@ -23,6 +24,7 @@ import android.support.v4.app.FragmentTransaction;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.graphics.drawable.DrawableCompat;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.app.WindowDecorActionBar;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -117,28 +119,19 @@ public class MainActivity extends BasicActivity implements LoginFragment.LoginCa
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+
+        if (ApexDriverApplication.sharedApplication().isLogin()) {
+            setTheme(R.style.ApexDriverTheme);
+        } else {
+            setTheme(R.style.ApexDriverThemeWhite);
+            autoSetupStatusBar = false;
+        }
+
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mRootContainer = findViewById(R.id.root_container);
 
-        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
-        if(actionBar != null){
-            actionBar.setElevation(0); // 5.0以上隐藏分割线
-
-            // 将图像渲染成白色
-//            ColorStateList colorStateList = ColorStateList.valueOf(getResources().getColor(R.color.ApexDriverWhite));
-            Drawable drawable = getResources().getDrawable(R.drawable.apexlogo_large);
-//            DrawableCompat.setTintList(drawable, colorStateList);
-            ImageUtil.renderingDrawable(drawable,getResources(),R.color.ApexDriverWhite);
-
-            // 显示Home
-            actionBar.setHomeAsUpIndicator(drawable);
-            actionBar.setDisplayHomeAsUpEnabled(true);
-
-        }
-        setTitle(null);
-
         initView();
 
 //        checkPowerManagement();
@@ -178,6 +171,59 @@ public class MainActivity extends BasicActivity implements LoginFragment.LoginCa
         RAUtil.checkPermissions(this,permissions);
     }
 
+    private void restart() {
+
+        finish();
+
+        startActivity(new Intent(this,MainActivity.class));
+
+    }
+
+    private void setupLoginAppearance() {
+
+        changeStatusBarGradient();
+
+        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
+        if(actionBar != null){
+            actionBar.setElevation(0); // 5.0以上隐藏分割线
+
+            // 将图像渲染成白色
+            Drawable drawable = getResources().getDrawable(R.drawable.apexlogo_large);
+            ImageUtil.renderingDrawable(drawable,getResources(),R.color.ApexDriverWhite);
+
+            actionBar.setHomeAsUpIndicator(drawable);
+            actionBar.setDisplayHomeAsUpEnabled(true);
+
+        }
+
+        setTitle(null);
+
+        invalidateOptionsMenu();
+
+        setTitle(ApexDriverApplication.sharedApplication().user);
+    }
+
+    private void setupLogoutAppearance() {
+
+        changeStatusBarNormal();
+
+        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
+        if(actionBar != null){
+            actionBar.setElevation(1); // 5.0以上隐藏分割线
+
+            Drawable drawable = getResources().getDrawable(R.drawable.apexlogo_large);
+            ImageUtil.clearDrawableRendering(drawable);
+
+            actionBar.setHomeAsUpIndicator(drawable);
+            actionBar.setDisplayHomeAsUpEnabled(true);
+
+        }
+
+        invalidateOptionsMenu();
+
+        setTitle("Login");
+    }
+
     private void initView() {
 
         FragmentManager manager = getSupportFragmentManager();
@@ -194,7 +240,7 @@ public class MainActivity extends BasicActivity implements LoginFragment.LoginCa
             HomeFragment homeFragment = new HomeFragment();
             transaction.add(R.id.root_container, homeFragment,FragmentTag);
 
-            setTitle(ApexDriverApplication.sharedApplication().user);
+            setupLoginAppearance();
 
         } else {
 
@@ -202,13 +248,15 @@ public class MainActivity extends BasicActivity implements LoginFragment.LoginCa
             loginFragment.setCallBack(this);
             transaction.add(R.id.root_container, loginFragment,FragmentTag);
 
-            setTitle("Login");
+            setupLogoutAppearance();
         }
         transaction.commit();
 
         invalidateOptionsMenu();
     }
 
+    // 登陆
+
     @Override
     public void onLogin() {
 
@@ -221,11 +269,13 @@ public class MainActivity extends BasicActivity implements LoginFragment.LoginCa
 
         transaction.commit();
 
-        invalidateOptionsMenu();
+        setupLoginAppearance();
 
-        setTitle(ApexDriverApplication.sharedApplication().user);
+        restart();
     }
 
+
+    // d登出
     private void showLogin() {
 
         FragmentManager manager = getSupportFragmentManager();
@@ -237,9 +287,9 @@ public class MainActivity extends BasicActivity implements LoginFragment.LoginCa
 
         transaction.commit();
 
-        invalidateOptionsMenu();
+        setupLogoutAppearance();
 
-        setTitle("Login");
+        restart();
     }
 
     @Override

+ 26 - 8
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/base/BasicActivity.java

@@ -1,5 +1,7 @@
 package com.usai.redant.apexdrivers.base;
 
+import android.graphics.Color;
+import android.os.Build;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.support.v7.app.AppCompatActivity;
@@ -10,6 +12,8 @@ import com.usai.redant.apexdrivers.R;
 
 public class BasicActivity extends AppCompatActivity {
 
+    public boolean autoSetupStatusBar = true;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -32,17 +36,19 @@ public class BasicActivity extends AppCompatActivity {
 //            }
 //        });
 
-        getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
-            @Override
-            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
-                initStatusBar();
-            }
-        });
+        if (autoSetupStatusBar) {
+            getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
+                @Override
+                public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
+                    changeStatusBarGradient();
+                }
+            });
+        }
 
     }
 
 
-    private void initStatusBar() {
+    private void initStatusBar(int resId) {
         View statusBarView = null;
         if (statusBarView == null) {
             //android系统级的资源id得这么拿,不然拿不到
@@ -50,7 +56,19 @@ public class BasicActivity extends AppCompatActivity {
             statusBarView = getWindow().findViewById(identifier);
         }
         if (statusBarView != null) {
-            statusBarView.setBackgroundResource(R.drawable.gradient_color);
+            statusBarView.setBackgroundResource(resId);
+        }
+    }
+
+    public void changeStatusBarGradient() {
+        initStatusBar(R.drawable.gradient_color);
+    }
+
+    public void changeStatusBarNormal() {
+//        initStatusBar(R.drawable.normal_color);
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
         }
     }
 }

+ 10 - 0
ApexDrivers/app/src/main/res/drawable/normal_color.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <solid
+        android:color="@color/ApexDriverWhite"
+        >
+
+    </solid>
+
+</shape>

+ 40 - 0
ApexDrivers/app/src/main/res/values/styles.xml

@@ -65,6 +65,46 @@
         <item name="android:textColor">@color/ApexDriverWhite</item>
     </style>
 
+    <!--Normal Theme-->
+
+    <style name="ApexDriverThemeWhite" parent="Theme.AppCompat.Light.DarkActionBar">
+
+        <item name="colorPrimary">@color/ApexDriverWhite</item> <!--Action Bar-->
+
+        <item name="colorPrimaryDark">@color/ApexDriverWhite</item> <!--Status Bar-->
+
+        <!--Title Color 包括Dialog字体颜色-->
+        <!--<item name="android:textColorPrimary">#000000</item>-->
+
+
+        <!--ActionBar-->
+        <item name="android:actionBarStyle">@style/MyActionBarNormal</item>
+        <item name="actionBarStyle">@style/MyActionBarNormal</item>
+
+
+        <!--Action Bar Bottom黑色分割线,android5.0使用代码actionBar.setElevation(0)去除-->
+        <!--<item name="android:windowContentOverlay">@null</item>-->
+
+    </style>
+
+
+    <style name="MyActionBarNormal" parent="@style/Widget.AppCompat.ActionBar">
+
+        <item name="android:background">@color/ApexDriverWhite</item>
+        <item name="android:titleTextStyle">@style/MyActionBarTitleTextNormal</item>
+        <item name="android:backgroundStacked">@color/ApexDriverWhite</item>
+
+        <!-- Support library compatibility -->
+        <item name="background">@color/ApexDriverWhite</item>
+        <item name="titleTextStyle">@style/MyActionBarTitleTextNormal</item>
+        <item name="backgroundStacked">@color/ApexDriverWhite</item>
+
+    </style>
+
+    <style name="MyActionBarTitleTextNormal" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
+        <item name="android:textColor">#000000</item>
+    </style>
+
 
 
     <!--Dialog 样式-->