Commit 0b50a205 authored by shiyl's avatar shiyl

删除登录页面的隐私政策、修复hintDialog不显示的bug, 系统设置添加用户协议、隐私政策、问题反馈

parent f2207c42
package com.yidian.common.utils;
import android.app.Activity;
import android.app.Application;
import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Build;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import androidx.annotation.NonNull;
import com.yidian.common.YdBaseApplication;
/**
* 显示相关工具类
*/
public class DisplayUtils {
/**
* 将px值转换为dp值
*/
public static int px2dp(float pxValue) {
final float scale = YdBaseApplication.context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
/**
* 将dp值转换为px值
*/
public static int dp2px(float dpValue) {
final float scale = YdBaseApplication.context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 将px值转换为sp值
*/
public static int px2sp(float pxValue) {
final float scale = YdBaseApplication.context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / scale + 0.5f);
}
/**
* 将sp值转换为px值
*/
public static int sp2px(float dpValue) {
final float scale = YdBaseApplication.context.getResources().getDisplayMetrics().scaledDensity;
return (int) (dpValue * scale + 0.5f);
}
/**
* 获取屏幕宽度
*/
public static int getScreenWidthPixels(Activity context) {
DisplayMetrics metric = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(metric);
return metric.widthPixels;
}
public static int getWindowWidth(Context context) {
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Activity.WINDOW_SERVICE);
if (windowManager != null) {
windowManager.getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
} else {
return 1080;
}
}
/**
* 获取屏幕高度
*/
public static int getScreenHeightPixels(Activity context) {
DisplayMetrics metric = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(metric);
return metric.heightPixels;
}
/**
* 将一个view转换成bitmap位图
*
* @param view 要转换的View
* @return view转换的bitmap
*/
public static Bitmap viewToBitmap(View view) {
Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
view.draw(new Canvas(bitmap));
return bitmap;
}
/**
* 获取模糊虚化的bitmap
*
* @param context
* @param bitmap 要模糊的图片
* @param radius 模糊等级 >=0 && <=25
* @return
*/
public static Bitmap getBlurBitmap(Context context, Bitmap bitmap, int radius) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return blurBitmap(context, bitmap, radius);
}
return bitmap;
}
/**
* android系统的模糊方法
*
* @param bitmap 要模糊的图片
* @param radius 模糊等级 >=0 && <=25
*/
public static Bitmap blurBitmap(Context context, Bitmap bitmap, int radius) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
//Let's create an empty bitmap with the same size of the bitmap we want to blur
Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap
.Config.ARGB_8888);
//Instantiate a new Renderscript
RenderScript rs = RenderScript.create(context);
//Create an Intrinsic Blur Script using the Renderscript
ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
//Create the Allocations (in/out) with the Renderscript and the in/out bitmaps
Allocation allIn = Allocation.createFromBitmap(rs, bitmap);
Allocation allOut = Allocation.createFromBitmap(rs, outBitmap);
//Set the radius of the blur
blurScript.setRadius(radius);
//Perform the Renderscript
blurScript.setInput(allIn);
blurScript.forEach(allOut);
//Copy the final bitmap created by the out Allocation to the outBitmap
allOut.copyTo(outBitmap);
//recycle the original bitmap
bitmap.recycle();
//After finishing everything, we destroy the Renderscript.
rs.destroy();
return outBitmap;
} else {
return bitmap;
}
}
private static float sNoncompatDensity;
private static float sNoncompatScaledDensity;
public static void setCustomDenisty(@NonNull Activity activity, @NonNull final Application application) {
final DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics();
if (sNoncompatDensity == 0) {
sNoncompatDensity = appDisplayMetrics.density;
sNoncompatScaledDensity = appDisplayMetrics.scaledDensity;
application.registerComponentCallbacks(new ComponentCallbacks() {
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (newConfig != null && newConfig.fontScale > 1) {
sNoncompatScaledDensity = application.getResources().getDisplayMetrics().scaledDensity;
}
}
@Override
public void onLowMemory() {
}
});
}
final float targetDensity = appDisplayMetrics.widthPixels / 360;
final float targetScaledDensity = targetDensity * (sNoncompatScaledDensity / sNoncompatDensity);
final int targetDensityDpi = (int) (160 * targetDensity);
appDisplayMetrics.density = targetDensity;
appDisplayMetrics.scaledDensity = targetScaledDensity;
appDisplayMetrics.densityDpi = targetDensityDpi;
final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics();
activityDisplayMetrics.densityDpi = targetDensityDpi;
activityDisplayMetrics.density = targetDensity;
activityDisplayMetrics.scaledDensity = targetScaledDensity;
}
/**
* 批量设置View的显示和隐藏
*
* @param visibility Modifier: Modified Date: Modify:
*/
public static void setViewVisibility(int visibility, View... views) {
setViewVisibility(visibility, null, views);
}
/**
* 批量设置View的显示和隐藏
*
* @param visibility
* @param animation 使用动画
* @param views
*/
public static void setViewVisibility(int visibility, Animation animation, View... views) {
if (views == null || views.length == 0)
return;
for (View view : views) {
if (view.getVisibility() == visibility)
continue;
if (animation != null) {
view.startAnimation(animation);
}
view.setVisibility(visibility);
}
}
}
...@@ -6,6 +6,7 @@ import android.view.Gravity ...@@ -6,6 +6,7 @@ import android.view.Gravity
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.yidian.common.R import com.yidian.common.R
import com.yidian.common.base.BaseDialog import com.yidian.common.base.BaseDialog
import com.yidian.common.databinding.DialogCommonHintBinding import com.yidian.common.databinding.DialogCommonHintBinding
......
...@@ -22,7 +22,6 @@ import com.yidian.common.XRouterPathConstants.Companion.MERCHANT_AUTH_INFO ...@@ -22,7 +22,6 @@ import com.yidian.common.XRouterPathConstants.Companion.MERCHANT_AUTH_INFO
import com.yidian.common.XRouterPathConstants.Companion.MERCHANT_CENTER import com.yidian.common.XRouterPathConstants.Companion.MERCHANT_CENTER
import com.yidian.common.XRouterPathConstants.Companion.MERCHANT_INFO import com.yidian.common.XRouterPathConstants.Companion.MERCHANT_INFO
import com.yidian.common.XRouterPathConstants.Companion.NEWS_CONTENT import com.yidian.common.XRouterPathConstants.Companion.NEWS_CONTENT
import com.yidian.common.XRouterPathConstants.Companion.NEWS_MAIN
import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_ADD_STAFF import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_ADD_STAFF
import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MANAGER_CHANGE import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MANAGER_CHANGE
import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MANAGER_INFO import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MANAGER_INFO
...@@ -33,6 +32,7 @@ import com.yidian.common.XRouterPathConstants.Companion.PROTOCOL ...@@ -33,6 +32,7 @@ import com.yidian.common.XRouterPathConstants.Companion.PROTOCOL
import com.yidian.common.XRouterPathConstants.Companion.SUPPORT import com.yidian.common.XRouterPathConstants.Companion.SUPPORT
import com.yidian.common.XRouterPathConstants.Companion.SYSTEM_SETTING import com.yidian.common.XRouterPathConstants.Companion.SYSTEM_SETTING
import com.yidian.common.YdBaseApplication import com.yidian.common.YdBaseApplication
import com.yidian.news.util.DensityUtil
import com.yidian.news.util.ProcessUtil import com.yidian.news.util.ProcessUtil
import com.yidian.nightmode.util.NightModeUtil import com.yidian.nightmode.util.NightModeUtil
import com.yidian.shenghuoquan.newscontent.personnel.ui.* import com.yidian.shenghuoquan.newscontent.personnel.ui.*
...@@ -61,6 +61,8 @@ class NewsContentApplication : YdBaseApplication() { ...@@ -61,6 +61,8 @@ class NewsContentApplication : YdBaseApplication() {
registerXPage() registerXPage()
initService() initService()
NightModeUtil.setContext(this) NightModeUtil.setContext(this)
// 工具类的使用需要先初始化,后续才能用
DensityUtil.init(this)
} }
Log.e("application初始化", "NewsContentApplication 初始化完成") Log.e("application初始化", "NewsContentApplication 初始化完成")
} }
......
...@@ -10,6 +10,7 @@ import com.yidian.common.BaseInitConfig ...@@ -10,6 +10,7 @@ import com.yidian.common.BaseInitConfig
import com.yidian.common.HawkConfig import com.yidian.common.HawkConfig
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
import com.yidian.common.XRouterPathConstants.Companion.FLASH import com.yidian.common.XRouterPathConstants.Companion.FLASH
import com.yidian.common.YdBaseApplication
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.common.services.AppUpgradeService import com.yidian.common.services.AppUpgradeService
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
...@@ -56,6 +57,9 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC ...@@ -56,6 +57,9 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC
* 进登录页或首页 * 进登录页或首页
*/ */
private fun toLoginOrHome() { private fun toLoginOrHome() {
// 先执行剩余的初始化任务
BaseInitConfig.performInitialization(YdBaseApplication.context)
// 判断往哪里走
val loginStatus = Hawk.get(HawkConfig.LoginStatus, false) val loginStatus = Hawk.get(HawkConfig.LoginStatus, false)
if (loginStatus) { if (loginStatus) {
// 已登录 请求生活号列表 // 已登录 请求生活号列表
...@@ -92,7 +96,6 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC ...@@ -92,7 +96,6 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC
dismissPrivacyDialog() dismissPrivacyDialog()
// 同意则执行剩余的初始化并进入登录或首页 // 同意则执行剩余的初始化并进入登录或首页
Hawk.put(HawkConfig.ProtocolIsAgree, true) Hawk.put(HawkConfig.ProtocolIsAgree, true)
BaseInitConfig.performInitialization(this@FlashActivity)
toLoginOrHome() toLoginOrHome()
} }
builder.show() builder.show()
......
...@@ -40,7 +40,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -40,7 +40,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
private lateinit var mCountDownTimerUtils: CountDownTimerUtils private lateinit var mCountDownTimerUtils: CountDownTimerUtils
private var mobileFinish = false private var mobileFinish = false
private var codeFinish = false private var codeFinish = false
private var protocolAgree = false // private var protocolAgree = false
override fun createViewBinding(): ActivityLoginBinding { override fun createViewBinding(): ActivityLoginBinding {
return ActivityLoginBinding.inflate(layoutInflater) return ActivityLoginBinding.inflate(layoutInflater)
...@@ -121,10 +121,10 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -121,10 +121,10 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
ApiService.mobileLogin(this, paramsMap) ApiService.mobileLogin(this, paramsMap)
} }
viewBind.cbProtocol.setOnCheckedChangeListener { buttonView, isChecked -> // viewBind.cbProtocol.setOnCheckedChangeListener { buttonView, isChecked ->
protocolAgree = isChecked // protocolAgree = isChecked
changeLoginButtonStatus() // changeLoginButtonStatus()
} // }
viewBind.tvProtocol.setOnClickListener { viewBind.tvProtocol.setOnClickListener {
val urlMap = HashMap<String, String>() val urlMap = HashMap<String, String>()
...@@ -140,7 +140,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -140,7 +140,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
} }
private fun changeLoginButtonStatus() { private fun changeLoginButtonStatus() {
if (mobileFinish && codeFinish && protocolAgree) { if (mobileFinish && codeFinish) {
setLoginButtonStatus(true) setLoginButtonStatus(true)
} else { } else {
setLoginButtonStatus(false) setLoginButtonStatus(false)
......
...@@ -3,10 +3,12 @@ package com.yidian.shenghuoquan.newscontent.ui.setting ...@@ -3,10 +3,12 @@ package com.yidian.shenghuoquan.newscontent.ui.setting
import android.os.Bundle import android.os.Bundle
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.orhanobut.hawk.Hawk import com.orhanobut.hawk.Hawk
import com.yidian.common.AppConfig
import com.yidian.common.HawkConfig import com.yidian.common.HawkConfig
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
import com.yidian.common.XRouterPathConstants.Companion.SYSTEM_SETTING import com.yidian.common.XRouterPathConstants.Companion.SYSTEM_SETTING
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.clickAntiShake
import com.yidian.common.extensions.initTitleBar import com.yidian.common.extensions.initTitleBar
import com.yidian.common.services.AppUpgradeService import com.yidian.common.services.AppUpgradeService
import com.yidian.common.utils.SystemSettingUtils import com.yidian.common.utils.SystemSettingUtils
...@@ -15,6 +17,7 @@ import com.yidian.shenghuoquan.newscontent.bean.HintOptionBean ...@@ -15,6 +17,7 @@ import com.yidian.shenghuoquan.newscontent.bean.HintOptionBean
import com.yidian.shenghuoquan.newscontent.databinding.ActivitySystemSettingBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivitySystemSettingBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IUserLogoutCallBack import com.yidian.shenghuoquan.newscontent.http.callback.IUserLogoutCallBack
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.utils.ToastUtil import com.yidian.utils.ToastUtil
...@@ -53,19 +56,35 @@ class SystemSettingActivity : BaseActivity<ActivitySystemSettingBinding>() { ...@@ -53,19 +56,35 @@ class SystemSettingActivity : BaseActivity<ActivitySystemSettingBinding>() {
private fun initClick() { private fun initClick() {
// 通知设置 // 通知设置
viewBind.clNotice.setOnClickListener { viewBind.clNotice.clickAntiShake {
SystemSettingUtils.openNotifySetting(this) SystemSettingUtils.openNotifySetting(this)
} }
// 退出登录 // 退出登录
viewBind.tvLogout.setOnClickListener { viewBind.tvLogout.clickAntiShake {
showConfirmDialog() showConfirmDialog()
} }
// 检查app更新 // 检查app更新
viewBind.clCheckUpgrade.setOnClickListener { viewBind.clCheckUpgrade.clickAntiShake {
ZapTicket(AppUpgradeService.SERVICE_NAME).withAction(AppUpgradeService.ACTION_CHECK_APP_UPGRADE).onResult { ZapTicket(AppUpgradeService.SERVICE_NAME).withAction(AppUpgradeService.ACTION_CHECK_APP_UPGRADE).onResult {
if (it.code != 0) ToastUtil.showToast(this, it.tips) if (it.code != 0) ToastUtil.showToast(this, it.tips)
}.ship() }.ship()
} }
// 用户协议
viewBind.clProtocol.clickAntiShake {
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
// 隐私政策
viewBind.clPrivacy.clickAntiShake {
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
// 意见反馈
viewBind.clFeedback.clickAntiShake {
ToastUtil.showToast(this, "没事别瞎逼逼啊")
}
} }
private fun showConfirmDialog() { private fun showConfirmDialog() {
......
...@@ -137,10 +137,12 @@ ...@@ -137,10 +137,12 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:gravity="center" android:gravity="center"
android:visibility="gone"
android:orientation="horizontal"> android:orientation="horizontal">
<CheckBox <CheckBox
android:id="@+id/cb_protocol" android:id="@+id/cb_protocol"
android:checked="true"
style="@style/protocol_checkboxBg" style="@style/protocol_checkboxBg"
android:layout_width="25dp" android:layout_width="25dp"
android:layout_height="23dp" /> android:layout_height="23dp" />
......
...@@ -81,6 +81,93 @@ ...@@ -81,6 +81,93 @@
<View style="@style/cut_off_line_style" /> <View style="@style/cut_off_line_style" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_protocol"
android:layout_width="match_parent"
android:layout_height="@dimen/dp60">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="用户协议"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
android:src="@mipmap/icon_next"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View style="@style/cut_off_line_style" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_privacy"
android:layout_width="match_parent"
android:layout_height="@dimen/dp60">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="隐私政策"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
android:src="@mipmap/icon_next"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View style="@style/cut_off_line_style" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_feedback"
android:layout_width="match_parent"
android:layout_height="@dimen/dp60">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="意见反馈"
android:textColor="@color/color_333333"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
android:src="@mipmap/icon_next"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View style="@style/cut_off_line_style" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_check_upgrade" android:id="@+id/cl_check_upgrade"
android:layout_width="match_parent" android:layout_width="match_parent"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment