Commit 813193a9 by 万齐军

Merge branch 'd/v4.4.08' into 'feat/qj/netease2'

# Conflicts:
#   app/src/main/java/com/ydl/component/base/DemoGlobalConfig.java
parents 43c018e9 acf01c9e
......@@ -3,7 +3,6 @@ package com.ydl.component.base
import android.app.Application
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Looper
import android.os.Process
......@@ -22,18 +21,15 @@ import com.ydl.component.MainActivity
import com.ydl.component.R
import com.ydl.ydlcommon.actions.crash.Cockroach
import com.ydl.ydlcommon.actions.crash.ExceptionHandler
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.base.config.YDLConstants
import com.ydl.ydlcommon.base.delegate.IAppLifecycles
import com.ydl.ydlcommon.utils.AppProgressUtils
import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.ydl.ydlcommon.utils.log.LogHelper
import com.yidianling.common.tools.ToastUtil
import com.yidianling.im.api.bean.IMInitConfigBean
import com.yidianling.im.config.NimApplication
import io.flutter.view.FlutterMain
import io.reactivex.functions.Action
/**
* Created by haorui on 2019-09-02.
......@@ -146,10 +142,7 @@ class DemoAppLifecycles : IAppLifecycles {
//开启友盟集成测试
UMConfigure.setLogEnabled(BuildConfig.DEBUG)
HttpConfig.getInstance().initSocketConfig(Action {
//数据埋点初始化 (一定要放在主进程中/因为用到了umeng统计,需要放在umeng初始化后)
YdlBuryPointUtil.init(application, true)
})
//安全检测
//YDLAppProtector.init();
......
......@@ -3,7 +3,6 @@ package com.ydl.component.rtc
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
......@@ -23,11 +22,9 @@ import com.ydl.component.rtc.bean.UserSigResponse
import com.ydl.component.rtc.http.MDTHttpImpl.Companion.getInstance
import com.ydl.ydlcommon.modular.ModularServiceManager.provide
import com.yidianling.common.tools.ToastUtil
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.user.api.service.IUserService
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.util.*
class MDTLoginActivity : AppCompatActivity() {
private var mEditUserId: EditText? = null
......@@ -157,16 +154,12 @@ class MDTLoginActivity : AppCompatActivity() {
}
private fun initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val window = window
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = Color.TRANSPARENT
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
}
}
companion object {
......
......@@ -4,7 +4,6 @@ import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
......@@ -63,16 +62,12 @@ public class MDTMainActivity extends AppCompatActivity {
}
private void initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
private void login() {
......
......@@ -2,7 +2,6 @@ package com.ydl.component.rtc;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
......@@ -158,15 +157,11 @@ public class ProfileActivity extends AppCompatActivity {
}
private void initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
}
......@@ -111,16 +111,12 @@ public class TUICallingEntranceActivity extends Activity {
}
private void initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
private void initView() {
......@@ -401,11 +397,9 @@ public class TUICallingEntranceActivity extends Activity {
return;
}
//其他厂商
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, PERMISSION_RESULT_CODE);
}
} else {
//已经有权限
PermissionUtil.mHasPermissionOrHasHinted = true;
......
......@@ -8,7 +8,7 @@ android {
defaultConfig {
applicationId "com.cxzapp.yidianling"
minSdk 21
minSdk 23
targetSdk 28
versionCode 1
versionName "1.0"
......@@ -136,7 +136,7 @@ dependencies {
implementation 'com.huawei.hms:push:5.3.0.304'
//====================云信基础库====================
implementation 'com.ydl:nim-base:1.1.0.7'
implementation 'com.ydl:nim-base:1.1.1.2'
implementation 'com.netease.nimlib:basesdk:9.1.1'
implementation 'com.netease.nimlib:avchat:9.1.1'
implementation 'com.netease.nimlib:nrtc:9.1.1'
......
......@@ -5,7 +5,7 @@ buildscript {
ext {
kotlin_version = '1.6.10'
support_version = '26.1.0'
minSdkVersion = 21
minSdkVersion = 23
targetSdkVersion = 28
compileSdkVersion = 28
buildToolsVersion = '28.0.3'
......@@ -14,7 +14,7 @@ buildscript {
ydlrouter_version = '1.2.3'
constrait_support_version = '1.0.2'
componentVersion = "0.3.0.41"
componentVersion = "0.3.0.42.1-SNAPSHOT"
}
repositories {
mavenCentral()
......
......@@ -16,7 +16,7 @@ ext {
android = [
compileSdkVersion: 28,
buildToolsVersion: "28.0.3",
minSdkVersion : 21,
minSdkVersion : 23,
targetSdkVersion : 28,
versionCode : 1000,
versionName : "1.0.00",
......@@ -131,8 +131,8 @@ ext {
"flowlayout" : "cn.lankton:flowlayout:3.1.0",
"androidanimations" : "com.daimajia.androidanimations:library:2.3@aar",
//友盟统计
"umeng-common" : "com.umeng.umsdk:common:9.4.4",
"umeng-asms" : "com.umeng.umsdk:asms:1.4.1",
"umeng-common" : "com.umeng.umsdk:common:9.5.1",
"umeng-asms" : "com.umeng.umsdk:asms:1.6.3",
//友盟社会化分享
"umeng-share-core" : "com.umeng.umsdk:share-core:7.1.4",
"umeng-share-qq" : "com.umeng.umsdk:share-qq:7.1.4",
......@@ -150,7 +150,6 @@ ext {
"bugly-nativecrashreport" : "com.tencent.bugly:nativecrashreport:3.6.0.1",
"ydl-image" : "com.ydl:ydl-image:1.0.10-SNAPSHOT@aar",
"ydl-pushagent" : "com.ydl:pushagent:0.1.1",
"ydl-notracepoint" : "com.ydl:notracepoint-lib:0.2.3.3@aar",
"ydl-js" : "com.ydl:ydl-js:1.0.7-SNAPSHOT@aar",
"ydl-router" : "com.ydl:ydl-router:1.4.4",
"xrecyclerview" : "com.ydl:xrecyclerview:1.0.0-SNAPSHOT@aar",
......@@ -165,10 +164,11 @@ ext {
"blankUtil" : "com.blankj:utilcode:1.25.9",
"ydl-hnet" : "com.ydl:h-net:0.0.8",
"ydl-user-router" : "com.ydl:router:1.0.0-SNAPSHOT@aar",
"ydl-device" : "com.ydl:device-id:0.0.31",
"ydl-device" : "com.ydl:device-id:0.0.34",
//flutter功能组件升级===>发布ydl-flutter组件===>引用flutter相关的业务模块
"ydl-flutter" : "com.ydl:ydl-flutter:0.0.56@aar", //flutter aar
"ydl-flutter" : "com.ydl:ydl-flutter:0.0.57@aar", //flutter aar
// "ydl-flutter-sp" : "com.ydl:ydl-flutter-sp:0.0.2@aar", //flutter 缓存 aar
"tbssdk" : "com.tencent.tbs:tbssdk:44216"
]
}
......@@ -14,7 +14,6 @@ android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
......
......@@ -15,10 +15,7 @@ android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
// minSdkVersion rootProject.ext.android["minSdkVersion"]
// targetSdkVersion rootProject.ext.android["targetSdkVersion"]
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
......@@ -68,7 +65,7 @@ dependencies {
kapt "com.alibaba:arouter-compiler:$arouter_compiler"
api "com.alibaba:arouter-api:$arouter_api"
api "com.ydl:ydl-av:1.4.4"
api "com.ydl:ydl-av:1.4.6"
implementation 'com.volcengine:apm_insight:1.4.6.cn'
api project(':ydl-platform')
......
......@@ -33,6 +33,7 @@ import com.ydl.audioim.http.command.ConnectExceptionCommand
import com.ydl.audioim.http.command.NoticePushCommand
import com.ydl.audioim.http.command.PayLoad
import com.ydl.audioim.listener.IntentConstants
import com.ydl.audioim.notification.FloatService
import com.ydl.audioim.player.AudioPlayer
import com.ydl.audioim.presenter.AudioHomePresenterImpl
import com.ydl.audioim.router.AudioImIn
......@@ -55,7 +56,6 @@ import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.modular.findRouteService
import com.ydl.ydlcommon.router.YdlCommonRouterManager
import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlcommon.utils.log.AliYunLogConfig
......@@ -234,7 +234,7 @@ class AudioHomeActivity :
private var canChangeRoute: Boolean = false
private var hasHandleRefused = false
private var mServiceIntent: Intent? = null
private val notificationCallback = object : IMRegisterObserverCustomNotificationCallBack {
override fun onObserverCustomNotification(fromUid: String, toUid: String, content: String) {
if (fromUid == listenerUid) {
......@@ -522,6 +522,12 @@ class AudioHomeActivity :
override fun initDataAndEvent() {
//状态栏颜色
setWindowStatusBarColor()
mServiceIntent = Intent(this@AudioHomeActivity, FloatService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(mServiceIntent)
} else {
startService(mServiceIntent)
}
//初始化传感器
initSensorManager()
//页面传递数据初始化
......@@ -530,7 +536,10 @@ class AudioHomeActivity :
writeAgoraLog("通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus}")
AliYunRichLogsHelper.getInstance()
.sendRichLog(AliYunLogConfig.RTM, "通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus} channelId:${channelId}")
.sendRichLog(
AliYunLogConfig.RTM,
"通话页面打开的时候,RTM登录状态码:${YDLavManager.sdkStatus} channelId:${channelId}"
)
if (YDLavManager.sdkStatus != Constants.CONNECTION_STATE_CONNECTED) {
//再次登录声网,确保声网登录状态
reLoginRTM()
......@@ -548,7 +557,6 @@ class AudioHomeActivity :
private fun setWindowStatusBarColor() {
if (Build.VERSION.SDK_INT >= 21) {
val decorView = window.decorView
val option = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
......@@ -558,9 +566,6 @@ class AudioHomeActivity :
window.attributes?.layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
} else {
StatusBarUtils.setWindowStatusBarColor(this, R.color.audioim_color_40353535)
}
}
@SuppressLint("InvalidWakeLockTag")
......@@ -1602,6 +1607,7 @@ class AudioHomeActivity :
override fun onDestroy() {
super.onDestroy()
stopService(mServiceIntent)
findRouteService(IImService::class.java).unregisterObserveCustomNotification(notificationCallback)
uploadLog()
phoneHandler?.removeCallbacksAndMessages(null)
......
package com.ydl.audioim.notification
import android.app.*
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.IBinder
import com.ydl.audioim.R
class FloatService : Service() {
var notificationManager: NotificationManager? = null;
var notificationId = "audio_av";
var notificationName = "正在通话中";
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onCreate() {
super.onCreate()
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
//创建NotificationChannel
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
var channel = NotificationChannel(
notificationId,
notificationName,
NotificationManager.IMPORTANCE_HIGH
);
//不震动
channel.enableVibration(false);
//静音
channel.setSound(null, null);
notificationManager?.createNotificationChannel(channel);
}
//创建服务后,五秒内调用该方法
startForeground(1, getNotification());
}
/**
* 获取通知(Android8.0后需要)
* @return
*/
fun getNotification(): Notification {
var builder = Notification.Builder(this)
.setSmallIcon(R.drawable.dialog_list_bg)
.setContentTitle("壹点灵")
.setContentIntent(getIntent())
.setContentText("正在通话中");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder.setChannelId(notificationId);
}
return builder.build();
}
/**
* 点击后,直接打开app(之前的页面),不跳转特定activity
* @return
*/
fun getIntent(): PendingIntent {
var msgIntent =
applicationContext.packageManager.getLaunchIntentForPackage(packageName);//获取启动Activity
var pendingIntent = PendingIntent.getActivity(
applicationContext,
1,
msgIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
return pendingIntent;
}
}
\ No newline at end of file
......@@ -4,7 +4,6 @@ import android.content.Context
import android.media.AudioAttributes
import android.media.AudioManager
import android.media.MediaPlayer
import android.os.Build
/**
......@@ -23,14 +22,10 @@ class AudioPlayer {
this.mContext = mContext
mPlayer = MediaPlayer()
if (isSpeakerphoneOn) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
var attributes = AudioAttributes.Builder()
.setLegacyStreamType(AudioManager.STREAM_MUSIC)
.build()
mPlayer?.setAudioAttributes(attributes)
} else {
mPlayer?.setAudioStreamType(AudioManager.STREAM_MUSIC)
}
audioManager = mContext!!.getSystemService(Context.AUDIO_SERVICE) as AudioManager?
audioManager?.setStreamVolume(
......@@ -41,14 +36,10 @@ class AudioPlayer {
} else {
mPlayer?.setAudioStreamType(AudioManager.STREAM_VOICE_CALL)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
var attributes = AudioAttributes.Builder()
.setLegacyStreamType(AudioManager.STREAM_VOICE_CALL)
.build()
mPlayer?.setAudioAttributes(attributes)
} else {
mPlayer?.setAudioStreamType(AudioManager.STREAM_VOICE_CALL)
}
audioManager = mContext!!.getSystemService(Context.AUDIO_SERVICE) as AudioManager?
audioManager?.setStreamVolume(
......
......@@ -11,6 +11,7 @@ import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.net.Uri
import android.os.Build
import android.os.PowerManager
import android.provider.Settings
import android.text.TextUtils
......@@ -26,6 +27,7 @@ import com.ydl.audioim.R
import com.ydl.audioim.YDLavManager
import com.ydl.audioim.http.command.ConnectExceptionCommand
import com.ydl.audioim.http.command.PayLoad
import com.ydl.audioim.notification.FloatService
import com.ydl.audioim.player.AudioPlayer
import com.ydl.audioim.utils.AudioLogUtils
import com.ydl.audioim.utils.DateUtils
......@@ -118,6 +120,7 @@ class ConsultantAudioHomeActivity :
* 是否连接成功
*/
private var isConnectSuccess: Boolean = false
private var mServiceIntent: Intent? = null
companion object {
const val PARAM: String = "param"
......@@ -498,7 +501,12 @@ class ConsultantAudioHomeActivity :
override fun initDataAndEvent() {
EventBus.getDefault().register(this)
callEventSave("30", "进入接听界面")
mServiceIntent = Intent(this@ConsultantAudioHomeActivity, FloatService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(mServiceIntent)
} else {
startService(mServiceIntent)
}
//状态栏颜色
setWindowStatusBarColor()
//点亮屏幕 并解锁
......@@ -1115,6 +1123,7 @@ class ConsultantAudioHomeActivity :
}
override fun onDestroy() {
stopService(mServiceIntent)
LogUtil.e("http-------------onDestory")
AliYunRichLogsHelper.getInstance().sendRichLog(AliYunLogConfig.AGORA, "咨询用户端:onDestroy channelId:${mAudioMessageBean?.channelId}")
......
......@@ -14,7 +14,6 @@ android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
......@@ -53,7 +52,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
......@@ -61,7 +60,6 @@ dependencies {
implementation 'com.daimajia.androidanimations:library:2.3@aar'
api 'fr.tvbarthel.blurdialogfragment:lib:2.1.5'
api "com.alibaba:arouter-api:$arouter_api"
api 'com.tencent.tbs.tbssdk:sdk:43903'
// 注意此处的依赖方式:kotlin中使用和java中使用方式有不同
kapt "com.alibaba:arouter-compiler:$arouter_compiler"
implementation 'com.alibaba:fastjson:1.2.38'
......
......@@ -5,7 +5,6 @@ import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.text.TextUtils
import android.view.View
import android.view.ViewGroup
......@@ -310,13 +309,11 @@ class ConfideHomeActivity :
* 初始化状态栏位置
*/
private fun initStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window?.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window?.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window?.statusBarColor = Color.WHITE
window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
}
/**
* 初始化一键倾诉浮层的点击事件
......
package com.ydl.confide.home.widget
import android.content.Context
import android.os.Build
import androidx.cardview.widget.CardView
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.View
import android.view.ViewGroup
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydl_image.transform.GlideRoundTransform
import com.yidianling.common.tools.RxImageTool
import androidx.cardview.widget.CardView
import androidx.recyclerview.widget.RecyclerView
import com.ydl.confide.R
import com.ydl.confide.home.bean.ConfideHomeDataBean
import com.ydl.confide.home.event.IConfideHomeEvent
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydl_image.transform.GlideRoundTransform
import com.yidianling.common.tools.RxImageTool
import kotlinx.android.synthetic.main.confide_recent_view.view.*
/**
......@@ -46,10 +45,8 @@ class ConfideHomeRecentView(mContext: Context, private var confideHomeEvent: ICo
params.setMargins(dp15, RxImageTool.dip2px(28f), dp15, RxImageTool.dip2px(24f))
radius = RxImageTool.dip2px(23f).toFloat()
layoutParams = params
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
elevation = RxImageTool.dip2px(1f).toFloat()
}
}
/**
* 数据赋值
......
package com.ydl.confide.intro
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
......@@ -64,13 +63,11 @@ class ExpertIntroActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
ARouter.getInstance().inject(this)
binding = DataBindingUtil.setContentView(this, R.layout.activity_expert_intro)
if (Build.VERSION.SDK_INT >= 21) {
val decorView = window.decorView
val option = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
decorView.systemUiVisibility = option
window.statusBarColor = Color.TRANSPARENT
}
if (initData != null) {
val beans = JSON.parseArray(initData, ConfideHomeBodyBean::class.java)
val isLogin = findRouteService(IUserService::class.java).isLogin()
......
......@@ -39,7 +39,7 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
......
......@@ -7,17 +7,22 @@
android:name=".ExpertSearchActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/consultant_NoTitleTheme"/>
android:theme="@style/consultant_NoTitleTheme" />
<activity
android:name=".ExpertEightCategoryActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/consultant_NoTitleTheme" />
<activity
android:name=".HotSearchActivity"
android:screenOrientation="portrait"
android:theme="@style/consultant_NoTitleTheme"/>
android:theme="@style/consultant_NoTitleTheme" />
<activity
android:name=".ConsultAssistantCenterActivity"
android:screenOrientation="portrait"
android:theme="@style/consultant_Transparent"/>
android:theme="@style/consultant_Transparent" />
<activity android:name=".preview.GridPreviewActivity"
android:screenOrientation="portrait"
......
package com.yidianling.consultant
import android.annotation.SuppressLint
import android.view.WindowManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.launcher.ARouter
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.bean.StatusBarOptions
import com.ydl.ydlcommon.data.http.RxUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.yidianling.consultant.constants.ConsultBIConstants
import com.yidianling.consultant.model.SearchApi
import com.yidianling.consultant.model.bean.ChildrenBean
import com.yidianling.consultant.router.ConsultantIn
import com.yidianling.consultant.ui.view.topView.EightCategoryView
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.consultant_layout_eight_category.*
import kotlinx.android.synthetic.main.consultant_layout_search_toolbar.*
@Route(path = "/consult/eightcategory")
class ExpertEightCategoryActivity : BaseActivity() {
override fun layoutResId(): Int {
return R.layout.consultant_layout_eight_category
}
override fun getStatusViewOptions(): StatusBarOptions {
return StatusBarOptions(true, true)
}
@SuppressLint("CheckResult")
override fun initDataAndEvent() {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE or WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
showProgressDialog()
SearchApi.getSearchApi()
.searchEightCategoryHotWord()
.compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ resp ->
dismissProgressDialog()
var mutableList = mutableListOf<MutableList<ChildrenBean>>()
resp.forEach {
it.children?.let { it1 -> mutableList.add(it1) }
}
mutableList.forEachIndexed { index, item ->
item.forEachIndexed { inin, childrenBean ->
if (inin < 8) {
childrenBean.isVisible = true
}
if (inin == 8) {
return@forEachIndexed
}
}
}
val eightCategoryView = EightCategoryView(this, true)
eightCategoryView.setData(mutableList, null, null, true)
eight_view_ll.addView(eightCategoryView)
}, { t ->
dismissProgressDialog()
})
btn_back.setOnClickListener {
onBackPressed()
}
btn_call.setOnClickListener {
ActionCountUtils.count(ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_ONLINE_CUSTOMER_CLICK)
ConsultantIn.startP2PXiaoYi(this)
}
tv_guide.setOnClickListener {
ActionCountUtils.count(ConsultBIConstants.ConsultEvent.APP_CONSULT_LIST_CONSULT_GUIDE_CLICK)
val h5param = H5Params(HttpConfig.H5_URL + "help/consultation/", "咨询指南")
h5param.isShowMenu = true
NewH5Activity.start(this, h5param)
}
rl_search.setOnClickListener {
ActionCountUtils.count(
ConsultBIConstants.ConsultEvent.YDL_USER_CONSULT_SEARCH_CLICK,
tv_search_content.hint.toString()
)
ARouter.getInstance()
.build("/consult/hot_search")
.withString(
ExpertSearchActivity.HOT_SEARCH_DOCTOR_NAME,
tv_search_content.text.toString()
)
.navigation()
}
}
}
\ No newline at end of file
......@@ -34,6 +34,7 @@ import com.ydl.ydl_image.manager.YDLImageCacheManager
import com.ydl.ydlcommon.base.BaseMvpActivity
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.bean.StatusBarOptions
import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.ui.LogoLoadingView
import com.ydl.ydlcommon.utils.BuryPointUtils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
......@@ -47,6 +48,7 @@ import com.yidianling.consultant.adapter.ExpertSearchAdapter
import com.yidianling.consultant.bean.ConsultantRecentCity
import com.yidianling.consultant.constants.ConsultBIConstants
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.POPUP_ICON_CLICK
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.PRICE_TYPE_CLICK
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.YDL_USER_CONSULT_SEARCH_CLICK
import com.yidianling.consultant.listener.OnCategoriesSelectedListener
import com.yidianling.consultant.listener.OnFilterConfirmListener
......@@ -83,6 +85,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private var locationRegionItem: RegionItem? = null
private var locationList: ArrayList<SubItem>? = arrayListOf()
private var locationHistoryList: ArrayList<RegionItem>? = arrayListOf()
private var eightcategoryPopup: EightCategoryPopupWindow? = null
override fun showImage(url: String?, imgView: ImageView) {
YDLImageCacheManager.showImage(ExpertSearchActivity@ this, url, imgView)
}
......@@ -126,6 +130,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
const val EXTRA_CATEGORY_NAME = "category_name"
const val EXTRA_SHOW_TYPE = "showType"
const val EXTRA_FROM_PAGE = "fromPage"
const val CATEID3IN = "cateid3in"
const val HOT_SEARCH_DOCTOR_NAME = "hot_search_doctor_name"
private const val EXTRA_IS_SHOW_HOT = "isInitShowHot"
private const val EXTRA_SEARCH_WORD = "searchWord"
......@@ -213,6 +218,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
private val doctorList = ArrayList<ExpertServiceItem>()
private var hasMore = true
private var initCategory = "0"
private var hasCateid = "0"
private var initCategoryCateid3 = "0"
private var initShowType: Int = 1
var mapFilter: Map<String, Any>? = null
......@@ -411,6 +418,12 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
mapFilter = mIntent.getSerializableExtra(GO_CRITERIA) as HashMap<String, Any>
}
initCategory = mIntent.getStringExtra("cateId") ?: ""
initCategoryCateid3 = mIntent.getStringExtra(CATEID3IN) ?: ""
if (!TextUtils.isEmpty(initCategoryCateid3) && initCategoryCateid3 != "0") {
allFilter.categoryId3List.add(initCategoryCateid3)
}
if (mIntent.getStringExtra("cateTitle") != null) {
cateName = mIntent.getStringExtra("cateTitle")
}
......@@ -430,10 +443,6 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
if (!TextUtils.isEmpty(initCategory) && initCategory != "0") {
allFilter.categoryId2List.add(initCategory)
}
if (!TextUtils.isEmpty(cateName)) {
tvSubject.text = cateName
updateFilterTextViewStatus(tvSubject, FILTER_STATUS_FILTERED)
}
getPresenter().fetchListHead()
recommendListView.requestData(initCategory)
......@@ -461,13 +470,43 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
v_loading.visibility = View.VISIBLE
v_loading.setViewType(LogoLoadingView.TYPE_LOADING, null)
hasCateid = mIntent.getStringExtra(IYDLRouterConstant.HASCATEID) ?: ""
doctorAdapter.clickCount = 0
doctorAdapter.setIsRecommendWords(isRecommendWords)
doctorAdapter.setEntrance(1)
getPresenter().fetchFunctionWord(2)
}
private fun hasCateid() {
//金刚位传递过来的cateid 如果八大分类 contain这个cateid就显示。否则不显示。
val mutableList = mutableListOf<MutableList<ChildrenBean>>()
mutableList.add(allFilter.childList)
mutableList.add(allFilter.stressList)
mutableList.add(allFilter.loveEmotionList)
mutableList.add(allFilter.marriedFamilyList)
mutableList.add(allFilter.personalGrowthList)
mutableList.add(allFilter.interpersonalRelationshipList)
mutableList.add(allFilter.careerDevelopmentList)
mutableList.add(allFilter.mentalHealthList)
var isShow = false
mutableList.forEachIndexed { index, item ->
if (item[0].cate_id == hasCateid) {
item[0].isSelected = true
isShow = true
}
}
if (isShow) {
if (!TextUtils.isEmpty(cateName)) {
tvSubject.text = cateName
updateFilterTextViewStatus(tvSubject, FILTER_STATUS_FILTERED)
}
} else {
tvSubject.text = "困扰"
updateFilterTextViewStatus(tvSubject, FILTER_STATUS_NORMAL)
}
}
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
initData(intent!!, true)
......@@ -543,6 +582,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
allFilter.mentalHealthList.add(childrenBean)
}
}
hasCateid()
}
override fun onFunctionWordFetched(wordBean: MutableList<FunctionWordBean>) {
......@@ -1025,7 +1065,8 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
hideSoftInput()
appbar_layout.setExpanded(false)
appbar_layout.postDelayed({
showSubjectPopupWindow()
// showSubjectPopupWindow()
showeightCategoryPopupWindow()
}, 300)
}
......@@ -1079,6 +1120,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
appbar_layout.setExpanded(false)
appbar_layout.postDelayed({
updateFilterTextViewStatus(tvSort, FILTER_STATUS_OPEN)
ActionCountUtils.count(PRICE_TYPE_CLICK)
showPricePopupWindow()
}, 300)
......@@ -1382,7 +1424,7 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
tempFilter, this
)
}
pricePopup!!.setOnDismissListener {
pricePopup?.setOnDismissListener {
if (tempFilter.priceRanges != null) {
updateFilterTextViewStatus(tvSort, FILTER_STATUS_FILTERED)
} else {
......@@ -1665,11 +1707,28 @@ class ExpertSearchActivity : BaseMvpActivity<IExpertSearchView, ExpertSearchPres
}
/**
* 显示八大类弹窗
*/
private fun showeightCategoryPopupWindow() {
eightcategoryPopup = EightCategoryPopupWindow(this, allFilter)
eightcategoryPopup?.setListener(this)
eightcategoryPopup?.setOnDismissListener {
viewDim.visibility = View.INVISIBLE
ConsultAssistantDialogUtils.INSTANCE.fitRequest(this, "doctor_list", true)
}
ConsultAssistantDialogUtils.INSTANCE.hideAssistantActivity()
eightcategoryPopup?.showAsDropDown(viewSep2)
updateFilterTextViewStatus(tvSubject, FILTER_STATUS_OPEN)
viewDim.visibility = View.VISIBLE
}
/**
* 主题选择确认回调
*
* 新增逻辑:当主题选择后,需要判断热门筛选中是否也有该主题,如果有,也需要同步更新选中状态
*/
override fun onCategoriesSelected(signLit: ArrayList<String>) {
eightcategoryPopup?.dismiss()
if (signLit.isNotEmpty()) {
val sign1 = signLit.joinToString(",") { it }
ActionCountUtils.baiDuCountSign3(
......
......@@ -50,6 +50,7 @@ import com.yidianling.common.tools.ToastUtil
import com.yidianling.consultant.adapter.ExpertSearchAdapter
import com.yidianling.consultant.bean.ConsultantRecentCity
import com.yidianling.consultant.constants.ConsultBIConstants
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultEvent.Companion.PRICE_TYPE_CLICK
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultantLocationAuth.Companion.REFUSE_ALREADY
import com.yidianling.consultant.constants.ConsultBIConstants.ConsultantLocationAuth.Companion.WHETHER_LOCATION_AUTH
import com.yidianling.consultant.listener.*
......@@ -96,6 +97,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
private var locationRegionItem: RegionItem? = null
private var locationList: ArrayList<SubItem>? = arrayListOf()
private var locationHistoryList: ArrayList<RegionItem>? = arrayListOf()
private var eightcategoryPopup: EightCategoryPopupWindow? = null
override fun layoutResId(): Int {
return R.layout.consultant_activity_expert_search_list
......@@ -908,7 +910,8 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
hideSoftInput()
appbar_layout.setExpanded(false)
appbar_layout.postDelayed({
showSubjectPopupWindow()
// showSubjectPopupWindow()
showeightCategoryPopupWindow()
}, 300)
}
......@@ -953,6 +956,7 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
appbar_layout.setExpanded(false)
appbar_layout.postDelayed({
updateFilterTextViewStatus(tvSort, FILTER_STATUS_OPEN)
ActionCountUtils.count(PRICE_TYPE_CLICK)
showPricePopupWindow()
}, 300)
......@@ -1518,10 +1522,27 @@ class ExpertSearchFragment : BaseMvpFragment<IExpertSearchView, ExpertSearchPres
}
/**
* 显示八大类弹窗
*/
private fun showeightCategoryPopupWindow() {
eightcategoryPopup = EightCategoryPopupWindow(mActivity, allFilter)
eightcategoryPopup?.setListener(this)
eightcategoryPopup?.setOnDismissListener {
viewDim.visibility = View.INVISIBLE
showConsultAssistantDialog()
}
hideConsultAssistantDialog()
eightcategoryPopup?.showAsDropDown(viewSep2)
updateFilterTextViewStatus(tvSubject, FILTER_STATUS_OPEN)
viewDim.visibility = View.VISIBLE
}
/**
* 主题选择确认回调
*
*/
override fun onCategoriesSelected(signLit: ArrayList<String>) {
eightcategoryPopup?.dismiss()
if (signLit.isNotEmpty()) {
val sign1 = signLit.joinToString(",") { it }
ActionCountUtils.baiDuCountSign3(
......
......@@ -127,6 +127,9 @@ class ExpertSearchPresenter : SimplePresenter<IExpertSearchView>() {
}
if (allFilter.sub.code != null&&allFilter.sub.code!=allFilter.region.code) {
filterMap["city_code"] = allFilter.sub.code
if (allFilter.sub.provinceCode.isNotEmpty()) {
filterMap["province_code"] = allFilter.sub.provinceCode
}
}
}
// 咨询方式
......
package com.yidianling.consultant.adapter
import android.annotation.SuppressLint
import android.content.Context
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidianling.consultant.R
import com.yidianling.consultant.model.bean.ChildrenBean
import com.yidianling.consultant.model.bean.EightCategoryBean
import kotlinx.android.synthetic.main.consultant_layout_category_view.*
import kotlinx.android.synthetic.main.eight_category_detail_list_item.view.*
import kotlinx.android.synthetic.main.eight_category_list_item.view.*
/**
* Created by zqk on 17-9-20.
*/
class CategoryDetailAdapter(
private val context: Context,
private val categoryDetailList: MutableList<MutableList<ChildrenBean>>,
private val categoryNamelList: MutableList<EightCategoryBean>,
) : RecyclerView.Adapter<CategoryDetailAdapter.ViewHolder>() {
lateinit var outAdapterClicklistener: OutAdapterClicklistener
override fun getItemCount(): Int = categoryNamelList.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView =
LayoutInflater.from(context)
.inflate(R.layout.eight_category_detail_list_item, parent, false)
return ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, @SuppressLint("RecyclerView") position: Int) {
holder.category_name.text = categoryNamelList[position].string
val eightCategoryAdapter = CategoryDetailTextAdapter(context, categoryDetailList[position])
eightCategoryAdapter.setOnClick(object :
CategoryDetailTextAdapter.TextAdapterOnclickListener {
override fun textOnClick(textPosition: Int) {
outAdapterClicklistener.outAdapterClick(position, textPosition)
}
})
if (categoryDetailList[position].size > 9) {
holder.collapse_hide.visibility = View.VISIBLE
holder.arrow_collapse_hide.visibility = View.VISIBLE
} else {
holder.collapse_hide.visibility = View.GONE
holder.arrow_collapse_hide.visibility = View.GONE
}
if (categoryNamelList[position].collapse) {
eightCategoryAdapter.setAllVisible()
holder.collapse_hide.text = "收起"
holder.arrow_collapse_hide.background =
context.resources.getDrawable(R.drawable.consult_hide_arrow)
} else {
eightCategoryAdapter.setGone()
holder.collapse_hide.text = "展开"
holder.arrow_collapse_hide.background =
context.resources.getDrawable(R.drawable.consult_collapse_arrow)
}
holder.collapse_hide.setOnClickListener {
if (categoryNamelList[position].collapse) {
//显示 展开
categoryNamelList[position].collapse = false
holder.collapse_hide.text = "展开"
holder.arrow_collapse_hide.background =
context.resources.getDrawable(R.drawable.consult_collapse_arrow)
eightCategoryAdapter.setGone()
} else {
//显示收起
categoryNamelList[position].collapse = true
holder.collapse_hide.text = "收起"
holder.arrow_collapse_hide.background =
context.resources.getDrawable(R.drawable.consult_hide_arrow)
eightCategoryAdapter.setAllVisible()
}
}
holder.category_list_detail.layoutManager = GridLayoutManager(context, 3)
holder.category_list_detail.adapter = eightCategoryAdapter
}
interface OutAdapterClicklistener {
fun outAdapterClick(outPosition: Int, inPosition: Int)
}
fun setOutClicklistener(listener: OutAdapterClicklistener) {
this.outAdapterClicklistener = listener
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val category_name = itemView.category_name
val category_list_detail = itemView.category_list_detail
val collapse_hide = itemView.collapse_hide
val arrow_collapse_hide = itemView.arrow_collapse_hide
}
}
\ No newline at end of file
package com.yidianling.consultant.adapter
import android.annotation.SuppressLint
import android.content.Context
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidianling.consultant.R
import com.yidianling.consultant.model.bean.ChildrenBean
import kotlinx.android.synthetic.main.consultant_layout_category_view.*
import kotlinx.android.synthetic.main.eight_category_detail_item_item.view.*
import kotlinx.android.synthetic.main.eight_category_detail_list_item.view.*
import kotlinx.android.synthetic.main.eight_category_list_item.view.*
/**
* Created by zqk on 17-9-20.
*/
class CategoryDetailTextAdapter(
private val context: Context,
private val categoryDetailList: MutableList<ChildrenBean>,
) : RecyclerView.Adapter<CategoryDetailTextAdapter.ViewHolder>() {
var isVisible = false
lateinit var textAdapterOnclickListener: TextAdapterOnclickListener
override fun getItemCount(): Int = categoryDetailList.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView =
LayoutInflater.from(context)
.inflate(R.layout.eight_category_detail_item_item, parent, false)
return ViewHolder(itemView)
}
@SuppressLint("UseCompatLoadingForDrawables")
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var param = RecyclerView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
if (categoryDetailList[position].isVisible) {
param.height = ViewGroup.LayoutParams.WRAP_CONTENT
param.width = ViewGroup.LayoutParams.MATCH_PARENT
param.setMargins(0, 0, 10, 10)
holder.itemView.visibility = View.VISIBLE
} else {
param.height = 0
param.width = 0
holder.itemView.visibility = View.GONE;
}
holder.itemView.layoutParams = param
holder.category_name_detail.text = categoryDetailList[position].cate_name
holder.category_name_detail.isSelected = categoryDetailList[position].isSelected
if (categoryDetailList[position].isSelected) {
holder.category_name_detail.setTextColor(context.resources.getColor(R.color.platform_main_theme))
holder.category_name_detail.background =
context.getDrawable(R.drawable.consult_price_expert_selected)
} else {
holder.category_name_detail.background =
context.getDrawable(R.drawable.consult_price_expert_unseleted)
holder.category_name_detail.setTextColor(context.resources.getColor(R.color.platform_color_333333))
}
holder.itemView.setOnClickListener {
textAdapterOnclickListener.textOnClick(position)
}
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val category_name_detail = itemView.category_name_detail
}
interface TextAdapterOnclickListener {
fun textOnClick(position: Int)
}
fun setOnClick(adapterOnclickListener: TextAdapterOnclickListener) {
this.textAdapterOnclickListener = adapterOnclickListener
}
fun setAllVisible() {
categoryDetailList.forEach { bean ->
bean.isVisible = true
}
notifyDataSetChanged()
isVisible = true
}
fun setGone() {
categoryDetailList.forEachIndexed { index, bean ->
if (index > 8) {
bean.isVisible = false
}
}
notifyDataSetChanged()
isVisible = false
}
}
\ No newline at end of file
package com.yidianling.consultant.adapter
import android.annotation.SuppressLint
import android.content.Context
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import com.yidianling.consultant.R
import com.yidianling.consultant.model.bean.EightCategoryBean
import kotlinx.android.synthetic.main.eight_category_list_item.view.*
/**
* Created by zqk on 17-9-20.
*/
class EightCategoryAdapter(
private val context: Context,
private val eightCateList: MutableList<EightCategoryBean>,
private val singleMultiple: Boolean
) : RecyclerView.Adapter<EightCategoryAdapter.ViewHolder>() {
lateinit var onLeftClickListener: OnLeftClickListener
override fun getItemCount(): Int = eightCateList.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView =
LayoutInflater.from(context).inflate(R.layout.eight_category_list_item, parent, false)
return ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.eight_name.text = eightCateList[position].string
holder.itemView.setOnClickListener {
onLeftClickListener.onLeftClick(position)
}
if (eightCateList[position].selected) {
holder.itemView.setBackgroundColor(ContextCompat.getColor(context, R.color.white))
holder.eight_name.setTextColor(
ContextCompat.getColor(
context,
R.color.platform_main_theme
)
)
if (singleMultiple) {
holder.single_selected_tag.visibility = View.VISIBLE
} else {
holder.single_selected_tag.visibility = View.INVISIBLE
}
} else {
holder.eight_name.setTextColor(
ContextCompat.getColor(
context,
R.color.platform_color_242424
)
)
holder.single_selected_tag.visibility = View.INVISIBLE
holder.itemView.setBackgroundColor(
ContextCompat.getColor(
context,
R.color.platform_color_F7F7F7
)
)
}
if (eightCateList[position].hasData) {
holder.multiple_choise.visibility = View.VISIBLE
} else {
holder.multiple_choise.visibility = View.INVISIBLE
}
}
interface OnLeftClickListener {
fun onLeftClick(leftPosition: Int)
}
fun setleftClick(leftListener: OnLeftClickListener) {
this.onLeftClickListener = leftListener
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val eight_name = itemView.eight_name
val multiple_choise = itemView.multiple_choise
val single_selected_tag = itemView.single_selected_tag
}
}
\ No newline at end of file
......@@ -79,6 +79,7 @@ class ConsultBIConstants {
const val PRICE_CHOICE_CLICK = "$CONSULT_FILTER_PRICE_PAGE|price_choice_click"
const val PRICE_SLIDE_CLICK = "$CONSULT_FILTER_PRICE_PAGE|price_slide_click"
const val BOTTOM_ICON_CLICK = "$CONSULT_FILTER_PRICE_PAGE|bottom_icon_click"
const val PRICE_TYPE_CLICK = "$CONSULT_FILTER_PRICE_PAGE|price_type_click"
}
}
class ConsultSearchListEvent {
......
......@@ -7,10 +7,7 @@ import com.ydl.ydlcommon.data.http.BaseAPIResponse
import com.ydl.ydlcommon.data.http.BaseResponse
import com.ydl.ydlnet.YDLHttpUtils
import com.yidianling.consultant.bean.*
import com.yidianling.consultant.model.bean.ExpertBean
import com.yidianling.consultant.model.bean.FunctionWordBean
import com.yidianling.consultant.model.bean.HeadData
import com.yidianling.consultant.model.bean.PromptPaymentBean
import com.yidianling.consultant.model.bean.*
import io.reactivex.Observable
import retrofit2.http.*
......@@ -42,6 +39,11 @@ interface SearchApi {
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
fun searchConditions(@Query("cateSource") cateSource: Int): Observable<BaseAPIResponse<HeadData>>
//查询八大类目包括
@GET("consult/search/v3/mix-cates")
@Headers(YDL_DOMAIN + YDL_DOMAIN_JAVA)
fun searchEightCategoryHotWord(): Observable<BaseAPIResponse<MutableList<CateItem>>>
//查询功能词、底纹词
//(1热门词,2底纹词,3跳转词)
@POST("function/word/queryList")
......
package com.yidianling.consultant.model.bean
data class EightCategoryBean(
val string: String,
var collapse: Boolean = false,
var selected: Boolean = false,
var hasData: Boolean = false
)
\ No newline at end of file
......@@ -15,5 +15,6 @@ data class SubItem(
@field:SerializedName("code")
var code: String? = null,
var locationCode: String? = ""
var locationCode: String? = "",
var provinceCode: String = ""
) : Parcelable
\ No newline at end of file
......@@ -8,9 +8,7 @@ import com.ydl.webview.NewH5Activity
import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.LogUtil
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.ydl.ydlnet.YDLHttpUtils.Companion.obtainApi
import com.yidianling.consultant.ConsultAssistantCenterActivity
......@@ -126,14 +124,12 @@ class ConsultAssistantDialogUtils private constructor() {
if (ConsultantIn.getUserImpl().isLogin()){
//获取用户uid
ActionCountUtils.count("main_page|main_daoyi_entry_click")
YdlBuryPointUtil.sendClick("home_page_assistant_click")
getConsultAssistantUid("", activity, 1)
}else{
ConsultantIn.getUserImpl().loginByOneKeyLoginCallBack(activity,true,object :LoginCallBackListener{
override fun loginSuccess() {
//获取用户uid
ActionCountUtils.count("main_page|main_daoyi_entry_click")
YdlBuryPointUtil.sendClick("home_page_assistant_click")
getConsultAssistantUid("", activity, 1)
}
override fun notLogin() {
......@@ -284,7 +280,6 @@ class ConsultAssistantDialogUtils private constructor() {
return@onClickAction
}
ActionCountUtils.count("app_consult_list_page|app_consult_list_daoyi_entry_click")
YdlBuryPointUtil.sendClick("assistant_list_click")
if (ConsultantIn.getUserImpl().isLogin()){
//获取用户uid
......@@ -316,7 +311,6 @@ class ConsultAssistantDialogUtils private constructor() {
return@onClickAction
}
ActionCountUtils.count("app_consult_list_page|app_consult_list_daoyi_entry_click")
YdlBuryPointUtil.sendClick("assistant_list_click")
// 咨询师列表页面且未登录情况下,跳转登录页面
if (ConsultantIn.loginByOneKeyLogin(activity, true)) {
//获取用户uid
......
......@@ -17,7 +17,6 @@ package com.yidianling.consultant.preview;
*******************************************************************************/
import android.content.Context;
import android.os.Build;
/**
* @author rainb
......@@ -26,16 +25,8 @@ public final class VersionedGestureDetector {
public static GestureDetector newInstance(Context context,
OnGestureListener listener) {
final int sdkVersion = Build.VERSION.SDK_INT;
GestureDetector detector;
if (sdkVersion < Build.VERSION_CODES.ECLAIR) {
detector = new CupcakeGestureDetector(context);
} else if (sdkVersion < Build.VERSION_CODES.FROYO) {
detector = new EclairGestureDetector(context);
} else {
detector = new FroyoGestureDetector(context);
}
detector.setOnGestureListener(listener);
......
......@@ -140,6 +140,9 @@ class AreaPopupWindow(
//倒序保留最近五次的搜索历史记录并去重
private fun saveCitySearchRecord(data: SubItem) {
if (data.value == "不限") return
if (selectedRegion.code.toString() != "0") data.provinceCode =
selectedRegion.code.toString()
recentCityBean?.let {
if (it.recentCity.size < 5) {
it.recentCity.add(0, data)
......
package com.yidianling.consultant.ui.view
import android.content.Context
import android.graphics.drawable.BitmapDrawable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.PopupWindow
import androidx.fragment.app.FragmentActivity
import com.yidianling.common.tools.RxImageTool
import com.yidianling.common.tools.asFragmentActivity
import com.yidianling.consultant.R
import com.yidianling.consultant.adapter.SortAdapter
import com.yidianling.consultant.layoutmanager.FlowLayoutManager
import com.yidianling.consultant.listener.OnCategoriesSelectedListener
import com.yidianling.consultant.model.bean.AllFilter
import com.yidianling.consultant.model.bean.ChildrenBean
import com.yidianling.consultant.ui.view.topView.EightCategoryView
import kotlinx.android.synthetic.main.consultant_ui_eight_category_popup_window.view.*
import kotlinx.android.synthetic.main.consultant_ui_subject_popup_window.view.*
import kotlinx.android.synthetic.main.consultant_ui_subject_popup_window.view.btnConfirm
import kotlinx.android.synthetic.main.consultant_ui_subject_popup_window.view.btn_reset
/**
* 主题弹窗
* Created by zqk on 17-9-15.
*/
class EightCategoryPopupWindow(context: Context, allFilter: AllFilter) :
PopupWindow(ViewGroup.LayoutParams.MATCH_PARENT, RxImageTool.dp2px(566f)) {
private var view: View = LayoutInflater.from(context)
.inflate(R.layout.consultant_ui_eight_category_popup_window, null)
var mAllFilter: AllFilter
private var context: Context
var onSubjectsSelectedListener: OnCategoriesSelectedListener? = null
lateinit var mutableList: MutableList<MutableList<ChildrenBean>>
private val signList = ArrayList<String>() // 用于埋点
init {
this.contentView = view
this.isFocusable = true
this.context = context
@Suppress("DEPRECATION")
this.setBackgroundDrawable(BitmapDrawable())
this.isOutsideTouchable = true
mAllFilter = allFilter
initView()
}
fun setListener(onSubjectsSelectedListener: OnCategoriesSelectedListener) {
this.onSubjectsSelectedListener = onSubjectsSelectedListener
val eightCategoryView = EightCategoryView(context, false)
eightCategoryView.setData(mutableList, mAllFilter, onSubjectsSelectedListener, false)
view.eight_category_fl.addView(eightCategoryView)
}
private fun initView() {
inputMethodMode = INPUT_METHOD_NEEDED
mutableList = mutableListOf<MutableList<ChildrenBean>>()
mutableList.add(mAllFilter.childList)
mutableList.add(mAllFilter.stressList)
mutableList.add(mAllFilter.loveEmotionList)
mutableList.add(mAllFilter.marriedFamilyList)
mutableList.add(mAllFilter.personalGrowthList)
mutableList.add(mAllFilter.interpersonalRelationshipList)
mutableList.add(mAllFilter.careerDevelopmentList)
mutableList.add(mAllFilter.mentalHealthList)
// val fragmentTransaction = context?.asFragmentActivity()?.supportFragmentManager?.beginTransaction()
// val searchFragment=ConsultCategoryFragment()
// fragmentTransaction?.add(R.id.eight_category_fl,searchFragment)?.commit()
}
}
\ No newline at end of file
......@@ -24,6 +24,8 @@ import com.yidianling.consultant.model.bean.PriceRangesItem
import com.yidianling.consultant.model.bean.ReorderItem
import kotlinx.android.synthetic.main.consultant_item_filter.view.*
import kotlinx.android.synthetic.main.consultant_ui_filter_popup.view.*
import kotlinx.android.synthetic.main.consultant_ui_filter_popup.view.btnConfirm
import kotlinx.android.synthetic.main.consultant_ui_subject_popup_window.view.*
import kotlin.math.roundToInt
......@@ -91,7 +93,6 @@ class FilterPopupWindow(
//学历选择
initEduViews(view)
initKeyboardListener(view)
updateCount()
view.btnReset.setOnClickListener {
......@@ -110,6 +111,7 @@ class FilterPopupWindow(
@SuppressLint("UseCompatLoadingForDrawables")
private fun initShowSortViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
view.flSortType.removeAllViews()
for ((index, enquiry) in sortItems.withIndex()) {
val llTextView =
View.inflate(context, R.layout.consultant_item_filter, null) as TextView
......@@ -163,28 +165,11 @@ class FilterPopupWindow(
}
}
@SuppressLint("ClickableViewAccessibility")
private fun initKeyboardListener(view: View) {
val svFilter = view.findViewById<ScrollView>(R.id.sv_filter)
svFilter.setOnTouchListener { _, _ ->
false
}
val activity = context as Activity;
RxKeyboardTool.setKeyboardChangedListener(activity) { b: Boolean, i: Int, i1: Int, i2: Int ->
if (!b) {
//软键盘隐藏
updatePriceFilter()
}
}
}
private fun reset() {
tempFilter.showType = filterData.showType[0]
tempFilter.ages.clear()
tempFilter.doctorEdu.clear()
tempFilter.reorder = ReorderItem()
// 擅长人群
tempFilter.specialityCrowd.clear()
tempFilter.others.clear()
......@@ -235,6 +220,19 @@ class FilterPopupWindow(
v.paint.isFakeBoldText = false
}
}
initZiZhiViews(contentView)
initOtherViews(contentView)
initShowSortViews(contentView)
initShowTypeViews(contentView)
//咨询方式
initEnquiryViews(contentView)
//年龄选择
initAgeViews(contentView)
//擅长人群
initGoodAtCrowd(contentView)
//学历选择
initEduViews(contentView)
updateCount(ConsultBIConstants.POSITION_CONSULT_FILTER_RESET_CLICK)
}
......@@ -371,6 +369,7 @@ class FilterPopupWindow(
* */
private fun initOtherViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
view.flOther.removeAllViews()
for ((index, other) in filterData.other.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, dp36)
......@@ -418,6 +417,7 @@ class FilterPopupWindow(
* */
private fun initZiZhiViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(40f)) / 2
view.flZhizi.removeAllViews()
for (other in filterData.title) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, dp36)
......@@ -434,7 +434,6 @@ class FilterPopupWindow(
}
textView.tvFilterName.text = " " + other.value + " "
textView.setOnClickListener {
if (textView.isSelected) {
tempFilter.title.remove(other)
textView.isSelected = false
......@@ -459,6 +458,7 @@ class FilterPopupWindow(
*/
private fun initGoodAtCrowd(view: View) {
// 如果标标签数量大于20,取前20个默认展示
view.fl_crowd.removeAllViews()
if (filterData.specialityCrowd.size > 20) {
view.ll_crowd_more.visibility = View.VISIBLE
view.ll_crowd_more.setOnClickListener {
......@@ -525,6 +525,7 @@ class FilterPopupWindow(
* */
private fun initAgeViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
view.flAge.removeAllViews()
for ((index, age) in filterData.age.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, RxImageTool.dp2px(36f))
......@@ -572,6 +573,7 @@ class FilterPopupWindow(
* */
private fun initEduViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
view.fl_edu.removeAllViews()
for ((index, edu) in filterData.doctorEdu.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, RxImageTool.dp2px(36f))
......@@ -616,6 +618,7 @@ class FilterPopupWindow(
private fun initEnquiryViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(52f)) / enquirySize
view.flEnquiryType.removeAllViews()
for ((index, enquiry) in filterData.enquiry.withIndex()) {
val llLayout = View.inflate(context, R.layout.consultant_method_item_filter, null)
val textView: TextView = llLayout.findViewById(R.id.tvFilterName)
......@@ -670,21 +673,10 @@ class FilterPopupWindow(
}
}
private fun updatePriceFilter() {
if (tempFilter.priceRanges == null) {
val priceRangesItem = PriceRangesItem()
tempFilter.priceRanges = priceRangesItem;
}
tempFilter.priceRangesView?.isSelected = false
tempFilter.priceRangesView?.paint?.isFakeBoldText = false
tempFilter.priceRangesView = null
updateCount(ConsultBIConstants.POSITION_AVERAGE_SERVICE_INPUT)
}
private fun initShowTypeViews(view: View) {
val mWidth = (popWidth - RxImageTool.dp2px(42f)) / 2
view.flShowType.removeAllViews()
for ((index, showType) in filterData.showType.withIndex()) {
val textView = View.inflate(context, R.layout.consultant_item_filter, null) as TextView
val params = FrameLayout.LayoutParams(mWidth, dp36)
......
......@@ -28,8 +28,7 @@ import kotlinx.android.synthetic.main.consultant_ui_price_popup_window.view.*
/**
* 排序弹窗
* Created by zqk on 17-9-15.
* 价格筛选弹窗
*/
class PricePopupWindow(
val context: Context,
......
......@@ -15,7 +15,6 @@ import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.os.Build;
import android.text.TextUtils;
import android.util.AttributeSet;
......@@ -571,11 +570,7 @@ public class SeekBar {
public void setThumbInactivatedDrawableId(@DrawableRes int thumbInactivatedDrawableId, int width, int height) {
if (thumbInactivatedDrawableId != 0 && getResources() != null) {
this.thumbInactivatedDrawableId = thumbInactivatedDrawableId;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
thumbInactivatedBitmap = Utils.drawableToBitmap(width, height, getResources().getDrawable(thumbInactivatedDrawableId, null));
} else {
thumbInactivatedBitmap = Utils.drawableToBitmap(width, height, getResources().getDrawable(thumbInactivatedDrawableId));
}
}
}
......@@ -589,22 +584,14 @@ public class SeekBar {
}
if (thumbDrawableId != 0 && getResources() != null) {
this.thumbDrawableId = thumbDrawableId;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
thumbBitmap = Utils.drawableToBitmap(thumbWidth, thumbHeight, getResources().getDrawable(thumbDrawableId, null));
} else {
thumbBitmap = Utils.drawableToBitmap(thumbWidth, thumbHeight, getResources().getDrawable(thumbDrawableId));
}
}
}
public void setThumbDrawableId(@DrawableRes int thumbDrawableId, int width, int height) {
if (thumbDrawableId != 0 && getResources() != null && width > 0 && height > 0) {
this.thumbDrawableId = thumbDrawableId;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
thumbBitmap = Utils.drawableToBitmap(width, height, getResources().getDrawable(thumbDrawableId, null));
} else {
thumbBitmap = Utils.drawableToBitmap(width, height, getResources().getDrawable(thumbDrawableId));
}
}
}
......
......@@ -10,7 +10,6 @@ import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.Log;
import androidx.annotation.ColorRes;
......@@ -42,11 +41,7 @@ public class Utils {
public static Bitmap drawableToBitmap(Context context, int width, int height, int drawableId) {
if (context == null || width <= 0 || height <= 0 || drawableId == 0) return null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return Utils.drawableToBitmap(width, height, context.getResources().getDrawable(drawableId, null));
} else {
return Utils.drawableToBitmap(width, height, context.getResources().getDrawable(drawableId));
}
}
/**
......
package com.yidianling.consultant.ui.view.topView
import android.content.Context
import androidx.recyclerview.widget.LinearSmoothScroller
class LinearTopSmoothScroller(context: Context?) : LinearSmoothScroller(context) {
override fun getVerticalSnapPreference(): Int {
return SNAP_TO_START
}
}
\ No newline at end of file
......@@ -5,8 +5,8 @@
android:layout_height="wrap_content"
android:background="@color/white"
android:gravity="center_vertical"
android:paddingTop="@dimen/platform_dp_15"
android:paddingBottom="@dimen/platform_dp_15"
android:paddingTop="@dimen/platform_dp_17"
android:paddingBottom="@dimen/platform_dp_17"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp">
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/ll_view"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/eight_category"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:background="@color/platform_color_F7F7F7"
android:orientation="vertical" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/category_detail"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="68dp"
android:background="@color/white"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp">
<TextView
android:id="@+id/btn_reset"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_weight="1"
android:background="@drawable/consultant_stroke_ebebeb_r_8"
android:gravity="center"
android:text="@string/platform_reset"
android:textColor="@color/platform_color_242424"
android:textSize="16sp" />
<TextView
android:id="@+id/btnConfirm"
android:layout_width="0dp"
android:layout_height="44dp"
android:layout_marginStart="13dp"
android:layout_weight="1"
android:background="@drawable/consultant_solid_main_theme_color_r_8"
android:gravity="center"
android:text="@string/platform_confirm"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
layout="@layout/consultant_layout_search_toolbar"
android:layout_width="match_parent"
android:layout_height="48dp" />
<LinearLayout
android:id="@+id/eight_view_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/eight_category_fl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</LinearLayout>
\ No newline at end of file
......@@ -17,6 +17,6 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@color/white"
android:layout_weight="2"
android:layout_weight="3"
android:overScrollMode="never"/>
</LinearLayout>
......@@ -9,6 +9,7 @@
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scroll_nested"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
......
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/category_name_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/platform_dp_5"
android:layout_marginBottom="@dimen/platform_dp_5"
android:background="@drawable/consult_price_expert_unseleted"
android:gravity="center"
android:minHeight="@dimen/platform_dp_40"
android:paddingStart="@dimen/platform_dp_10"
android:paddingTop="@dimen/platform_dp_6"
android:paddingRight="@dimen/platform_dp_10"
android:paddingBottom="@dimen/platform_dp_6"
android:textColor="@color/platform_color_333333"
android:textSize="@dimen/platform_sp_12"
tools:text="aaaaaaaaa">
</TextView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/platform_dp_12"
android:layout_marginEnd="@dimen/platform_dp_12"
android:orientation="vertical"
android:paddingTop="@dimen/platform_dp_12"
android:paddingBottom="@dimen/platform_dp_13">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/platform_dp_12"
android:gravity="center">
<TextView
android:id="@+id/category_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="恋爱情感"
android:textColor="#1c212d"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/collapse_hide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:padding="@dimen/platform_dp_5"
android:text="展开"
android:textColor="@color/platform_main_theme"
android:textSize="@dimen/platform_sp_12" />
<ImageView
android:id="@+id/arrow_collapse_hide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/consult_collapse_arrow">
</ImageView>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/category_list_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center"
android:orientation="horizontal">
<View
android:id="@+id/single_selected_tag"
android:layout_width="3dp"
android:layout_height="@dimen/platform_dp_15"
android:background="@color/platform_main_theme"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/multiple_choise"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/alert_selected"
android:backgroundTint="@color/platform_main_theme"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:visibility="gone">
</ImageView>
<TextView
android:id="@+id/eight_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/platform_dp_3"
android:layout_marginTop="@dimen/platform_dp_15"
android:layout_marginBottom="@dimen/platform_dp_15"
android:textColor="@color/color_242424"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textSize="@dimen/sp_14"
tools:text="情绪压力">
</TextView>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -8,7 +8,6 @@ android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
......
......@@ -5,9 +5,7 @@ import android.app.AlertDialog
import android.content.Intent
import android.content.res.Configuration
import android.graphics.Color
import android.os.Build
import android.os.Handler
import androidx.recyclerview.widget.LinearLayoutManager
import android.text.TextUtils
import android.view.View
import android.view.ViewGroup
......@@ -15,6 +13,7 @@ import android.view.WindowManager
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import com.alibaba.android.arouter.facade.annotation.Route
import com.bumptech.glide.Glide
import com.dou361.ijkplayer.widget.PlayStateParams
......@@ -52,7 +51,6 @@ import com.yidianling.ydl_pay.common.CommonPayDialog
import kotlinx.android.synthetic.main.activity_course_play.*
import org.json.JSONException
import org.json.JSONObject
import java.util.*
/**
* 课程播放页面
......@@ -324,7 +322,6 @@ class CoursePlayActivity : BaseActivity() {
}
private fun initWindows() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
val window = window
//获取状态栏高度
var statusBarheight: Int = ScreenUtil.getStatusBarHeight(mContext)
......@@ -336,16 +333,11 @@ class CoursePlayActivity : BaseActivity() {
RxImageTool.dp2px(15f),
0
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.statusBarColor = Color.TRANSPARENT
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
} else {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
}
}
}
private fun setMargins(v: View?, l: Int, t: Int, r: Int, b: Int) {
......
......@@ -2,15 +2,14 @@ package com.yidianling.course.widget
import android.annotation.SuppressLint
import android.app.Activity
import android.os.Build
import android.os.Handler
import androidx.annotation.DrawableRes
import androidx.annotation.Nullable
import androidx.annotation.RawRes
import android.view.View
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.SeekBar
import androidx.annotation.DrawableRes
import androidx.annotation.Nullable
import androidx.annotation.RawRes
import com.bumptech.glide.Glide
import com.ydl.media.audio.AudioPlayer
import com.ydl.media.audio.OnPlayerEventListener
......@@ -22,7 +21,6 @@ import com.yidianling.course.listener.HPlayStatusListener
import kotlinx.android.synthetic.main.course_play_music_view.view.*
/**
* Created by hgw on 2018/4/28.
*/
......@@ -279,6 +277,6 @@ class HPlayView : RelativeLayout, OnPlayerEventListener {
* @return
*/
fun isDestroy(): Boolean {
return mContext == null || mContext!!.isFinishing || Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && mContext!!.isDestroyed
return mContext == null || mContext!!.isFinishing || mContext?.isDestroyed == true
}
}
\ No newline at end of file
......@@ -14,7 +14,6 @@ android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
......
......@@ -5,14 +5,10 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
......@@ -20,19 +16,23 @@ import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.luck.picture.lib.photoview.PhotoView;
import com.miracle.view.imageeditor.utils.FileUtils;
import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseActivity;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.ydl.ydlcommon.ui.ParcelableImage;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.dynamic.bean.DynamicConstants;
import com.yidianling.dynamic.R;
import com.yidianling.dynamic.bean.DynamicConstants;
import com.yidianling.dynamic.common.net.DynamicApiUtils;
import com.yidianling.dynamic.common.tool.DownLoadImageService;
import com.yidianling.dynamic.common.tool.ImageDownLoadCallBack;
import com.yidianling.dynamic.model.Command;
import com.ydl.ydlcommon.ui.ParcelableImage;
import java.io.File;
import java.util.ArrayList;
......@@ -226,12 +226,10 @@ public class BrowsePicturesActivity extends BaseActivity implements ViewPager.On
}
private void initWindows() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
// window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
private Handler mHandler = new Handler() {
@SuppressLint("WrongConstant")
......
......@@ -3,26 +3,26 @@ package com.yidianling.dynamic.common.browsePictures;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.luck.picture.lib.photoview.PhotoView;
import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseActivity;
import com.yidianling.common.tools.ToastUtil;
import com.yidianling.dynamic.bean.DynamicConstants;
import com.yidianling.dynamic.R;
import com.yidianling.dynamic.bean.DynamicConstants;
import com.yidianling.dynamic.common.tool.DownLoadImageService;
import com.yidianling.dynamic.common.tool.ImageDownLoadCallBack;
......@@ -164,12 +164,10 @@ public class BrowsePicturesActivity2 extends BaseActivity implements ViewPager.O
}
private void initWindows() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
// window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
private Handler mHandler=new Handler(){
@Override
......
......@@ -7,14 +7,14 @@ import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.os.Build;
import androidx.core.view.ViewCompat;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.widget.ImageView;
import androidx.core.view.ViewCompat;
public class NineGridViewWrapper extends ImageView {
private int moreNum = 0; //显示更多的数量
......@@ -56,16 +56,8 @@ public class NineGridViewWrapper extends ImageView {
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (moreNum > 0) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
canvas.drawRoundRect(getWidth() / 2, 0f, getRight(), getHeight() / 4, 20f, 20f, mPaint);
}else {
mRectF.left=getWidth() / 2;
mRectF.top=0;
mRectF.bottom=getHeight() / 4;
mRectF.right=getRight();
canvas.drawRoundRect(mRectF,20f, 20f, mPaint);
}
// canvas.drawColor(maskColor);
// canvas.drawColor(maskColor);
float baseY = getHeight() / 8 - (textPaint.ascent() + textPaint.descent()) / 2;
canvas.drawText(msg, getWidth() / 2 + 10, baseY, textPaint);
}
......
......@@ -13,10 +13,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.appcompat.app.AlertDialog;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
......@@ -24,6 +20,11 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.gson.internal.LinkedTreeMap;
import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseActivity;
......@@ -197,17 +198,6 @@ public class MembersActivity extends BaseActivity implements View.OnClickListene
});
}
/* @SuppressLint("WrongConstant")
private void initWindows() {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
// window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
} else {
members_top_view.setVisibility(View.GONE);
}
}*/
/**
* 获取顶部图片高度后,设置滚动监听
*/
......
package com.yidianling.dynamic.trendsHome;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_PAGE_STAY_VISIT;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_PAGE_VISIT;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_QUESTIONS_BUTTON_CLICK;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_TYPE_CLICK;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_THOUGHTS_GROUP_MORE_CLICK;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_THOUGHTS_GROUP_TYPE_CLICK;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.appcompat.widget.Toolbar;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.viewpager.widget.ViewPager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseFragment;
import com.ydl.ydlcommon.utils.BuryPointUtils;
......@@ -43,13 +50,6 @@ import java.util.List;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_PAGE_STAY_VISIT;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_PAGE_VISIT;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_QUESTIONS_BUTTON_CLICK;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_ASK_TYPE_CLICK;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_THOUGHTS_GROUP_MORE_CLICK;
import static com.yidianling.dynamic.bean.DynamicConstants.YDL_USER_THOUGHTS_GROUP_TYPE_CLICK;
/**
* Created by Jim on 2017/9/22 0022.
* 首页问答fragment
......@@ -151,7 +151,7 @@ public class TrendsHomeFragment extends BaseFragment implements ITrendHomeView,
}
private void initStatus() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4以下不支持状态栏变色
//4.4以下不支持状态栏变色
int statusBarHeight = ScreenUtil.getStatusBarHeight(getActivity());
CollapsingToolbarLayout.LayoutParams layoutParams = (CollapsingToolbarLayout.LayoutParams) mToolBarTv.getLayoutParams();
layoutParams.height = (int) (getResources().getDimension(R.dimen.title_bar_height) + statusBarHeight);
......@@ -159,7 +159,6 @@ public class TrendsHomeFragment extends BaseFragment implements ITrendHomeView,
mToolBarTv.setLayoutParams(layoutParams);
}
}
private void initDatas() {
mPresenter = new TrendsHomePresenter();
......
......@@ -5,9 +5,7 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import androidx.cardview.widget.CardView;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
......@@ -21,6 +19,8 @@ import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.cardview.widget.CardView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.ydl.media.audio.AudioPlayer;
import com.ydl.media.audio.OnPlayerEventListener;
......@@ -269,18 +269,12 @@ public class FMDetailActivity extends BaseActivity implements View.OnClickListen
int changeProgress = 0;
void init() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.setStatusBarColor(Color.TRANSPARENT);
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);
} else {
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
fm_progress.setMax(max_progress);
tb_title.setDivideVisible(View.GONE);
tb_title.setLeftListener(new View.OnClickListener() {
......
......@@ -270,15 +270,14 @@ open class HomeBaseImpl : IHomeBaseEvent {
} else if (data.goType.equals("h5")) {
NewH5Activity.start(mContext, H5Params(data.goUrl.toString(), ""))
} else if (data.goType.equals("special_categories")) {
ARouter.getInstance().build("/consult/list")
.withInt(IYDLRouterConstant.EXTRA_SHOWTYPE, 0)
.withString(IYDLRouterConstant.EXTRA_CATETITLE, data.title)
.withSerializable(IYDLRouterConstant.GO_CRITERIA, data.goCriteriaMap)
//全部
ARouter.getInstance().build("/consult/eightcategory")
.navigation()
} else {
ARouter.getInstance().build("/consult/list")
.withInt(IYDLRouterConstant.EXTRA_SHOWTYPE, 0)
.withString(IYDLRouterConstant.EXTRA_CATETITLE, data.title)
.withString(IYDLRouterConstant.HASCATEID, data.cateId)
.withSerializable(IYDLRouterConstant.GO_CRITERIA, data.goCriteriaMap)
.navigation()
}
......
......@@ -69,6 +69,7 @@ class HomeHeaderBean : HomeItemBaseBean {
var icon: String? = "",
var goType: String? = "",
var goUrl: String? = "",
var cateId: String? = "",
var goCriteriaMap: HashMap<String, Any>? = null
) : Serializable
......
......@@ -2,18 +2,16 @@ package com.yidianling.home.ui.view
import android.content.Context
import android.graphics.Typeface
import android.os.Build
import com.google.android.material.tabs.TabLayout
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.tabs.TabLayout
import com.yidianling.common.tools.LogUtil
import com.yidianling.home.R
import com.yidianling.home.event.HomeImpl
import com.yidianling.home.event.IHomeBaseEvent
import com.yidianling.home.model.bean.HomeConfideBean
import com.yidianling.home.model.bean.HomeHeaderBean
import kotlinx.android.synthetic.xlzx.home_confide_view.view.*
......@@ -83,13 +81,11 @@ class HomeConfideView(private val mContext: Context, private var homeEvent: Home
textView.setTextColor(ContextCompat.getColor(mContext, R.color.platform_color_242424))
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
tab_layout.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
LogUtil.e("scrollX=$scrollX")
LogUtil.e("oldScrollX=$oldScrollX")
}
}
}
/**
* 设置数据
......
......@@ -3,7 +3,6 @@ package com.yidianling.home.ui.view
import android.content.Context
import android.graphics.Color
import android.graphics.Typeface
import android.os.Build
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
......@@ -98,14 +97,13 @@ class HomeConsultView(private val mContext: Context, private var homeEvent: IHom
try {
var textView = tab_layout.getTabAt(0) as TextView
updateText(textView, true)
} catch (e: Exception) {}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
} catch (e: Exception) {
}
tab_layout.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
LogUtil.e("scrollX=$scrollX")
LogUtil.e("oldScrollX=$oldScrollX")
}
}
}
/**
* 设置数据
......
......@@ -6,7 +6,6 @@ import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.ydl.ydlcommon.view.banner.GlideImageLoader
import com.yidianling.common.tools.RxDeviceTool
import com.yidianling.common.tools.RxImageTool
......@@ -68,10 +67,6 @@ class HomeImageBannerView(val mContext: Context, val homeEvent: IHomeBaseEvent)
.setImages(imageViews).start()
banner_search.setOnBannerListener {
homeEvent?.bannerClick(cacheList!![it])
YdlBuryPointUtil.sendClick(
"ydl-xinlizixun-home-banner$it",
"${cacheList[it].imageUrl}"
)
}
}
}
......
......@@ -9,6 +9,7 @@ import android.view.ViewGroup
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.data.PlatformDataManager
import com.yidianling.home.R
import com.yidianling.home.constract.HomeViewConfig
import com.yidianling.home.event.HomeImpl
......@@ -133,7 +134,7 @@ class YdlHomeAdapter(private val mContext: Context,
when (viewType) {
//顶部ViewPager与分类模块
HomeViewConfig.getOrder().bannerIndex -> {
if (viewType == -1){
if (viewType == -1) {
//空布局
val view = View(mContext)
val layoutParams = ViewGroup.LayoutParams(
......@@ -141,8 +142,13 @@ class YdlHomeAdapter(private val mContext: Context,
ViewGroup.LayoutParams.MATCH_PARENT
)
view.layoutParams = layoutParams
//抑郁焦虑测试适配代码
if (PlatformDataManager.getRam().getChannelName().contains("yyjlcs")) {
view.layoutParams =
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1)
}
view.visibility = View.GONE
return HomePagerBannerViewHolder(view,viewType)
return HomePagerBannerViewHolder(view, viewType)
}
return HomePagerBannerViewHolder(HomePagerBannerView(mContext, homeEvent),viewType)
}
......
......@@ -20,7 +20,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Action
import io.reactivex.functions.Consumer
import io.reactivex.schedulers.Schedulers
import java.util.*
/**
......@@ -106,13 +105,6 @@ class HomePresenterImpl: BaseHomePresenterImpl<IHomeContract.View, IHomeContract
homeList.add(getHomeItemFromTempData(it, HomeViewConfig.getOrder().dynamicIndex!!))
}
val museObservable = mModel.museRequest()
.compose(RxUtils.applySchedulers(mView)).map {
//首页冥想数据
homeList.add(getHomeItemFromTempData(it, HomeViewConfig.getOrder().museIndex!!))
}
val meditationObservable = mModel.getMeditation()
.compose(RxUtils.applySchedulers(mView)).map {
homeList.add(getHomeItemFromTempData(it,HomeViewConfig.getOrder().museIndex!!))
......@@ -159,9 +151,6 @@ class HomePresenterImpl: BaseHomePresenterImpl<IHomeContract.View, IHomeContract
if (HomeViewConfig.getOrder().museIndex!=null){
mergeArrays.add(meditationObservable)
}
// if (HomeViewConfig.getOrder().museIndex!=null){
// mergeArrays.add(museObservable)
// }
if (HomeViewConfig.getOrder().fmIndex!=null){
mergeArrays.add(fmObservable)
}
......@@ -205,12 +194,6 @@ class HomePresenterImpl: BaseHomePresenterImpl<IHomeContract.View, IHomeContract
)
}
})
//长日志打印
// HomeLogPrinter.printLongLog(
// HomePresenterImpl::class.java.simpleName,
// Gson().toJson(homeList)
// )
})
}
......@@ -307,10 +290,6 @@ class HomePresenterImpl: BaseHomePresenterImpl<IHomeContract.View, IHomeContract
if (dataBean.isRealEmpty || dataBean !is HomeAskBean) homeTempData.askBean else dataBean
mHomeAskBean = item.askBean
}
// HomeViewConfig.getOrder().museIndex -> {
// item.museBean =
// if (dataBean.isRealEmpty || dataBean !is MuseModuleBean) homeTempData.museBean else dataBean
// }
HomeViewConfig.getOrder().museIndex -> {
item.meditationBean =
if (dataBean.isRealEmpty || dataBean !is MeditationModuleBean) homeTempData.meditationBean else dataBean
......
......@@ -23,7 +23,9 @@ import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydl_router.manager.YDLRouterManager
import com.ydl.ydlcommon.base.BaseMvpFragment
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.utils.*
import com.ydl.ydlcommon.utils.SharedPreferencesEditor
import com.ydl.ydlcommon.utils.StatusBarUtils
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils
import com.yidianling.consultant.OnBottomWordListener
import com.yidianling.consultant.api.IConsultantService
......@@ -698,9 +700,13 @@ open class YdlHomeFragment : BaseMvpFragment<IHomeContract.View, HomePresenterIm
}
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
}
val minus = list?.size ?: -1
if (minus != -1 && tab.position < minus) {
list?.get(tab.position)?.let { homeEvent?.getConfideData(it, tab.position) }
}
}
}
override fun onDestroyView() {
super.onDestroyView()
......
......@@ -72,19 +72,20 @@ class HomeConfideView(private val mContext: Context, private var homeEvent: IHom
}
listener = ConfideExpertTabSelectedListener(list, tab_layout)
tab_layout.addOnTabSelectedListener(listener!!)
var textView = ((tab_layout!!.getChildAt(0) as LinearLayout).getChildAt(lastPosition) as LinearLayout).getChildAt(1)
var textView =
((tab_layout!!.getChildAt(0) as LinearLayout).getChildAt(lastPosition) as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
textView.textSize = 17f
textView.setTextColor(ContextCompat.getColor(mContext, R.color.platform_color_242424))
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
tab_layout.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
LogUtil.e("scrollX=$scrollX")
LogUtil.e("oldScrollX=$oldScrollX")
}
}
}
/**
* 设置数据
......
......@@ -75,19 +75,20 @@ class HomeConsultView(private val mContext: Context, private var homeEvent: IHom
}
listener = ConsultTabSelectedListener(list, tab_layout)
tab_layout.addOnTabSelectedListener(listener!!)
val textView = ((tab_layout!!.getChildAt(0) as LinearLayout).getChildAt(lastPosition) as LinearLayout).getChildAt(1)
val textView =
((tab_layout!!.getChildAt(0) as LinearLayout).getChildAt(lastPosition) as LinearLayout).getChildAt(
1
)
if (textView != null && textView is TextView) {
textView.textSize = 17f
textView.setTextColor(ContextCompat.getColor(mContext, R.color.platform_color_242424))
textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
tab_layout.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
LogUtil.e("scrollX=$scrollX")
LogUtil.e("oldScrollX=$oldScrollX")
}
}
}
/**
* 设置数据
......
......@@ -5,13 +5,12 @@ import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.RelativeLayout
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.ydl.ydlcommon.view.banner.GlideImageLoader
import com.yidianling.common.tools.RxDeviceTool
import com.yidianling.common.tools.RxImageTool
import com.yidianling.home.R
import com.yidianling.home.event.IHomeBaseEvent
import com.yidianling.home.model.bean.HomeHeaderBean
import com.yidianling.common.tools.RxDeviceTool
import com.yidianling.common.tools.RxImageTool
import kotlinx.android.synthetic.ydl.home_pager_banner_view.view.*
......@@ -115,7 +114,6 @@ class HomePagerBannerView(private val mContext: Context, private var homeEvent:
homeModulePagerBannerViewBanner.setOnBannerListener {
if (it < cacheList?.size) {
homeEvent?.bannerClick(cacheList[it])
YdlBuryPointUtil.sendClick("ydl-user-home-banner$it","${cacheList[it].imageUrl}")
}
}
}
......
......@@ -165,6 +165,7 @@
android:layout_width="45dp"
android:layout_height="@dimen/platform_dp_22"
android:visibility="visible"
android:layout_marginStart="@dimen/platform_dp_8"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
......
......@@ -14,7 +14,6 @@ android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
......@@ -52,22 +51,20 @@ android {
dependencies {
api fileTree(dir: 'libs', include: ['*.aar','*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
kapt 'com.alibaba:arouter-compiler:1.2.2'
implementation 'com.ydl:nim-base:1.1.0.7'
// implementation 'com.netease.nimlib:basesdk:8.5.0'
implementation 'com.netease.nimlib:avchat:9.1.1'
implementation 'com.netease.nimlib:nrtc:9.1.1'
implementation 'com.ydl:nim-base:1.1.1.2'
implementation 'com.netease.nimlib:avchat:9.2.1'
implementation 'com.netease.nimlib:nrtc:9.2.1'
api rootProject.ext.dependencies["ydl-user-router"]
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapterHelper"]
api 'com.tencent.tbs.tbssdk:sdk:43903'
implementation('com.netease.yunxin.kit:call-ui:1.6.1') {
exclude group: "com.netease.nimlib", module: "avsignalling"
exclude group: "com.netease.nimlib", module: "basesdk"
}
implementation "com.netease.nimlib:avsignalling:9.1.1"
implementation "com.netease.nimlib:avsignalling:9.2.1"
api project(':ydl-webview')
api project(':ydl-platform')
......
package com.yidianling.avchatkit;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Handler;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;
import com.netease.nimlib.sdk.avchat.model.AVChatData;
import com.yidianling.avchatkit.activity.AVChatActivity;
......@@ -52,20 +49,6 @@ public class AVChatProfile {
Runnable runnable = new Runnable() {
@Override
public void run() {
/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && AppForegroundWatcherCompat.isBackground()) {
backgroundIncomingCallData = data;
backgroundIncomingCallNotification = new AVChatNotification(AVChatKit.getContext());
backgroundIncomingCallNotification.init(data.getAccount(), displayName);
backgroundIncomingCallNotification.activeIncomingCallNotification(true, backgroundIncomingCallData);
} else {
// 启动,如果 task正在启动,则稍等一下
if (AVChatKit.isMainTaskLaunching()) {
launchIncomingCall(data, displayName, source);
} else {
launchActivityTimeout();
AVChatActivity.incomingCall(AVChatKit.getContext(), data, displayName, source);
}}*/
// 启动,如果 task正在启动,则稍等一下
if (AVChatKit.isMainTaskLaunching()) {
launchIncomingCall(data, displayName, source);
......
......@@ -175,7 +175,6 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
cancelCallingNotifier();
if (hasOnPause) {
avChatVideoUI.onResume();
avChatController.resumeVideo();
hasOnPause = false;
}
......@@ -184,8 +183,8 @@ public class AVChatActivity extends AVChatBaseUI implements AVChatVideoUI.TouchZ
@Override
protected void onPause() {
super.onPause();
// avChatController.pauseVideo();
// hasOnPause = true;
hasOnPause = true;
}
@Override
......
package com.yidianling.avchatkit.common.activity;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.yidianling.avchatkit.common.TFragment;
import com.yidianling.avchatkit.common.log.LogUtil;
import com.yidianling.avchatkit.common.util.ReflectionUtil;
......@@ -183,14 +183,9 @@ public abstract class AVChatBaseUI extends AppCompatActivity {
public boolean isDestroyedCompatible() {
if (Build.VERSION.SDK_INT >= 17) {
return isDestroyedCompatible17();
} else {
return destroyed || super.isFinishing();
}
}
@TargetApi(17)
private boolean isDestroyedCompatible17() {
return super.isDestroyed();
}
......
package com.yidianling.avchatkit.common.permission;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.fragment.app.Fragment;
import android.util.Log;
import androidx.fragment.app.Fragment;
import java.util.ArrayList;
import java.util.List;
......@@ -18,10 +17,6 @@ public class BaseMPermission {
GRANTED, DENIED, DENIED_NEVER_ASK_AGAIN
}
static boolean isOverMarshmallow() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
}
static Activity getActivity(Object object) {
if (object instanceof Fragment) {
return ((Fragment) object).getActivity();
......@@ -42,12 +37,9 @@ public class BaseMPermission {
return findPermissionResult(fragment.getActivity(), permissions);
}
@TargetApi(value = Build.VERSION_CODES.M)
private static List<MPermissionResultEnum> findPermissionResult(Activity activity, String... permissions) {
boolean overM = isOverMarshmallow();
List<MPermissionResultEnum> result = new ArrayList<>();
for (String p : permissions) {
if (overM) {
if (activity.checkSelfPermission(p) == PackageManager.PERMISSION_GRANTED) {
result.add(MPermissionResultEnum.GRANTED);
} else {
......@@ -57,9 +49,6 @@ public class BaseMPermission {
result.add(MPermissionResultEnum.DENIED);
}
}
} else {
result.add(MPermissionResultEnum.GRANTED);
}
}
return result;
......@@ -76,12 +65,7 @@ public class BaseMPermission {
return findDeniedPermissions(fragment.getActivity(), permissions);
}
@TargetApi(value = Build.VERSION_CODES.M)
static List<String> findDeniedPermissions(Activity activity, String... permissions) {
if (!isOverMarshmallow()) {
return null;
}
List<String> denyPermissions = new ArrayList<>();
for (String value : permissions) {
if (activity.checkSelfPermission(value) != PackageManager.PERMISSION_GRANTED) {
......@@ -103,12 +87,7 @@ public class BaseMPermission {
return findNeverAskAgainPermissions(fragment.getActivity(), permissions);
}
@TargetApi(value = Build.VERSION_CODES.M)
private static List<String> findNeverAskAgainPermissions(Activity activity, String... permissions) {
if (!isOverMarshmallow()) {
return null;
}
List<String> neverAskAgainPermission = new ArrayList<>();
for (String value : permissions) {
if (activity.checkSelfPermission(value) != PackageManager.PERMISSION_GRANTED &&
......@@ -122,12 +101,7 @@ public class BaseMPermission {
return neverAskAgainPermission;
}
@TargetApi(value = Build.VERSION_CODES.M)
static boolean hasNeverAskAgainPermission(Activity activity, List<String> permission) {
if (!isOverMarshmallow()) {
return false;
}
for (String value : permission) {
if (activity.checkSelfPermission(value) != PackageManager.PERMISSION_GRANTED &&
!activity.shouldShowRequestPermissionRationale(value)) {
......@@ -149,12 +123,7 @@ public class BaseMPermission {
return findDeniedPermissionWithoutNeverAskAgain(fragment.getActivity(), permissions);
}
@TargetApi(value = Build.VERSION_CODES.M)
private static List<String> findDeniedPermissionWithoutNeverAskAgain(Activity activity, String... permission) {
if (!isOverMarshmallow()) {
return null;
}
List<String> denyPermissions = new ArrayList<>();
for (String value : permission) {
if (activity.checkSelfPermission(value) != PackageManager.PERMISSION_GRANTED &&
......@@ -162,7 +131,6 @@ public class BaseMPermission {
denyPermissions.add(value); // 上次申请被用户拒绝了
}
}
return denyPermissions;
}
......
package com.yidianling.avchatkit.common.permission;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
......@@ -49,18 +48,11 @@ public class MPermission extends BaseMPermission {
* ********************* request *********************
*/
@TargetApi(value = Build.VERSION_CODES.M)
public void request() {
doRequestPermissions(object, requestCode, permissions);
}
@TargetApi(value = Build.VERSION_CODES.M)
private static void doRequestPermissions(Object object, int requestCode, String[] permissions) {
if (!isOverMarshmallow()) {
doExecuteSuccess(object, requestCode);
return;
}
List<String> deniedPermissions = findDeniedPermissions(getActivity(object), permissions);
if (deniedPermissions != null && deniedPermissions.size() > 0) {
if (object instanceof Activity) {
......
......@@ -20,14 +20,9 @@ import android.graphics.Bitmap;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import androidx.recyclerview.widget.RecyclerView;
import android.text.util.Linkify;
import android.util.SparseArray;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.CheckedTextView;
......@@ -37,6 +32,10 @@ import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.TextView;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import androidx.recyclerview.widget.RecyclerView;
import java.util.HashSet;
import java.util.LinkedHashSet;
......@@ -179,15 +178,7 @@ public class BaseViewHolder extends RecyclerView.ViewHolder {
* Alpha between 0-1.
*/
public BaseViewHolder setAlpha(int viewId, float value) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getView(viewId).setAlpha(value);
} else {
// Pre-honeycomb hack to set Alpha value
AlphaAnimation alpha = new AlphaAnimation(value, value);
alpha.setDuration(0);
alpha.setFillAfter(true);
getView(viewId).startAnimation(alpha);
}
return this;
}
......
package com.yidianling.avchatkit.ui;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
......@@ -8,6 +9,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.TextView;
import com.netease.nimlib.sdk.avchat.AVChatCallback;
import com.netease.nimlib.sdk.avchat.AVChatManager;
import com.netease.nimlib.sdk.avchat.constant.AVChatControlCommand;
......@@ -15,8 +17,8 @@ import com.netease.nimlib.sdk.avchat.constant.AVChatType;
import com.netease.nimlib.sdk.avchat.model.AVChatData;
import com.tbruyelle.rxpermissions2.Permission;
import com.tbruyelle.rxpermissions2.RxPermissions;
import com.ydl.ydlcommon.utils.DeviceTool;
import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.im.R;
import com.yidianling.avchatkit.activity.AVChatActivity;
import com.yidianling.avchatkit.common.imageview.HeadImageView;
import com.yidianling.avchatkit.common.log.LogUtil;
......@@ -30,7 +32,7 @@ import com.yidianling.avchatkit.controll.AVChatController;
import com.yidianling.avchatkit.module.AVChatControllerCallback;
import com.yidianling.avchatkit.module.AVSwitchListener;
import com.yidianling.common.tools.ToastUtil;
import com.ydl.ydlcommon.utils.DeviceTool;
import com.yidianling.im.R;
import io.reactivex.functions.Consumer;
......@@ -379,6 +381,7 @@ public class AVChatAudioUI implements View.OnClickListener, ToggleListener {
});
}
@SuppressLint("CheckResult")
private void requestPermission() {
new RxPermissions((Activity) this.context)
.requestEach(Manifest.permission.RECORD_AUDIO,Manifest.permission.CAMERA)
......
......@@ -4,7 +4,6 @@ import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.os.Build;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.MotionEvent;
......@@ -16,6 +15,7 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.netease.nimlib.sdk.avchat.AVChatManager;
import com.netease.nimlib.sdk.avchat.constant.AVChatType;
import com.netease.nimlib.sdk.avchat.constant.AVChatVideoScalingType;
......@@ -25,8 +25,8 @@ import com.netease.nimlib.sdk.avchat.video.AVChatSurfaceViewRenderer;
import com.netease.nrtc.video.render.IVideoRender;
import com.tbruyelle.rxpermissions2.Permission;
import com.tbruyelle.rxpermissions2.RxPermissions;
import com.ydl.ydlcommon.utils.DeviceTool;
import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.im.R;
import com.yidianling.avchatkit.common.imageview.HeadImageView;
import com.yidianling.avchatkit.common.permission.BaseMPermission;
import com.yidianling.avchatkit.common.util.ScreenUtil;
......@@ -38,7 +38,7 @@ import com.yidianling.avchatkit.controll.AVChatController;
import com.yidianling.avchatkit.module.AVChatControllerCallback;
import com.yidianling.avchatkit.module.AVSwitchListener;
import com.yidianling.common.tools.ToastUtil;
import com.ydl.ydlcommon.utils.DeviceTool;
import com.yidianling.im.R;
import java.util.List;
......@@ -334,10 +334,6 @@ public class AVChatVideoUI implements View.OnClickListener, ToggleListener {
videoInit = true;
}
public void onResume() {
surfaceViewFixBefore43(smallSizePreviewLayout, largeSizePreviewLayout);
}
public void onDestroy() {
if (time != null) {
time.stop();
......@@ -848,20 +844,5 @@ public class AVChatVideoUI implements View.OnClickListener, ToggleListener {
return avChatData;
}
private void surfaceViewFixBefore43(ViewGroup front, ViewGroup back) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (back.getChildCount() > 0) {
View child = back.getChildAt(0);
back.removeView(child);
back.addView(child);
}
if (front.getChildCount() > 0) {
View child = front.getChildAt(0);
front.removeView(child);
front.addView(child);
}
}
}
}
package com.yidianling.im.session.viewholder;
import android.os.Build;
import android.view.View;
import android.widget.TextView;
......@@ -180,28 +179,22 @@ public class MsgViewHolderLingxiWhichQuestion extends MsgViewHolderBase implemen
if (multipleAnswers.size()>0){
confirm_multiple_choice.setEnabled(true);
confirm_multiple_choice.setText(String.format("确定(%d)", multipleAnswers.size()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
confirm_multiple_choice.setBackground(context.getResources().getDrawable(R.drawable.im_background_18dp_1da1f2));
}
}else{
confirm_multiple_choice.setEnabled(false);
confirm_multiple_choice.setText("确定");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
confirm_multiple_choice.setBackground(context.getDrawable(R.drawable.im_background_18dp_ebebeb));
}
}
}
} else {
//可点击
if (!singleOrMultipletype.contains("radio")){
confirm_multiple_choice.setEnabled(false);
confirm_multiple_choice.setText("确定");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
confirm_multiple_choice.setBackground(context.getDrawable(R.drawable.im_background_18dp_ebebeb));
}
}
}
} catch (Exception e) {
LogUtil.e("aaaaa" + e.getLocalizedMessage());
}
......@@ -365,16 +358,12 @@ public class MsgViewHolderLingxiWhichQuestion extends MsgViewHolderBase implemen
confirm_multiple_choice.setText(String.format("确定(%d)", selectedStr.size()));
if (selectedStr.size() > 0) {
confirm_multiple_choice.setEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
confirm_multiple_choice.setBackground(context.getResources().getDrawable(R.drawable.im_background_18dp_1da1f2));
}
} else {
confirm_multiple_choice.setEnabled(false);
confirm_multiple_choice.setText("确定");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
confirm_multiple_choice.setBackground(context.getDrawable(R.drawable.im_background_18dp_ebebeb));
}
}
stringBuffer.delete(3, stringBuffer.length());
for (int i = 0; i < selectedStr.size(); i++) {
stringBuffer.append("、").append(selectedStr.get(i));
......
package com.yidianling.uikit.business.contact.selector.viewholder;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.yidianling.im.R;
import com.yidianling.nimbase.common.ui.imageview.HeadImageView;
import com.yidianling.uikit.api.NimUIKit;
import com.yidianling.uikit.business.contact.core.item.ContactItem;
import com.yidianling.uikit.business.contact.core.model.ContactDataAdapter;
import com.yidianling.uikit.business.contact.core.model.IContact;
import com.yidianling.uikit.business.contact.core.viewholder.AbsContactViewHolder;
import com.yidianling.uikit.business.contact.selector.adapter.ContactSelectAdapter;
import com.yidianling.nimbase.common.ui.imageview.HeadImageView;
public class ContactsSelectHolder extends AbsContactViewHolder<ContactItem> {
private final boolean multi;
......@@ -79,10 +78,6 @@ public class ContactsSelectHolder extends AbsContactViewHolder<ContactItem> {
}
private void setBackground(View view, Drawable drawable) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
view.setBackground(drawable);
} else {
view.setBackgroundDrawable(drawable);
}
}
}
package com.yidianling.uikit.business.session.activity;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
......@@ -24,6 +23,7 @@ import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.yidianling.im.R;
import com.yidianling.nimbase.common.ToastHelper;
import com.yidianling.nimbase.common.activity.ToolBarOptions;
import com.yidianling.nimbase.common.activity.UI;
......@@ -32,7 +32,6 @@ import com.yidianling.nimbase.common.ui.dialog.EasyAlertDialogHelper;
import com.yidianling.nimbase.common.util.file.AttachmentStore;
import com.yidianling.nimbase.common.util.log.LogUtil;
import com.yidianling.nimbase.common.util.sys.TimeUtil;
import com.yidianling.im.R;
import java.io.File;
import java.util.Date;
......@@ -203,17 +202,15 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
});
}
@TargetApi(9)
private void switchCamera() {
if (Build.VERSION.SDK_INT >= 9) {
cameraId = (cameraId + 1) % Camera.getNumberOfCameras();
}
resizeSurfaceView();
shutdownCamera();
initCamera();
startPreview();
}
@Override
public void onResume() {
super.onResume();
......@@ -221,6 +218,7 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override
public void onPause() {
super.onPause();
......@@ -366,12 +364,10 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
backCameraSize.clear();
frontCameraSize.clear();
getVideoPreviewSize(false);
if (Build.VERSION.SDK_INT >= 9) {
if (Camera.getNumberOfCameras() >= 2) {
getVideoPreviewSize(true);
}
}
}
private Point currentUsePoint = null;
......@@ -419,15 +415,7 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
profile.videoCodec = MediaRecorder.VideoEncoder.H264;
}
if (Build.VERSION.SDK_INT >= 14) {
profile.audioCodec = MediaRecorder.AudioEncoder.AAC;
} else {
if (Build.DISPLAY != null && Build.DISPLAY.indexOf("MIUI") >= 0) {
profile.audioCodec = MediaRecorder.AudioEncoder.AAC;
} else {
profile.audioCodec = MediaRecorder.AudioEncoder.AMR_NB;
}
}
mediaRecorder.setProfile(profile);
} else {
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
......@@ -439,12 +427,10 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
@SuppressLint("NewApi")
private void setVideoOrientation() {
if (Build.VERSION.SDK_INT >= 9) {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
mediaRecorder.setOrientationHint(info.orientation);
}
}
public void updateRecordUI() {
if (recording) {
......@@ -591,16 +577,12 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
*/
@SuppressLint("NewApi")
public void checkMultiCamera() {
if (Build.VERSION.SDK_INT >= 9) {
if (Camera.getNumberOfCameras() > 1) {
multiCamera = true;
switchCamera.setVisibility(View.VISIBLE);
} else {
switchCamera.setVisibility(View.GONE);
}
} else {
switchCamera.setVisibility(View.GONE);
}
}
@SuppressLint("NewApi")
......@@ -628,11 +610,9 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
private void setCameraParameters() {
Camera.Parameters params = camera.getParameters();
if (Build.VERSION.SDK_INT >= 15) {
if (params.isVideoStabilizationSupported()) {
params.setVideoStabilization(true);
}
}
List<String> focusMode = params.getSupportedFocusModes();
if (focusMode.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
......@@ -711,12 +691,10 @@ public class CaptureVideoActivity extends UI implements SurfaceHolder.Callback {
public int setCameraDisplayOrientation(Context context, int cameraId, Camera camera) {
int orientation = 90;
boolean front = (cameraId == 1);
if (Build.VERSION.SDK_INT >= 9) {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(cameraId, info);
orientation = info.orientation;
front = (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT);
}
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int rotation = manager.getDefaultDisplay().getRotation();
......
......@@ -5,12 +5,10 @@ import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.text.TextUtils;
import com.yidianling.im.R;
import com.yidianling.uikit.business.session.activity.CaptureVideoActivity;
import com.yidianling.nimbase.common.ToastHelper;
import com.yidianling.nimbase.common.ui.dialog.CustomAlertDialog;
import com.yidianling.nimbase.common.util.C;
......@@ -20,6 +18,7 @@ import com.yidianling.nimbase.common.util.storage.StorageType;
import com.yidianling.nimbase.common.util.storage.StorageUtil;
import com.yidianling.nimbase.common.util.string.MD5;
import com.yidianling.nimbase.common.util.string.StringUtil;
import com.yidianling.uikit.business.session.activity.CaptureVideoActivity;
import java.io.File;
......@@ -91,11 +90,7 @@ public class VideoMessageHelper {
* 从本地相册中选择视频
*/
protected void chooseVideoFromLocal() {
if (Build.VERSION.SDK_INT >= 19) {
chooseVideoFromLocalKitKat();
} else {
chooseVideoFromLocalBeforeKitKat();
}
}
/**
......
......@@ -3,7 +3,6 @@ package com.yidianling.uikit.business.team.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
......@@ -521,9 +520,6 @@ public class NormalTeamInfoActivity extends UI implements OnClickListener, TAdap
}
}
// 为了解决2.3系统,移除用户后刷新界面不显示的问题
if (Build.VERSION.SDK_INT < 11) {
adapter.setMode(TeamMemberAdapter.Mode.NORMAL);
}
adapter.notifyDataSetChanged();
}
......
package com.ydl.js
import android.Manifest
import android.content.Intent
import android.net.Uri
import com.blankj.utilcode.util.PermissionUtils
import com.google.gson.JsonObject
import com.google.gson.JsonParser
......@@ -149,6 +151,14 @@ class JsMethod(private val webView: WebView?) {
)
return true
}
"call_telPhone" -> {
val phoneNumber = param.getAsJsonPrimitive("phonenumber").asString
phoneNumber?.let {
val phoneIntent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:$phoneNumber"))
BaseActivityMgr.INST.topActivity?.startActivity(phoneIntent)
}
return true
}
else -> {
return false
}
......
......@@ -5,7 +5,6 @@ import android.content.Context
import android.content.Intent
import android.content.res.Resources
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
......@@ -82,9 +81,7 @@ class ChooseMusicActivity : BaseActivity() {
mWebSettings.textZoom = 100 //设置字体不跟随字体变化而变化
mWebSettings.allowFileAccessFromFileURLs = true
mWebSettings.blockNetworkImage = false // 解决图片不显示
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebSettings.mixedContentMode = WebSettings.LOAD_NORMAL
}
mWebSettings.mixedContentMode = WebSettings.LOAD_DEFAULT
wv_choose_music.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY //滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上
wv_choose_music.addJavascriptInterface(jtoJHandle, "javascriptHandler")
......@@ -98,11 +95,7 @@ class ChooseMusicActivity : BaseActivity() {
super.onPageFinished(view, url)
}
override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
loadUrl(request.url.toString(),view)
} else {
loadUrl(request.toString(),view)
}
loadUrl(request.url.toString(), view)
return true
}
}
......
......@@ -5,7 +5,6 @@ import android.app.Activity
import android.app.Dialog
import android.content.res.Resources
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import android.view.Gravity
......@@ -14,10 +13,8 @@ import android.view.WindowManager
import android.webkit.WebSettings
import com.ydl.utils.WebUrlParamsUtils
import com.ydl.webview.H5Params
import com.yidianling.common.tools.LogUtil
import com.yidianling.common.tools.RxDeviceTool
import com.yidianling.muse.R
import com.yidianling.muse.activity.PlayMeditationActivity
import kotlinx.android.synthetic.main.dialog_choose_music.*
/**
......@@ -63,9 +60,7 @@ class ChooseMusicDialog(activity: Activity,h5Params: H5Params) : Dialog(activity
mWebSettings.textZoom = 100 //设置字体不跟随字体变化而变化
mWebSettings.allowFileAccessFromFileURLs = true
mWebSettings.blockNetworkImage = false // 解决图片不显示
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mWebSettings.mixedContentMode = WebSettings.LOAD_NORMAL
}
wv_choose_music.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY //滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上
// val jsInterface = JsInterface(mActivity as PlayMeditationActivity)
// wv_choose_music.addJavascriptInterface(jsInterface, "javascriptHandler")
......
......@@ -4,7 +4,6 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.provider.Settings
object MeditationFloatPermissionUtil {
......@@ -13,15 +12,13 @@ object MeditationFloatPermissionUtil {
private fun commonROMPermissionCheck(context: Context?):Boolean {
var result = true
if (Build.VERSION.SDK_INT >= 23){
try {
val clazz:Class<*> = Settings::class.java
val canDrawOverlays = clazz.getDeclaredMethod("canDrawOverlays",Context::class.java)
val clazz: Class<*> = Settings::class.java
val canDrawOverlays = clazz.getDeclaredMethod("canDrawOverlays", Context::class.java)
result = canDrawOverlays.invoke(null, context) as Boolean
}catch (e:Exception){
} catch (e: Exception) {
}
}
return result
}
......
package com.yidianling.tests.home
import android.os.Build
import androidx.core.content.ContextCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.View
import android.widget.LinearLayout
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.ydl.ydlcommon.base.BaseMvpActivity
......@@ -103,14 +102,13 @@ class TestHomeActivity : BaseMvpActivity<ITestHomeContract.View,ITestHomeContrac
* 初始化状态栏位置
*/
private fun initStatus() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4以下不支持状态栏变色
//4.4以下不支持状态栏变色
StatusBarUtils.setTransparentForImageView(this, null)
val statusBarHeight = StatusBarUtils.getStatusBarHeight(this)
val lp1 = rl_tests_title_layout.layoutParams as LinearLayout.LayoutParams
lp1.height = (RxImageTool.dp2px(48f) + statusBarHeight)
rl_tests_title_layout.setPadding(0, statusBarHeight, 0, 0)
}
}
//路由传递过来的参数
......
......@@ -14,7 +14,6 @@ android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
......
......@@ -4,7 +4,6 @@ import android.text.TextUtils
import com.google.gson.Gson
import com.ydl.ydlcommon.utils.SharedPreferencesEditor
import com.ydl.ydlcommon.utils.UserInfoCache
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.user.api.bean.UserSettingBean
......@@ -39,7 +38,6 @@ object UserHelper {
UserInfoCache.getInstance().saveYDLUser("\"" + userInfo?.uid + "\"",
userInfo?.userInfo?.nick_name, userInfo?.userInfo?.head)
YdlBuryPointUtil.reLogin()
} catch (e: Exception) {
e.printStackTrace()
}
......
......@@ -25,7 +25,6 @@ import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.modular.ModularServiceManager.provide
import com.ydl.ydlcommon.utils.BuryPointUtils
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils.Companion.count
import com.ydl.ydlcommon.view.dialog.YDLShareDialog
import com.ydl.ydlcommon.view.dialog.YDLShareDialog.Companion.style4
......@@ -99,7 +98,6 @@ class MineFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, View.
jtv_account_enter.setOnClickListener(this)
cv_duration.setOnClickListener(this)
text_userName.setOnClickListener(this)
jtv_test.setOnClickListener(this)
swipe_refresh_layout.setOnRefreshListener(this)
rootView.findViewById<View>(R.id.csl_trade_order).setOnClickListener(this)
rootView.findViewById<View>(R.id.jtv_introduce).setOnClickListener(this)
......@@ -572,10 +570,6 @@ class MineFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, View.
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "壹点灵介绍")
val params1 = H5Params("https://m.yidianling.com/about", "网站介绍")
NewH5Activity.start(activity, params1)
} else if (id == R.id.btn_change) {
} else if (id == R.id.jtv_test) { //debug下任意门入口
jtv_test?.postDelayed({ YdlBuryPointUtil.sendPv("PvEvent") }, 300)
jtv_test?.postDelayed({ YdlBuryPointUtil.sendClick("ClickEvent") }, 500)
} else if (id == R.id.ll_meditation) { //冥想
count(UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK, "冥想")
mActivity?.let {
......
......@@ -171,14 +171,8 @@ public class NotificationsSettingActivity extends BaseActivity {
private void getAppDetailSettingIntent(Context context) {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
startActivity(localIntent);
}
......
......@@ -2,7 +2,6 @@ package com.yidianling.user.mine
import android.app.Activity
import android.content.Intent
import android.os.Build
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.TextUtils
......@@ -139,14 +138,13 @@ class ReceiveRedPacketActivity : BaseActivity(),View.OnClickListener {
* 初始化状态栏位置
*/
private fun initStatus() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4以下不支持状态栏变色
//4.4以下不支持状态栏变色
StatusBarUtils.setTransparentForImageView(this, null)
val statusBarHeight = StatusBarUtils.getStatusBarHeight(this)
val lp1 = title_bar.layoutParams as LinearLayout.LayoutParams
lp1.height = (RxImageTool.dp2px(45f) + statusBarHeight)
title_bar.setPadding(0, statusBarHeight, 0, 0)
}
}
override fun initDataAndEvent() {
initStatus()
......
......@@ -2,7 +2,6 @@ package com.yidianling.user.safePrivate
import android.app.KeyguardManager
import android.content.Context
import android.os.Build
import androidx.core.hardware.fingerprint.FingerprintManagerCompat
import androidx.core.os.CancellationSignal
import com.ydl.ydlcommon.base.BaseApp
......@@ -70,21 +69,15 @@ class FingerPrintUtil {
}
private fun init() {
if (Build.VERSION.SDK_INT >= 23) {
if (manager == null && keyManager == null) {
manager = FingerprintManagerCompat.from(context)
keyManager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
}
}
}
//硬件设备是否支持指纹解锁功能
fun isFingerPrintAvaliable(): Boolean? {
return if (Build.VERSION.SDK_INT >= 23) {
manager?.isHardwareDetected
} else {
false
}
return manager?.isHardwareDetected
}
//判断是否有锁屏密码
......@@ -95,22 +88,21 @@ class FingerPrintUtil {
// 判断设备是否录入指纹,貌似APP无法直接唤醒指纹设置页面
fun isHaveFingerPrint(): Boolean? {
return if (Build.VERSION.SDK_INT >= 23) {
manager?.hasEnrolledFingerprints()
} else {
false
}
return manager?.hasEnrolledFingerprints()
}
// 开始识别指纹
// 参数分别是:防止第三方恶意攻击的包装类,CancellationSignal对象,flags,回调对象,handle
fun startFingerPrint(call: FingerCallback) {
if (Build.VERSION.SDK_INT >= 23) {
if (mCancellationSignal == null) {
mCancellationSignal = CancellationSignal()
}
manager?.authenticate(null, 0, mCancellationSignal, object : FingerprintManagerCompat.AuthenticationCallback() {
manager?.authenticate(
null,
0,
mCancellationSignal,
object : FingerprintManagerCompat.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
call.onAuthenticationError()
......@@ -128,17 +120,16 @@ class FingerPrintUtil {
call.onAuthenticationFailed()
LogUtil.d("指纹识别失败")
}
}, null)
}
},
null
)
}
//停止指纹监听
fun cancelFingerListener() {
if (Build.VERSION.SDK_INT >= 23) {
mCancellationSignal?.cancel()
mCancellationSignal = null
}
}
private object Inner {
val finger = FingerPrintUtil()
......
......@@ -22,6 +22,8 @@ import com.umeng.socialize.UMShareConfig
import com.umeng.socialize.bean.SHARE_MEDIA
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.base.BaseMvpActivity
import com.ydl.ydlcommon.base.config.ChannelConfig
import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.data.PlatformRamImpl
import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.JPushUtils
......@@ -41,7 +43,6 @@ import com.yidianling.user.UserHelper.isLogin
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.user.constants.UserBIConstants
import com.yidianling.user.http.LoginApiRequestUtil
import com.yidianling.user.http.request.BindPhoneJavaParam
import com.yidianling.user.http.request.PhoneLoginAutoParam
import com.yidianling.user.http.response.ChcekPhoneResponeBean
import com.yidianling.user.route.UserIn
......@@ -52,9 +53,6 @@ import com.yidianling.user.ui.CountryListActivity
import com.yidianling.user.ui.login.contract.ILoginContract
import com.yidianling.user.ui.login.presenter.LoginPresenterImpl
import com.yidianling.user.widget.AgreePrivacyBottomDialog
import com.yidianling.user.widget.SecretDialog
import com.yidianling.user.widget.ZDialog
import com.yidianling.user.widget.ZDialogDirection
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.user_activity_register_and_login_bottom.*
......@@ -255,6 +253,12 @@ class RegisterAndLoginActivity : BaseMvpActivity<ILoginContract.View, ILoginCont
tv_protocol.visibility = View.GONE
other_login_style.visibility = View.GONE
}
if (PlatformDataManager.getRam().getChannelName()
.startsWith(ChannelConfig.ATK_3.name) || PlatformDataManager.getRam()
.getChannelName().startsWith(ChannelConfig.ATK_4.name)
) {
login_qq.visibility = View.GONE
}
if (!TextUtils.isEmpty(YDLCacheUtils.getUserPhone())) {
......
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