Commit 3a36d2aa by 严久程
parents 2d848053 ef62f674
......@@ -177,6 +177,9 @@ dependencies {
implementation project(':ydl-media')
implementation project(':m-muse')
// api rootProject.ext.dependencies["ydl-m-fm-module-ydl"]
// api rootProject.ext.dependencies["ydl-m-fm-api"]
api project(':m-fm')
......
ext {
kotlin_version = '1.3.21'
dev_mode = true
dev_mode = false
ydl_app = [
appName : "心理咨询壹点灵",
......@@ -155,7 +155,7 @@ ext {
"bugly-crashreport" : 'com.tencent.bugly:crashreport:2.8.6.0',
"bugly-nativecrashreport" : 'com.tencent.bugly:nativecrashreport:3.6.0.1',
"ydl-image" : 'com.ydl:ydl-image:1.0.7-SNAPSHOT@aar',
"ydl-pushagent" : 'com.ydl:ydl-pushagent:0.1.8',
"ydl-pushagent" : 'com.ydl:ydl-pushagent:0.1.9',
"ydl-notracepoint" : 'com.ydl:notracepoint-lib:0.1.8@aar',
"ydl-js" : 'com.ydl:ydl-js:1.0.7-SNAPSHOT@aar',
"ydl-router" : 'com.ydl:ydl-router:1.3.2-SNAPSHOT@aar',
......@@ -170,11 +170,14 @@ ext {
"ydl-utils" : 'com.ydl:ydl-utils:0.0.2',
"ydl-net" : 'com.ydl:ydl-net:0.0.1',
"ydl-user-router" : 'com.ydl:router:1.0.0-SNAPSHOT@aar',
"ydl-device" : 'com.ydl:device-id:0.0.7@aar',
//功能组件
"ydl-platform" : 'com.ydl:ydl-platform:0.0.13@aar',
"ydl-platform" : 'com.ydl:ydl-platform:0.0.15@aar',
"ydl-webview" : 'com.ydl:ydl-webview:0.0.15@aar',
"ydl-media" : 'com.ydl:ydl-media:0.0.4@aar',
"ydl-flutter" : 'com.ydl:ydl-flutter:0.0.2@aar',
//业务组件
"ydl-m-user-api" : 'com.ydl:m-user-api:0.0.5',
......
modular {
packageName "com.ydl.audioim"
// 模块发布需要的参数
publish {
api {
//发布信息 module/api 通用
groupId = "com.ydl"
artifactId = "m-audioim-api"
version = "0.0.1"
// API 层打包时需要引入的依赖
apiDependencies {
implementation "com.google.code.gson:gson:2.8.2"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.alibaba:arouter-api:1.4.1'
}
}
}
}
\ No newline at end of file
package com.ydl.audioim
//import com.ydl.audioim.api.IAVRouter
//class AVRouterImpl: IAVRouter {
// override fun loginAgora(userId: String?) {
// YDLavManager.instances.login(userId)
// }
//
//}
\ No newline at end of file
package com.ydl.audioim
import com.ydl.audioim.api.AudioImApi
/**
* 模块对外提供接口的实现类
*/
class AudioImImpl: AudioImApi {
override fun loginAgora(userId: String?) {
YDLavManager.instances.login(userId)
}
}
\ No newline at end of file
package com.ydl.audioim.api
/**
* 对外api接口
*/
interface AudioImApi {
/**
* 登录声网Im
*/
fun loginAgora(uid:String?)
}
\ No newline at end of file
......@@ -8,7 +8,7 @@ modular {
groupId = "com.ydl"
artifactId = "m-confide-module-xlzx"
// 上报的业务模块 aar 包的版本号
version = "0.0.8"
version = "0.0.9"
}
ydl{
......@@ -16,7 +16,7 @@ modular {
groupId = "com.ydl"
artifactId = "m-confide-module-ydl"
// 上报的业务模块 aar 包的版本号
version = "0.0.8"
version = "0.0.9"
}
}
......
......@@ -35,7 +35,7 @@ class ConfideHomeHttpImpl private constructor(): IConfideHomeHttp{
override fun confideHomeRequest(): Observable<BaseAPIResponse<MutableList<ConfideHomeDataBean>>> {
return RxUtils.mapObservable(ConfideHomeParam(0))
.flatMap {
confideHomeApi.confideHome(HttpConfig.SERVER_API_JAVA_URL+"auth/listen/home")
confideHomeApi.confideHome(HttpConfig.JAVA_BASE_URL+"auth/listen/home")
}
}
......@@ -61,7 +61,7 @@ class ConfideHomeHttpImpl private constructor(): IConfideHomeHttp{
val confideParam = sb.toString()
return RxUtils.mapObservable(param)
.flatMap {
confideHomeApi.recommedChange(HttpConfig.SERVER_API_JAVA_URL + "auth/listen/search?"+confideParam)
confideHomeApi.recommedChange(HttpConfig.JAVA_BASE_URL + "auth/listen/search?"+confideParam)
}
}
......
......@@ -2,6 +2,7 @@ package com.yidianling.consultant.adapter
import android.annotation.SuppressLint
import android.content.Context
import android.support.v4.content.ContextCompat
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.RecyclerView
import android.text.TextUtils
......@@ -12,6 +13,7 @@ import android.widget.ImageView
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.config.SimpleImageOpConfiger
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.base.config.HttpConfig
import com.ydl.ydlcommon.router.IYDLRouterConstant
import com.ydl.ydlcommon.utils.BuryPointUtils
......@@ -126,6 +128,14 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
else{
holder.imgAbilityLevel.visibility = View.GONE
}
//活动图标
if (!TextUtils.isEmpty(itemBean.activityImg)){
holder.imgActivity.visibility = View.VISIBLE
GlideApp.with(context).load(itemBean.activityImg).into(holder.imgActivity)
// GlideApp.with(context).load("https://video.ydlcdn.com/2019/11/04/abdd3782c98939d0406080a6a80b8ea5.jpg").into(holder.imgActivity)
}else{
holder.imgActivity.visibility = View.GONE
}
//公益图标
if (1 == itemBean.hasServiceFree){
if (null != itemBean.tagsIcon && !TextUtils.isEmpty(itemBean.tagsIcon.serviceFreeIcon)){
......@@ -195,6 +205,16 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
// holder.tvSaleDurationForMonth.visibility = View.GONE
// holder.tvSaleDurationForMonthContent.visibility = View.GONE
// }
//私聊文案
if (TextUtils.isEmpty(itemBean.chatBtnText)){
holder.tvChat.text = "私聊"
holder.tvChat.setTextColor(ContextCompat.getColor(context,R.color.white))
holder.tvChat.background = ContextCompat.getDrawable(context,R.drawable.consultant_expert_search_chat)
}else{
holder.tvChat.text = itemBean.chatBtnText
holder.tvChat.setTextColor(ContextCompat.getColor(context,R.color.platform_color_999999))
holder.tvChat.background = ContextCompat.getDrawable(context,R.drawable.consultant_expert_search_chat_rest)
}
//月售时长
val durationStringBuffer = StringBuffer()
holder.tvSaleDurationForMonth.text = durationStringBuffer.append(itemBean.saleDurationForMonth.toInt()).append("").toString()
......@@ -268,6 +288,8 @@ class ExpertSearchAdapter(private val context: Context, private val expertSearch
val imgHead = itemView.imgHead!!
//专家姓名
val tvName = itemView.tvName!!
//活动图标
val imgActivity = itemView.img_activity!!
//优质图标
val imgAbilityLevel = itemView.imgAbilityLevel!!
//公益图标
......
......@@ -42,8 +42,16 @@ data class DoctorServiceItem(/**
* 有免费咨询:1.有,2.无
*/
val hasServiceFree : Int?,
/**
* 活动图标
*/
val activityImg:String?,
/**
* 是否参加活动
*/
val joinActivity: Boolean?,
/**
* 是否新入驻:true:是,false:否
* 是否新入驻:true:是,false:否
*/
var isNewEnter : Boolean = false,
/**
......@@ -109,5 +117,9 @@ data class DoctorServiceItem(/**
/**
* 市
*/
val city : String?
val city : String?,
/**
* 私聊按钮的文案(如果不为空则取这个字段的值,如果为空 则默认为:“私聊”)
*/
val chatBtnText : String?
)
\ No newline at end of file
......@@ -2,7 +2,12 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="180"
android:startColor="#FFDB14"
android:endColor="#FFDB26"/>
<corners android:radius="@dimen/platform_dp_13"/>
android:startColor="@color/consultant_chat_start_color"
android:endColor="@color/consultant_chat_end_color"/>
<padding
android:bottom="@dimen/platform_dp_3"
android:left="@dimen/platform_dp_10"
android:right="@dimen/platform_dp_10"
android:top="@dimen/platform_dp_3" />
<corners android:radius="@dimen/platform_dp_13" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="180"
android:startColor="#F0F0F0"
android:endColor="#F0F0F0"/>
<corners android:radius="@dimen/platform_dp_13" />
<padding
android:bottom="@dimen/platform_dp_3"
android:left="@dimen/dp_10"
android:right="@dimen/dp_10"
android:top="@dimen/platform_dp_3" />
<stroke android:color="#F0F0F0"/>
</shape>
\ No newline at end of file
......@@ -13,7 +13,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/platform_dp_15"
android:layout_marginLeft="1.5dp"
android:padding="0.5dp"
android:background="@drawable/consultant_bg_radius_line_gray_05"
android:orientation="vertical">
......@@ -35,25 +34,31 @@
<ImageView
android:id="@+id/imgHead_online"
android:layout_width="62dp"
android:layout_height="18dp"
android:layout_height="14dp"
android:layout_gravity="bottom"
android:scaleType="centerCrop"
android:layout_alignBottom="@+id/cvHead"
app:srcCompat="@drawable/consultant_online_yue"
android:layout_marginLeft="@dimen/platform_dp_2"
tools:visibility="visible"
android:layout_marginBottom="@dimen/platform_dp_05"
android:visibility="gone"/>
<ImageView
android:id="@+id/imgHead_online_server"
android:layout_width="42dp"
android:layout_height="18dp"
android:layout_width="41dp"
android:layout_height="14dp"
android:layout_gravity="bottom"
android:scaleType="centerCrop"
android:layout_alignBottom="@+id/cvHead"
app:srcCompat="@drawable/consultant_online_server"
android:layout_marginLeft="@dimen/platform_dp_2"
tools:visibility="visible"
android:layout_marginBottom="@dimen/platform_dp_05"
android:visibility="gone"/>
<!--咨询师姓名-->
<TextView
android:id="@+id/tvName"
......@@ -82,6 +87,13 @@
android:layout_alignBottom="@+id/tvName"
android:layout_toEndOf="@+id/tvName"
android:layout_marginStart="@dimen/platform_dp_2">
<!--活动图标-->
<ImageView
android:id="@+id/img_activity"
android:layout_width="42dp"
android:layout_height="12dp"
android:layout_marginStart="@dimen/dp_4"
android:visibility="gone"/>
<!--公益图标-->
<ImageView
android:id="@+id/imgServiceFree"
......@@ -339,7 +351,7 @@
<!--私聊-->
<TextView
android:id="@+id/tvChat"
android:layout_width="58dp"
android:layout_width="wrap_content"
android:layout_height="@dimen/platform_dp_24"
android:layout_alignBottom="@+id/cvHead"
android:layout_alignParentRight="true"
......@@ -347,7 +359,7 @@
android:textSize="@dimen/platform_dp_13"
android:textStyle="bold"
android:background="@drawable/consultant_expert_search_chat"
android:textColor="@color/platform_color_242424"
android:textColor="@color/consultant_confirm_text_color"
android:text="私聊"/>
<!--描述-->
......
......@@ -15,4 +15,9 @@
<!--筛选条件选择框字体颜色-->
<color name="consultant_filter_content_text_color_en">#242424</color>
<color name="consultant_filter_content_text_color_un">#555555</color>
<!--私聊按钮背景颜色-->
<color name="consultant_chat_start_color">#ffd814</color>
<color name="consultant_chat_end_color">#ffdb26</color>
</resources>
......@@ -15,4 +15,7 @@
<!--筛选条件选择框字体颜色-->
<color name="consultant_filter_content_text_color_en">#1da1f2</color>
<color name="consultant_filter_content_text_color_un">#242424</color>
<!--私聊按钮背景颜色-->
<color name="consultant_chat_start_color">#23B2FA</color>
<color name="consultant_chat_end_color">#1DA1F2</color>
</resources>
......@@ -78,9 +78,11 @@ dependencies {
implementation project(':ydl-media')
} else {
//发布时使用
implementation "com.ydl:ydl-media:0.0.4@aar"
implementation rootProject.ext.dependencies["ydl-media"]
implementation rootProject.ext.dependencies["ydl-m-user-api"]
implementation rootProject.ext.dependencies["ydl-platform"]
implementation (rootProject.ext.dependencies["ydl-platform"]) {
transitive = true
}
}
}
......@@ -68,7 +68,9 @@ dependencies {
implementation project(':ydl-media')
} else {
//发布时使用
implementation project(':ydl-media')
implementation rootProject.ext.dependencies["ydl-platform"]
api rootProject.ext.dependencies["ydl-media"]
api (rootProject.ext.dependencies["ydl-platform"]) {
transitive = true
}
}
}
......@@ -15,7 +15,7 @@ modular {
groupId = "com.ydl"
artifactId = "m-muse-module-ydl"
// 上报的 壹点灵 业务模块 aar 包的版本号
version = "0.0.1"
version = "0.0.4"
}
}
......
......@@ -77,8 +77,12 @@ dependencies {
api rootProject.ext.dependencies["ydl-hnet"]
api rootProject.ext.dependencies["imagepicker"]
api rootProject.ext.dependencies["ydl-utils"]
api rootProject.ext.dependencies["ydl-flutter"]
api rootProject.ext.dependencies["ydl-net"]
api(rootProject.ext.dependencies["ydl-js"]) {
api ('com.ydl:device-id:0.0.7@aar'){
transitive = true
}
api(rootProject.ext.dependencies["ydl-device"]) {
transitive = true
}
api(rootProject.ext.dependencies["ydl-router"]) {
......
IS_PUBLISH=true
VERSION_NAME=0.0.13
\ No newline at end of file
VERSION_NAME=0.0.15
\ No newline at end of file
......@@ -5,6 +5,7 @@ import android.app.Application
import com.alibaba.android.arouter.launcher.ARouter
import com.lzy.imagepicker.ImagePicker
import com.lzy.imagepicker.view.CropImageView
import com.ydl.devicesidlib.DeviceIDHelper
import com.ydl.ydlcommon.actions.imagepicker.YdlImageLoader
import com.ydl.ydlcommon.utils.BuryPointUtils
import com.ydl.ydlcommon.utils.log.LogHelper
......@@ -22,6 +23,7 @@ object YdlRepository {
// 需要在主 module 的 application 的 onCreate 方法中调用此方法
fun initApp(app: Application,isDebug:Boolean) {
DeviceIDHelper.getInstance().init(app.applicationContext)
LogHelper.getInstance().deleteExpireLogSync()
//初始化工具类
RxTool.init(app)
......
......@@ -70,6 +70,8 @@ abstract class BaseFragment : Fragment() ,IFragmentLifecycleable{
protected lateinit var rootView: View
fun getIsViewCreated() = isViewCreated
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
isViewCreated = true
......
......@@ -34,7 +34,7 @@ class PlatformRamImpl private constructor(): IPlatformRam {
var channel = WalleChannelReader.getChannel(YdlCommonOut.getApp())
if (channel.isNullOrEmpty()){
if (BaseApp.instance.getGlobalConfig().appFrom == YDLConstants.FROM_YDL){
channel="zhuzhan"
channel="android_zhuzhan"
}else{
channel="ATK_7_android_zhuzhan"
}
......
......@@ -11,11 +11,6 @@ import android.content.Context
*/
interface IYdlCommonRouter {
fun startChooseLoginWay(activity: Activity)
fun startPublishTrend(activity: Activity, url: String, cover: String, title: String)
fun publishArticleToTrend(activity: Activity, url: String, cover: String, title: String)
fun startMain(activity: Activity, isSplashActivity: Boolean)
......@@ -26,24 +21,8 @@ interface IYdlCommonRouter {
fun setMoreService(context: Context)
fun safeTipViewGone(): Boolean
fun setTrendsSafeTip(status: Boolean)
fun startPrivacy(context: Context)
fun errorAgainTime(): Long
fun getUserInfo(): YdlUserInfo?
fun startP2PXiaoYi(context: Context)
fun getUid(): Int
fun getAccessToken(): String?
/**
* 清除未读数
*/
fun cleanUnReadNum()
}
\ No newline at end of file
......@@ -3,11 +3,12 @@ package com.ydl.ydlcommon.utils
import android.app.Activity
import android.app.Dialog
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.view.View
import android.view.ViewGroup
import com.yidianling.common.tools.RxDeviceTool
import com.ydl.ydlcommon.R
import com.ydl.ydlcommon.bean.VersionData
import com.yidianling.common.tools.RxDeviceTool
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import kotlinx.android.synthetic.main.platform_dialog_update_layout.*
......@@ -40,8 +41,11 @@ class ApkUpdateDialog : Dialog{
setContentView(R.layout.platform_dialog_update_layout)
tv_update_content.text = updateData?.title
tv_update_content.setMovementMethod(ScrollingMovementMethod.getInstance());
text_version.text = "v${updateData?.ver}"
text_desc.text = updateData?.content
text_desc.setMovementMethod(ScrollingMovementMethod.getInstance());
v_downpress.setSize(28,14,6,9,4)
v_downpress.setTextSize(10)
......
......@@ -2,6 +2,16 @@ package com.ydl.ydlcommon.utils
import android.app.ActivityManager
import android.content.Context
import com.ydl.ydlcommon.BuildConfig
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.base.config.YDLConstants
import com.ydl.ydlcommon.base.config.YDLConstants.ENV_TEST
import com.ydl.ydlcommon.data.PlatformDataManager
import com.ydl.ydlcommon.data.http.YdlCommonApi
import com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.router.YdlCommonOut
import com.yidianling.common.tools.RxAppTool
import com.yidianling.common.tools.RxDeviceTool
/**
* Created by haorui on 2019/4/25.
......@@ -27,4 +37,29 @@ object AppUtils {
return isRunning
}
/**
* 获取http请求公用参数
*
*/
fun getHttpCommonParams():Map<String,Any>{
val mMap = mutableMapOf<String, Any>()
val appEnv = BaseApp.instance.getGlobalConfig().appEnv
val isTest = ENV_TEST == appEnv
val osBuild = "${RxDeviceTool.getBuildBrandModel()},${RxDeviceTool.getSDKVersionName()},${RxAppTool.getAppVersionName(
BaseApp.getApp()
)}"
val loginBean = ModularServiceManager.getPlatformUserService()?.getUser()
mMap["isDevelopment"] = isTest
mMap["uid"] = loginBean?.userId?:""
mMap["accessToken"] = loginBean?.token?:""
mMap["isFromApp"] = "1"
mMap["version"] = RxAppTool.getAppVersionName(BaseApp.getApp())
mMap["osBuild"] = osBuild
mMap["ffrom"] = PlatformDataManager.getRam().getChannelName()
mMap["osType"] = "android"
return mMap
}
}
\ No newline at end of file
package com.ydl.ydlcommon.utils;
import android.content.Context;
import com.ydl.burypointlib.BuryPointHelper;
import com.ydl.devicesidlib.DeviceIDHelper;
import com.ydl.pushserver.pushagent.YdlPushAgent;
import com.ydl.pushserver.pushagent.network.pack.RegisterEventBean;
import com.ydl.ydlcommon.BuildConfig;
import com.ydl.ydlcommon.base.BaseApp;
import com.ydl.ydlcommon.base.config.YDLConstants;
import com.ydl.ydlcommon.modular.ModularServiceManager;
import com.ydl.ydlcommon.router.YdlCommonOut;
import com.yidianling.common.tools.RxAppTool;
......@@ -21,15 +25,17 @@ public class YdlBuryPointUtil {
public static void init(Context context1){
try {
context = context1;
if (BuildConfig.DEBUG){
String appEnv = BaseApp.instance.getGlobalConfig().getAppEnv();
boolean isTest = YDLConstants.ENV_TEST.equals(appEnv);
if (isTest){
YdlPushAgent.setDebugAdree("47.97.49.44",8094);
}
RegisterEventBean registerEventBean = new RegisterEventBean();
registerEventBean.setAppId(context.getPackageName());
registerEventBean.setAppVersion(RxAppTool.getAppVersionName(context));
String channelId = JPushUtils.INSTANCE.getRegistrationID();
registerEventBean.setDeviceId(channelId);
String deviceId = DeviceIDHelper.getInstance().getDeviceId();
registerEventBean.setDeviceId(deviceId);
registerEventBean.setManufacturer(RxDeviceTool.getBuildMANUFACTURER());
registerEventBean.setChannel(YdlCommonOut.Companion.getChannelName());
registerEventBean.setOs("Android");
......@@ -44,7 +50,7 @@ public class YdlBuryPointUtil {
YdlPushAgent.init(registerEventBean,BuildConfig.DEBUG);
BuryPointHelper.setDebug(BuildConfig.DEBUG,BuildConfig.DEBUG,true,BuildConfig.DEBUG);
BuryPointHelper.setDebug(isTest,false,true,BuildConfig.DEBUG);
BuryPointHelper.init();
}catch (Exception e){
......@@ -58,8 +64,8 @@ public class YdlBuryPointUtil {
RegisterEventBean registerEventBean = new RegisterEventBean();
registerEventBean.setAppId(context.getPackageName());
registerEventBean.setAppVersion(RxAppTool.getAppVersionName(context));
String channelId = JPushUtils.INSTANCE.getRegistrationID();
registerEventBean.setDeviceId(channelId);
String deviceId = DeviceIDHelper.getInstance().getDeviceId();
registerEventBean.setDeviceId(deviceId);
registerEventBean.setManufacturer(RxDeviceTool.getBuildMANUFACTURER());
registerEventBean.setChannel(YdlCommonOut.Companion.getChannelName());
registerEventBean.setOs("Android");
......@@ -84,8 +90,8 @@ public class YdlBuryPointUtil {
}
//click埋点
public static void sendClick(String eventId){
LogUtil.d(eventId);
YdlPushAgent.sendClickEvent(eventId);
public static void sendClick(String eventId,String... strings){
com.yidianling.common.tools.LogUtil.d(eventId);
YdlPushAgent.sendClickEvent(eventId,strings);
}
}
......@@ -7,6 +7,7 @@ import android.net.wifi.WifiManager
import android.text.TextUtils
import android.util.Log
import com.google.gson.Gson
import com.ydl.devicesidlib.DeviceIDHelper
import com.ydl.ydlcommon.base.BaseApp
import com.ydl.ydlcommon.base.config.YDLConstants
import com.ydl.ydlcommon.data.http.api.ApiRequestUtil
......@@ -98,7 +99,8 @@ class ActionCountUtils {
actionDataParams.osVersion(android.os.Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1)
actionDataParams.deviceId(DeviceTool.getIMEI())
actionDataParams.deviceId(DeviceIDHelper.getInstance().deviceId)
signs == null ?: signs.forEachIndexed { index, s ->
//拓展参数个数确定,暂不使用反射调用
......
......@@ -67,6 +67,8 @@
android:maxLines="3"
android:lineSpacingMultiplier="1.3"
android:textColor="#242424"
android:scrollbars="vertical"
android:fadeScrollbars="false"
tools:text="以下是 QQ8.1 体验版更新日志:项,提醒成员关注重要事件;\n2、群文件可创建文件夹,自定分类轻松;\n3、新增“群助手”,群消息自定义收起,消息管理更轻松。" />
<TextView
android:id="@+id/text_desc"
......@@ -77,6 +79,8 @@
android:maxLines="4"
android:lineSpacingMultiplier="1.3"
android:textColor="@color/platform_color_666666"
android:scrollbars="vertical"
android:fadeScrollbars="false"
tools:text="1.优化私聊功能\n2.咨询业务算法调整"/>
</LinearLayout>
......
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