瀏覽代碼

1.修改popupwindow问题。
2.优化一些异常问题

FailedToRead 2 年之前
父節點
當前提交
52eb75f44a

+ 4 - 4
app/src/exception/layout/activity_pay_huawei.xml

@@ -118,9 +118,9 @@
 
             <TextView
                 android:id="@+id/activity_pay_huawei_automatic"
-                android:layout_width="match_parent"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="top"
+                android:layout_gravity="center"
                 android:gravity="center"
                 android:text="《自动续费服务条款》"
                 android:textColor="#333333"
@@ -132,8 +132,8 @@
                 android:layout_height="wrap_content"
                 android:layout_gravity="center"
                 android:layout_marginTop="10dp"
-                android:gravity="center|left"
-                android:text="次月起10元/月,自动续费可随时取消。确认购买后,将向您账户收款,购买连续包月项目,将自动续订。"
+                android:gravity="center"
+                android:text="次月起10元/月,自动续费可随时取消。确认购买后,将向您账户收款,购买连续包月项目,将自动续订。点击此处查看详情。"
                 android:textColor="#333333"
                 android:textSize="14dp"></TextView>
 

+ 7 - 4
app/src/main/AndroidManifest.xml

@@ -27,18 +27,21 @@
         android:icon="${icon}"
         android:label="@string/app_name"
         android:largeHeap="true"
+        android:maxAspectRatio="2.4"
         android:roundIcon="${icon}"
         android:supportsRtl="true"
         android:usesCleartextTraffic="true">
         <meta-data
+            android:name="android.max_aspect"
+            android:value="2.4" />
+        <!--适配华为(huawei)刘海屏-->
+        <meta-data
             android:name="android.notch_support"
             android:value="true" />
-        <meta-data
-            android:name="android.max_aspect"
-            android:value="2.1" />
+        <!--适配小米(xiaomi)刘海屏-->
         <meta-data
             android:name="notch.config"
-            android:value="portrait|landscape" /> <!-- 主页 -->
+            android:value="portrait|landscape" />
 
 
         <activity

+ 2 - 1
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -201,6 +201,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
         } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
             mBindWeChat.setVisibility(View.GONE);
             mBindPhoneNumLayout.setVisibility(View.GONE);
+            mSwitchLayout.setVisibility(View.GONE);
         } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.BUBUGAO.getChannelCode()) ||
                 Consts.getUMengChannel().equals(ChannelCodeEnum.LENOVO_PAD.getChannelCode()) ||
                 Consts.getUMengChannel().equals(ChannelCodeEnum.JINGDONGFANG.getChannelCode()) ||
@@ -228,7 +229,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
                     mPresenter.loginOut();
                     if (Consts.getUMengChannel().equals(ChannelCodeEnum.HUAWEI_LIANYUN.getChannelCode())) {
                         //华为联运还要退出华为账号
-                        HuaWeiUtil.signOut();
+                        HuaWeiUtil.signOut(mActivity);
                     }
                 }
             });

+ 1 - 1
app/src/main/java/com/edufound/reader/activity/payactivity/HuaWeiPayActivity.java

@@ -89,7 +89,7 @@ public class HuaWeiPayActivity extends BaseMvpActivity<HuaWeiPayPresenter> imple
         getRootView().postDelayed(new Runnable() {
             @Override
             public void run() {
-                mPresenter.checkOrder(1);
+                mPresenter.checkOrder(2);
             }
         }, 100);
         mToMyOrder.bringToFront();

+ 2 - 1
app/src/main/java/com/edufound/reader/application/EApplication.java

@@ -63,13 +63,14 @@ public class EApplication extends Application {
             Consts.setmApplicAtion(this);
 
             //初始化异常监听
-//            initException();
+            initException();
 
             XmlPullParserFactory.newInstance().setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
 
             //初始化OKhttp3
             OkHttpClient.initOkHttpUtil(getApplicationContext());
 
+
 //
             new Thread() {
                 @Override

+ 39 - 0
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -115,8 +115,26 @@ public abstract class BaseActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
 //        EfunboxUtil.setCustomDensity(this, Consts.getmApplicAtion());
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
+        }
+        if (Build.VERSION.SDK_INT >= 28) {
+            WindowManager.LayoutParams lp = getWindow().getAttributes();
+            lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+            getWindow().setAttributes(lp);
+        }
         EApplication.mActivityList.add(this);
         EfunboxUtil.initDesignSize(this);
+        hideUIMenu();
+        getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
+
+            @Override
+            public void onSystemUiVisibilityChange(int arg0) {
+                // TODO Auto-generated method stub
+                hideUIMenu();
+            }
+        });
         setContentView(this.getLayoutId());
         initBase();
         bindViews(this);
@@ -968,5 +986,26 @@ public abstract class BaseActivity extends AppCompatActivity {
             }
         });
     }
+
+    /**
+     * 隐藏虚拟按键,并且设置成全屏
+     */
+    protected void hideUIMenu() {
+        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
+            View v = this.getWindow().getDecorView();
+            v.setSystemUiVisibility(View.GONE);
+        } else if (Build.VERSION.SDK_INT >= 19) {
+            //for new api versions.
+            View decorView = getWindow().getDecorView();
+            int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
+                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE;
+            decorView.setSystemUiVisibility(uiOptions);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+        }
+    }
 }
 

+ 5 - 3
app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java

@@ -515,9 +515,11 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public void onDestroy() {
-        mPresenter.activityDestory();
-        mPresenter.detachView();
-        mPresenter.clearAll();
+        if (mPresenter != null) {
+            mPresenter.activityDestory();
+            mPresenter.detachView();
+            mPresenter.clearAll();
+        }
         super.onDestroy();
     }
 

+ 77 - 4
app/src/main/java/com/edufound/reader/popwindow/PopWindowUtil.java

@@ -3,9 +3,12 @@ package com.edufound.reader.popwindow;
 import android.app.Activity;
 import android.app.Dialog;
 import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.graphics.Color;
 import android.graphics.PointF;
 import android.net.Uri;
+import android.os.Build;
 import android.view.Display;
 import android.view.Gravity;
 import android.view.KeyEvent;
@@ -289,7 +292,9 @@ public class PopWindowUtil {
         mPresenter.initRecordStatusWindow(context, record_view, bean, userread, listener);
         recordPopupWindow = new PopupWindow(record_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         recordPopupWindow.setFocusable(false);
+        mPopupWindow.setClippingEnabled(false);
         recordPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
+        hideBottomUIMenuForPopupWindow(recordPopupWindow);
         recordPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
             @Override
             public void onDismiss() {
@@ -404,7 +409,9 @@ public class PopWindowUtil {
         });
         eventPopupWindow = new PopupWindow(dialog_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
         eventPopupWindow.setFocusable(true);
+        mPopupWindow.setClippingEnabled(false);
         eventPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
+        hideBottomUIMenuForPopupWindow(eventPopupWindow);
         eventPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
             @Override
             public void onDismiss() {
@@ -493,7 +500,7 @@ public class PopWindowUtil {
     /**
      * 超长图popupwindow
      */
-    public static void showLongSizeImg(Context context, String url, View parent) {
+    public static void showLongSizeImg(Activity context, String url, View parent) {
         initPresenter();
         if (checkWindowShoing()) {
             return;
@@ -504,7 +511,6 @@ public class PopWindowUtil {
         final File[] imgResource = new File[1];
         SubsamplingScaleImageView imageView = (SubsamplingScaleImageView) dialog_view.findViewById(R.id.imageview);
         imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM);
-        imageView.setMinScale(1.0F);
         //下载图片保存到本地
         GlideUtils.downloadImage(context, url, new RequestListener<File>() {
             @Override
@@ -515,7 +521,10 @@ public class PopWindowUtil {
             @Override
             public boolean onResourceReady(File resource, Object model, Target<File> target, DataSource dataSource, boolean isFirstResource) {
                 imgResource[0] = resource;
-                imageView.setImage(ImageSource.uri(Uri.fromFile(resource)), new ImageViewState(1.0F, new PointF(0, 0), 0));
+                float initImageScale = getInitImageScale(context, resource.getPath());
+                imageView.setMaxScale(initImageScale);//最大显示比例
+                imageView.setMinScale(initImageScale);
+                imageView.setImage(ImageSource.uri(Uri.fromFile(resource)), new ImageViewState(initImageScale, new PointF(0, 0), 0));
 //                Uri uri = Uri.fromFile(resource);
 //                imageView.setImage(uri);
 
@@ -533,6 +542,39 @@ public class PopWindowUtil {
         newPopupWindow(parent, true);
     }
 
+    /**
+     * 计算出图片初次显示需要放大倍数
+     *
+     * @param imagePath 图片的绝对路径
+     */
+    public static float getInitImageScale(Activity activity, String imagePath) {
+        Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
+        WindowManager wm = activity.getWindowManager();
+        int width = Consts.getScreenSize()[0];
+        int height = Consts.getScreenSize()[1];
+        // 拿到图片的宽和高
+        int dw = bitmap.getWidth();
+        int dh = bitmap.getHeight();
+        float scale = 1.0f;
+        //图片宽度大于屏幕,但高度小于屏幕,则缩小图片至填满屏幕宽
+        if (dw > width && dh <= height) {
+            scale = width * 1.0f / dw;
+        }
+        //图片宽度小于屏幕,但高度大于屏幕,则放大图片至填满屏幕宽
+        if (dw <= width && dh > height) {
+            scale = width * 1.0f / dw;
+        }
+        //图片高度和宽度都小于屏幕,则放大图片至填满屏幕宽
+        if (dw < width && dh < height) {
+            scale = width * 1.0f / dw;
+        }
+        //图片高度和宽度都大于屏幕,则缩小图片至填满屏幕宽
+        if (dw > width && dh > height) {
+            scale = width * 1.0f / dw;
+        }
+        return scale;
+    }
+
 
     /**
      * 排行榜
@@ -612,9 +654,12 @@ public class PopWindowUtil {
             Logger.e("newPopupWindow-parent=null");
             return;
         }
-        mPopupWindow = new PopupWindow(dialog_view, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
+
+        mPopupWindow = new PopupWindow(dialog_view, Consts.getScreenSize()[0], FrameLayout.LayoutParams.MATCH_PARENT);
         mPopupWindow.setFocusable(nedFocus);
+        mPopupWindow.setClippingEnabled(false);
         mPopupWindow.showAtLocation(parent, Gravity.CENTER, 0, 0);
+        hideBottomUIMenuForPopupWindow(mPopupWindow);
         mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
             @Override
             public void onDismiss() {
@@ -624,6 +669,34 @@ public class PopWindowUtil {
             }
         });
     }
+
+    /**
+     * 影藏PopupWindow页面弹出时的虚拟按键
+     */
+    private static void hideBottomUIMenuForPopupWindow(final PopupWindow popupWindow) {
+        if (popupWindow != null && popupWindow.getContentView() != null) {
+            popupWindow.getContentView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
+                @Override
+                public void onSystemUiVisibilityChange(int visibility) {
+                    //        //保持布局状态
+                    int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
+                            //布局位于状态栏下方
+                            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
+                            //全屏
+                            View.SYSTEM_UI_FLAG_FULLSCREEN |
+                            //隐藏导航栏
+                            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
+                            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
+                    if (Build.VERSION.SDK_INT >= 19) {
+                        uiOptions |= 0x00001000;
+                    } else {
+                        uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
+                    }
+                    popupWindow.getContentView().setSystemUiVisibility(uiOptions);
+                }
+            });
+        }
+    }
 }
 
 

+ 2 - 1
app/src/main/java/com/edufound/reader/util/huaweiutil/HuaWeiUtil.java

@@ -50,7 +50,8 @@ public class HuaWeiUtil {
      * Codelab Code
      * sign Out by signOut
      */
-    public static void signOut() {
+    public static void signOut(Activity activity) {
+        mAuthManager = AccountAuthManager.getService(activity, mAuthParam);
         Task<Void> signOutTask = mAuthManager.signOut();
         signOutTask.addOnSuccessListener(new OnSuccessListener<Void>() {
             @Override