| | |
| | | <category android:name="android.intent.category.DEFAULT" /> |
| | | <category android:name="android.intent.category.BROWSABLE" /> |
| | | <data |
| | | android:scheme="jkfitness" |
| | | android:host="jkcyl.cn" /> |
| | | android:scheme="xqmuse" |
| | | android:host="xqmuse.cn" /> |
| | | </intent-filter> |
| | | </activity> |
| | | <activity |
| | |
| | | <activity android:name=".ui.tree.ExchangeRecordActivity" android:label="兑换记录"/> |
| | | <activity android:name=".ui.course.PaySuccessActivity" android:label="支付结果"/> |
| | | <activity android:name=".ui.course.HelpCenterActivity" /> |
| | | <activity android:name=".ui.course.CourseSearchResultActivity" android:label="心泉·疗愈"/> |
| | | <activity android:name=".ui.course.CourseSearchResultActivity" android:label="泉疗愈"/> |
| | | <activity android:name=".ui.course.StudyActivity" android:configChanges="orientation|screenSize|keyboardHidden"/> |
| | | <activity android:name=".ui.home.BuyVoiceActivity" android:label="确认订单"/> |
| | | |
| | |
| | | package com.sinata.xqmuse |
| | | |
| | | import android.annotation.SuppressLint |
| | | import android.content.Intent |
| | | import android.os.Handler |
| | | import android.os.Looper |
| | | import android.os.Message |
| | | import android.provider.Settings |
| | | import android.util.Log |
| | | import android.view.View |
| | | import androidx.fragment.app.Fragment |
| | |
| | | * 保存冥想记录 |
| | | */ |
| | | private fun saveThinkRecord() { |
| | | if (voice == null||startTime == 0L) |
| | | if (voice == null||startTime == 0L||SPUtils.instance().getString(Const.User.TOKEN).isNullOrEmpty()) |
| | | return |
| | | val time = ((System.currentTimeMillis() - startTime) / 1000).toInt() |
| | | startTime = 0L |
| | |
| | | }else if(e.code == Const.EventCode.REFRESH_PRIVATE){ //重新答题后,刷新私人定制 |
| | | (fragments[0] as HomeFragment).getPrivacy() |
| | | }else if(e.code == Const.EventCode.THINK_TIMER){ //开启倒计时 |
| | | thinkHandler?.sendEmptyMessage(1) |
| | | thinkHandler?.sendEmptyMessage(MSG_COUNTDOWN) |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | @SuppressLint("HardwareIds") |
| | | private fun checkAnswer() { |
| | | val answer = SPUtils.instance().getString(Const.User.ANSWER) |
| | | if (!answer.isNullOrEmpty()){ //已登录并且有答案 |
| | | HttpManager.saveUserAnswers(Gson().fromJson(answer, ReqAnswer::class.java)).request(this,false,success = { _, _-> |
| | | val reqAnswer = Gson().fromJson(answer, ReqAnswer::class.java) |
| | | reqAnswer?.device = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) |
| | | HttpManager.saveUserAnswers(reqAnswer).request(this,false,success = { _, _-> |
| | | SPUtils.instance().put(Const.User.ANSWER,"").apply() |
| | | Log.e(Const.Tag,"私人定制已保存") |
| | | (fragments[0] as HomeFragment).getPrivacy() |
| | |
| | | |
| | | private fun getData(){ |
| | | HttpManager.getMeditationQuestionPage(voiceId,page).request(requireActivity() as BaseActivity,success = { _, data-> |
| | | tv_title.text = "${data?.total}条提问" |
| | | tv_count.text = "${data?.total}条提问" |
| | | if (page == 1) |
| | | list.clear() |
| | | list.addAll(data?.list?: arrayListOf()) |
| | |
| | | object Apis { |
| | | private var isTest = true |
| | | |
| | | private const val TEST_URL = "http://192.168.110.64:9000/" //内网 |
| | | // private const val TEST_URL = "https://xq.xqzhihui.com/api/" //外网 |
| | | // private const val TEST_URL = "http://192.168.110.64:9000/" //内网 |
| | | private const val TEST_URL = "https://xq.xqzhihui.com/api/" //外网 |
| | | private const val LINE_URL = "https://jkcyl.cn/app/" //正式服 |
| | | val BASE_URL = if (isTest) TEST_URL else LINE_URL |
| | | |
| | |
| | | /** |
| | | * 验证码登录 |
| | | */ |
| | | fun captchaLogin(code: String, phone: String): Flowable<ResultData<LoginBean>> { |
| | | return request().captchaLogin("{\"cellPhone\":\"${phone}\",\"captcha\":\"${code}\"}") |
| | | fun captchaLogin(device: String, code: String, phone: String): Flowable<ResultData<LoginBean>> { |
| | | return request().captchaLogin("{\"device\":\"${device}\",\"cellPhone\":\"${phone}\",\"captcha\":\"${code}\"}") |
| | | } |
| | | |
| | | /** |
| | | * wx登录 |
| | | */ |
| | | fun wxLogin(openid: String?, name: String?,sex: Int?,avatar: String?): Flowable<ResultData<WxLoginBean>> { |
| | | return request().wxLogin(Gson().toJson(ReqWxLogin(avatar,name,sex,openid))) |
| | | fun wxLogin(device: String, openid: String?, name: String?,sex: Int?,avatar: String?): Flowable<ResultData<WxLoginBean>> { |
| | | return request().wxLogin(Gson().toJson(ReqWxLogin(device,avatar,name,sex,openid))) |
| | | } |
| | | |
| | | /** |
| | |
| | | val meditationQuestionId: String, |
| | | val noticeType: Int, |
| | | var readStatus: Int, |
| | | val time: String, |
| | | val createTime: String, |
| | | val title: String |
| | | ) |
| | | |
| | |
| | | val isSign: Int, |
| | | val nextLevel: Int, |
| | | val sowAgain: Int, |
| | | val status: Int, |
| | | var status: Int, |
| | | val taskOne: Int, |
| | | val taskTwo: Int, |
| | | var treeLevelType: Int |
| | |
| | | |
| | | data class WaterResult( |
| | | val growthValue: Int, |
| | | val treeLevelType: Int, |
| | | val isNext: Boolean, |
| | | val nextLevel: Int, |
| | | val energyValue: Int, |
| | | val status: Int |
| | | ) |
| | |
| | | |
| | | @Parcelize |
| | | data class ReqAnswer( |
| | | var device: String, |
| | | var tagIds: String, |
| | | val userAnswerOneDTOList: ArrayList<UserAnswerOneDTO> |
| | | ):Parcelable |
| | |
| | | package com.sinata.xqmuse.network.entity.req |
| | | |
| | | data class ReqWxLogin( |
| | | val device: String?, |
| | | val headImgUrl: String?, |
| | | val nickname: String?, |
| | | val sex: Int?, |
| | |
| | | val indexOf = list.map { it.audioFile }.indexOf(bgm) |
| | | if (indexOf>=0){ |
| | | banner_landscape.currentItem = indexOf |
| | | }else if (list.size>2){ |
| | | banner_landscape.currentItem = 1 |
| | | } |
| | | cardBannerAdapter.notifyDataSetChanged() |
| | | } |
| | |
| | | super.onCreate(savedInstanceState) |
| | | setContentView(R.layout.activity_splash) |
| | | getImg() |
| | | // val data = intent.data |
| | | // if (data!=null){ |
| | | // val url = data.toString() |
| | | // Log.e("mmp","路径:${url}") |
| | | // if (url.startsWith("jkfitness://jkcyl.cn?code=")){ |
| | | val data = intent.data |
| | | if (data!=null){ |
| | | val url = data.toString() |
| | | Log.e("mmp","路径:${url}") |
| | | // if (url.startsWith("xqmuse://xqmuse.cn?mid=")){ //何健豪:不做跳转详情 |
| | | // code = url.substring(url.indexOf("=")+1) |
| | | // Log.e("mmp","解析参数:code=${code}") |
| | | // Log.e("mmp","解析参数:音频id=${code}") |
| | | // } |
| | | // } |
| | | } |
| | | AMapLocationClient.updatePrivacyShow(this,true,true) |
| | | AMapLocationClient.updatePrivacyAgree(this,true) |
| | | AMapUtilCoreApi.setCollectInfoEnable(false) |
| | |
| | | import com.sinata.xqmuse.ui.course.adapter.ChapterAdapter |
| | | import com.sinata.xqmuse.ui.course.adapter.CourseGridAdapter |
| | | import com.sinata.xqmuse.utils.AppBarStateChangeListener |
| | | import com.sinata.xqmuse.utils.Const |
| | | import com.sinata.xqmuse.utils.interfaces.StringCallback |
| | | import com.umeng.socialize.bean.SHARE_MEDIA |
| | | import kotlinx.android.synthetic.main.activity_course_deatil.* |
| | |
| | | override fun onResult(rst: String) { |
| | | if (rst == "wx"){ |
| | | ShareUtils.share(this@CourseDetailActivity, |
| | | SHARE_MEDIA.WEIXIN,data?.courseTitle,"分享你一个课程", |
| | | SHARE_MEDIA.WEIXIN,data?.courseTitle, Const.SHARE.SHARE_COURSE_TITLE, |
| | | Apis.SHARE_COURSE.format(data?.id),null,"") |
| | | }else{ |
| | | ShareUtils.share(this@CourseDetailActivity, |
| | | SHARE_MEDIA.WEIXIN_CIRCLE,data?.courseTitle,"分享你一个课程", |
| | | SHARE_MEDIA.WEIXIN_CIRCLE,data?.courseTitle,Const.SHARE.SHARE_COURSE_TITLE, |
| | | Apis.SHARE_COURSE.format(data?.id),null,"") |
| | | } |
| | | } |
| | |
| | | State.EXPANDED -> { |
| | | //展开状态 |
| | | iv_back.imageResource = R.mipmap.icon_back_white |
| | | iv_share.imageResource = R.mipmap.ic_share |
| | | if (data?.isCollect!=1) |
| | | iv_collect.imageResource = R.mipmap.uncollect |
| | | tvTitle.textColorResource = R.color.white |
| | | } |
| | | State.COLLAPSED -> { |
| | | //折叠状态 |
| | | iv_back.imageResource = R.mipmap.back |
| | | iv_share.imageResource = R.mipmap.ic_share_black |
| | | if (data?.isCollect!=1) |
| | | iv_collect.imageResource = R.mipmap.uncollect_b |
| | | tvTitle.textColorResource = R.color.textColor |
| | | } |
| | | } |
| | |
| | | override fun onFirstVisibleToUser() { |
| | | when(type){ |
| | | TYPE_ACCOUNT->{ |
| | | tv_msg.text = "如你当前登录心泉·疗愈的手机号码不是购买课程时填写的手机号码,请点击下方按钮,使用购买课程的手机号码登录即可。" |
| | | tv_msg.text = "如你当前登录泉疗愈的手机号码不是购买课程时填写的手机号码,请点击下方按钮,使用购买课程的手机号码登录即可。" |
| | | tv_action.text = "换个手机号登录" |
| | | } |
| | | TYPE_PHONE->{ |
| | | tv_msg.text = "如你希望变更心泉·疗愈的手机号码,请点击下方按钮,根据页面提示录入新的手机号码" |
| | | tv_msg.text = "如你希望变更泉疗愈的手机号码,请点击下方按钮,根据页面提示录入新的手机号码" |
| | | tv_action.text = "前往改绑手机号" |
| | | } |
| | | TYPE_WX->{ |
| | | tv_msg.text = "如你希望变更心泉·疗愈的微信号,请点击下方按钮,根据页面提示授权登录其他微信号" |
| | | tv_msg.text = "如你希望变更泉疗愈的微信号,请点击下方按钮,根据页面提示授权登录其他微信号" |
| | | tv_action.text = "前往改绑微信号" |
| | | } |
| | | } |
| | |
| | | rv_free.adapter = freeAdapter |
| | | rv_my.layoutManager = GridLayoutManager(this,2) |
| | | rv_my.adapter = myAdapter |
| | | myAdapter.isOrder = true |
| | | |
| | | refreshLayout.setOnRefreshListener { |
| | | getData() |
| | |
| | | tv_empty.gone() |
| | | tv_action.gone() |
| | | } |
| | | if (freeList.isNullOrEmpty()){ |
| | | tv_empty2.visible() |
| | | }else{ |
| | | tv_empty2.gone() |
| | | } |
| | | }){_,_-> |
| | | refreshLayout.finishRefresh(false) |
| | | } |
| | |
| | | import com.sinata.xqmuse.network.entity.CourseDetail |
| | | import com.sinata.xqmuse.network.request |
| | | import com.sinata.xqmuse.ui.TransparentStatusBarActivity |
| | | import com.sinata.xqmuse.utils.Const |
| | | import com.sinata.xqmuse.utils.glide.GlideUtil |
| | | import com.sinata.xqmuse.utils.interfaces.StringCallback |
| | | import com.umeng.socialize.bean.SHARE_MEDIA |
| | | import kotlinx.android.synthetic.main.activity_offline_course.* |
| | | import org.jetbrains.anko.backgroundColor |
| | | import org.jetbrains.anko.backgroundResource |
| | | import xyz.doikki.videocontroller.StandardVideoController |
| | | import xyz.doikki.videoplayer.player.BaseVideoView.* |
| | | |
| | |
| | | override fun onResult(rst: String) { |
| | | if (rst == "wx"){ |
| | | ShareUtils.share(this@OfflineCourseActivity, |
| | | SHARE_MEDIA.WEIXIN,data?.courseTitle,"分享你一个课程", |
| | | SHARE_MEDIA.WEIXIN,data?.courseTitle, Const.SHARE.SHARE_COURSE_TITLE, |
| | | Apis.SHARE_OFFLINE.format(data?.id),null,"") |
| | | }else{ |
| | | ShareUtils.share(this@OfflineCourseActivity, |
| | | SHARE_MEDIA.WEIXIN_CIRCLE,data?.courseTitle,"分享你一个课程", |
| | | SHARE_MEDIA.WEIXIN_CIRCLE,data?.courseTitle,Const.SHARE.SHARE_COURSE_TITLE, |
| | | Apis.SHARE_OFFLINE.format(data?.id),null,"") |
| | | } |
| | | } |
| | |
| | | settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING |
| | | webView.webChromeClient = object : WebChromeClient() {} |
| | | webView.webViewClient = object : WebViewClient() {} |
| | | webView.backgroundColor = 0 |
| | | webView.background.alpha = 0 |
| | | data?.apply { |
| | | iv_collect.setImageResource(if (data?.isCollect == 1) R.mipmap.collected else R.mipmap.uncollect) |
| | | if ((detailUrl?:"").isVideo()){ |
| | |
| | | controller.addDefaultControlComponent(courseTitle, false) |
| | | mVideoView.setVideoController(controller) //设置控制器 |
| | | mVideoView.setUrl(detailUrl) //设置视频地址 |
| | | GlideUtil.load(this@OfflineCourseActivity, detailUrl, iv_cover, 0) |
| | | GlideUtil.load(this@OfflineCourseActivity, coverUrl, iv_cover, 0) |
| | | }else{ |
| | | cl_title.gone() |
| | | iv_cover.gone() |
| | |
| | | BaseVideoView.STATE_PLAYBACK_COMPLETED ->{ |
| | | chapters[adapter.current].isOver = 1 |
| | | saveProgress(1,0) |
| | | if (adapter.current == chapters.lastIndex){ |
| | | iv_cover.visible() |
| | | ivPlay.visible() |
| | | }else{ |
| | | adapter.current++ |
| | | // if (adapter.current == chapters.lastIndex){ //测试外包:不自动播放下一章节 |
| | | // iv_cover.visible() |
| | | // ivPlay.visible() |
| | | // }else{ |
| | | // adapter.current++ |
| | | // startPlay() |
| | | // } |
| | | adapter.notifyDataSetChanged() |
| | | startPlay() |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import kotlinx.android.synthetic.main.fragment_teacher.* |
| | | import org.greenrobot.eventbus.EventBus |
| | | import org.greenrobot.eventbus.Subscribe |
| | | import org.jetbrains.anko.backgroundColor |
| | | import xyz.doikki.videocontroller.StandardVideoController |
| | | |
| | | class TeacherFragment : BaseFragment() { |
| | |
| | | settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING |
| | | webView.webChromeClient = object : WebChromeClient() {} |
| | | webView.webViewClient = object : WebViewClient() {} |
| | | webView.backgroundColor = 0 |
| | | webView.background.alpha = 0 |
| | | rv_course.layoutManager = GridLayoutManager(requireContext(),2) |
| | | rv_course.adapter = adapter |
| | | getData() |
| | |
| | | import android.view.ViewGroup |
| | | import android.widget.ImageView |
| | | import androidx.recyclerview.widget.RecyclerView |
| | | import com.facebook.drawee.view.SimpleDraweeView |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.network.entity.Banner |
| | | import com.sinata.xqmuse.utils.glide.GlideUtil |
| | |
| | | size: Int |
| | | ) { |
| | | val bannerViewHolder = holder as BannerViewHolder |
| | | GlideUtil.load(context,data?.url,bannerViewHolder.img,0) |
| | | bannerViewHolder.img.setImageURI(data?.url) |
| | | // GlideUtil.load(context,data?.url,bannerViewHolder.img,0) |
| | | bannerViewHolder.bg.visibility = View.GONE |
| | | } |
| | | |
| | | inner class BannerViewHolder(v:View) :RecyclerView.ViewHolder(v){ |
| | | var img:ImageView = v.findViewById(R.id.iv_img) as ImageView |
| | | var img:SimpleDraweeView = v.findViewById(R.id.iv_img) as SimpleDraweeView |
| | | var bg:View = v.findViewById(R.id.bg) as View |
| | | } |
| | | } |
| | |
| | | import com.facebook.drawee.view.SimpleDraweeView |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.network.entity.CourseBean |
| | | import com.sinata.xqmuse.utils.HtmlUtils |
| | | import java.util.ArrayList |
| | | |
| | | class CourseGridAdapter(list: ArrayList<CourseBean>,val isVoice:Boolean = false):HFRecyclerAdapter<CourseBean>(list, R.layout.item_course_grid) { |
| | |
| | | override fun onBind(holder: ViewHolder, position: Int, data: CourseBean) { |
| | | holder.bind<SimpleDraweeView>(R.id.iv_bg).setImageURI(if (data.coverUrl.contains(",")) data.coverUrl.split(",").getOrNull(1) else data.coverUrl) |
| | | holder.setText(R.id.tv_title,if (isVoice) data.meditationTitle else data.courseTitle) |
| | | holder.setText(R.id.tv_subtitle,if (isVoice) data.coverDescription else data.description) |
| | | holder.setText(R.id.tv_subtitle,if (isVoice) data.coverDescription else if (!data.description.isNullOrEmpty()) data.description else HtmlUtils.getTextFromHtml(data.briefIntroduction)) |
| | | holder.setText(R.id.tv_count,(if (isVoice) data.realLearnedNum else data.count).toString()) |
| | | |
| | | val iv_vip = holder.bind<View>(R.id.iv_vip) |
| | |
| | | import android.widget.TextView |
| | | import cn.sinata.xldutils.adapter.HFRecyclerAdapter |
| | | import cn.sinata.xldutils.adapter.util.ViewHolder |
| | | import cn.sinata.xldutils.utils.ellipsize |
| | | import com.facebook.drawee.view.SimpleDraweeView |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.network.entity.Msg |
| | |
| | | val iv = holder.bind<ImageView>(R.id.iv) |
| | | iv.setImageResource(if (data.noticeType == 2) R.mipmap.ic_msg1 else R.mipmap.ic_notice) |
| | | // holder.setText(R.id.tv_type,if (data.noticeType == 2) "回复消息" else "系统消息") |
| | | holder.setText(R.id.tv_type,data.title) |
| | | holder.setText(R.id.tv_type,data.title.ellipsize(8)) |
| | | holder.bind<View>(R.id.iv_unread).visibility = if (data.readStatus == 1) View.VISIBLE else View.GONE |
| | | holder.setText(R.id.tv_time,data.time) |
| | | holder.setText(R.id.tv_time,data.createTime) |
| | | holder.setText(R.id.tv_content,data.content) |
| | | } |
| | | |
| | | } |
| | |
| | | override fun setContentView() = R.layout.activity_qa |
| | | |
| | | private val questions = arrayListOf("您是否内心纠结敏感多疑?","您是否辗转反侧彻夜难眠?","您是否情绪失控暴躁易怒?","您是否沉迷情感倍受伤害?","您是否人生迷茫踌躇彷徨?") |
| | | private var answer: ReqAnswer = ReqAnswer("", arrayListOf()) |
| | | private var answer: ReqAnswer = ReqAnswer("","", arrayListOf()) |
| | | private var index = 0 |
| | | |
| | | override fun initClick() { |
| | |
| | | package com.sinata.xqmuse.ui.guide |
| | | |
| | | import android.annotation.SuppressLint |
| | | import android.provider.Settings |
| | | import android.util.Log |
| | | import android.widget.LinearLayout |
| | | import androidx.core.view.children |
| | |
| | | private val answer by lazy { intent.getParcelableExtra<ReqAnswer>("answer") } |
| | | private val tags by lazy { intent.getParcelableArrayListExtra<TagBean>("tags") } |
| | | |
| | | @SuppressLint("HardwareIds") |
| | | override fun initClick() { |
| | | tv_skip.setOnClickListener { |
| | | onBackPressed() |
| | |
| | | startActivity<MainActivity>() |
| | | }else{ |
| | | tv_action.isEnabled = false |
| | | answer?.device = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) |
| | | HttpManager.saveUserAnswers(answer!!).request(this,success = {_,_-> |
| | | toast("保存成功") |
| | | startActivity<MainActivity>() |
| | |
| | | iv_daily_empty.gone() |
| | | iv_today.setImageURI(today?.imageUrl) |
| | | tv_length_today.text = "${today?.clientMeditationVO?.meditationTitle?.ellipsize(12)} | ${"%02d:%02d".format((data?.time?:0)/60,(data?.time?:0)%60)}" |
| | | tv_today_count.text = "${today?.clientMeditationVO?.realLearnedNum}人已参加学习" |
| | | tv_today_count.text = "${(today?.clientMeditationVO?.realLearnedNum?:0)+(today?.clientMeditationVO?.virtualLearnedNum?:0)}人已参加学习" |
| | | } |
| | | } |
| | | } |
| | |
| | | iv_play_today.setImageResource(R.mipmap.player_pause) |
| | | else |
| | | iv_play_today.setImageResource(R.mipmap.play) |
| | | |
| | | } |
| | | |
| | | fun getPrivacy() { |
| | |
| | | bannerViewHolder.iv_bg.setImageURI(data?.coverUrl?.split(",")?.get(1)) |
| | | bannerViewHolder.tv_title.text = data?.meditationTitle |
| | | bannerViewHolder.tv_subtitle.text = data?.coverDescription?.ellipsize(6) |
| | | bannerViewHolder.tv_count.text = (data?.realLearnedNum?:0).toString() |
| | | bannerViewHolder.tv_count.text = ((data?.realLearnedNum?:0)+(data?.virtualLearnedNum?:0)).toString() |
| | | when(data?.chargeType){ //1=免费 2=会员免费 3=单独收费 |
| | | 2->{ |
| | | bannerViewHolder.iv_vip.visible() |
| | |
| | | bannerViewHolder.iv_bg.setImageURI(coverUrl) |
| | | bannerViewHolder.tv_name.text = data?.meditationTitle |
| | | bannerViewHolder.tv_subtitle.text = data?.coverDescription |
| | | bannerViewHolder.iv_play.setOnClickListener { |
| | | context.toast("播放") |
| | | } |
| | | } |
| | | |
| | | inner class BannerViewHolder(v:View) :RecyclerView.ViewHolder(v){ |
| | |
| | | bannerViewHolder.iv_bg.setImageURI(data?.coverUrl?.split(",")?.get(0)) |
| | | bannerViewHolder.tv_title.text = data?.meditationTitle |
| | | bannerViewHolder.tv_subtitle.text = data?.coverDescription?.ellipsize(18) |
| | | bannerViewHolder.tv_count.text = (data?.realLearnedNum?:0).toString() |
| | | bannerViewHolder.tv_count.text = ((data?.realLearnedNum?:0)+(data?.virtualLearnedNum?:0)).toString() |
| | | when(data?.chargeType){ //1=免费 2=会员免费 3=单独收费 |
| | | 2->{ |
| | | bannerViewHolder.iv_vip.visible() |
| | |
| | | holder.bind<SimpleDraweeView>(R.id.iv_bg).setImageURI(data.coverUrl?.split(",")?.elementAtOrNull(1)) |
| | | holder.setText(R.id.tv_title,data?.meditationTitle) |
| | | holder.setText(R.id.tv_subtitle,data?.coverDescription) |
| | | holder.setText(R.id.tv_count,(data?.realLearnedNum?:0).toString()) |
| | | holder.setText(R.id.tv_count,(data.realLearnedNum+data.virtualLearnedNum).toString()) |
| | | |
| | | val iv_vip = holder.bind<View>(R.id.iv_vip) |
| | | val tv_price = holder.bind<TextView>(R.id.tv_price) |
| | |
| | | private var user = "" |
| | | private var privacy = "" |
| | | |
| | | private val device by lazy { |
| | | Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) |
| | | } |
| | | |
| | | @SuppressLint("CheckResult") |
| | | override fun initClick() { |
| | | cb_pwd.setOnClickListener { |
| | |
| | | } |
| | | |
| | | tv_action.isEnabled = false |
| | | HttpManager.captchaLogin(code, et_phone.text.toString()) |
| | | HttpManager.captchaLogin(device,code, et_phone.text.toString()) |
| | | .request(this, success = { _, data -> |
| | | data?.let { |
| | | loginSuccess(it.accessToken) |
| | |
| | | val avatar = p2?.get("profile_image_url") |
| | | val gender = p2?.get("gender") |
| | | val nickname = p2?.get("name") |
| | | HttpManager.wxLogin(openid, nickname,if (gender == "0") 1 else 2,avatar).request(this,false,{ _, data -> |
| | | HttpManager.wxLogin(device,openid, nickname,if (gender == "0") 1 else 2,avatar).request(this,false,{ _, data -> |
| | | data?.let { |
| | | if (it.bindStatus ==1){ |
| | | startActivityForResult<BindPhoneActivity>(200,"token" to it.accessToken,"openid" to openid) |
| | |
| | | "utf-8", |
| | | null |
| | | ) |
| | | mProgressBar.progress = (data?.growthValue?:0)*100/(data?.nextLevel?:100) |
| | | mProgressBar.max = data?.nextLevel?:100 |
| | | mProgressBar.progress = data?.growthValue?:0 |
| | | } |
| | | } |
| | | } |
| | |
| | | startActivity<WatchHisActivity>("type" to WatchHisActivity.HAS_BUY) |
| | | } |
| | | bg_vip.setOnClickListener { |
| | | startActivityForResult<VipActivity>(1) |
| | | startActivity<VipActivity>() |
| | | } |
| | | tv_service.setOnClickListener { |
| | | startActivity<ServiceActivity>() |
| | |
| | | fun refreshInfo(e: EmptyEvent){ |
| | | if (e.code == Const.EventCode.CHANGE_USER){ |
| | | showUserInfo() |
| | | } else if (e.code == Const.EventCode.USER_INFO_CHANGED){ |
| | | showUserInfo() |
| | | } |
| | | } |
| | | |
| | |
| | | "你还未开通会员服务" |
| | | } else{ |
| | | bg_vip.backgroundResource = R.mipmap.bg_vip |
| | | tv_describe.text = "您将享受所有会员专享音频,尽情畅游心泉·疗愈世界" |
| | | tv_describe.text = "您将享受所有会员专享音频,尽情畅游泉疗愈世界" |
| | | "${vipExpireTime?.substring(0,10)}到期" |
| | | } |
| | | iv_vip.setImageURI(data.levelIcon) |
| | |
| | | }else{ |
| | | PayUtil.aliPay(this,data?.orderInfo?:"") |
| | | } |
| | | onPaySuccess() //todo test |
| | | |
| | | } |
| | | onPaySuccess() |
| | | } |
| | | |
| | | override fun onPaySuccess() { |
| | |
| | | shareDialog.callback = object :StringCallback{ |
| | | override fun onResult(rst: String) { |
| | | if (rst == "wx"){ |
| | | ShareUtils.share(this@ShareActivity,SHARE_MEDIA.WEIXIN,"分享内容","分享标题",Apis.SHARE_APP.format(userId),null,"") |
| | | ShareUtils.share(this@ShareActivity,SHARE_MEDIA.WEIXIN,Const.SHARE.SHARE_CONTENT,Const.SHARE.SHARE_TITLE,Apis.SHARE_APP.format(userId),null,"") |
| | | }else if (rst == "circle"){ |
| | | ShareUtils.share(this@ShareActivity,SHARE_MEDIA.WEIXIN_CIRCLE,"分享内容","分享标题",Apis.SHARE_APP.format(userId),null,"") |
| | | ShareUtils.share(this@ShareActivity,SHARE_MEDIA.WEIXIN_CIRCLE,Const.SHARE.SHARE_CONTENT,Const.SHARE.SHARE_TITLE,Apis.SHARE_APP.format(userId),null,"") |
| | | }else{ |
| | | RxPermissions(this@ShareActivity).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe { |
| | | if (it) |
| | |
| | | import com.sinata.xqmuse.ui.TransparentStatusBarActivity |
| | | import com.sinata.xqmuse.ui.mine.adapter.VipPriceAdapter |
| | | import com.sinata.xqmuse.utils.Const |
| | | import com.sinata.xqmuse.utils.event.EmptyEvent |
| | | import com.sinata.xqmuse.utils.interfaces.StringCallback |
| | | import com.sinata.xqmuse.utils.pay.PayListener |
| | | import com.sinata.xqmuse.utils.pay.PayUtil |
| | | import kotlinx.android.synthetic.main.activity_vip.* |
| | | import org.greenrobot.eventbus.EventBus |
| | | import org.jetbrains.anko.backgroundResource |
| | | import org.jetbrains.anko.toast |
| | | |
| | |
| | | PayUtil.weChatPay(data!!) |
| | | }else{ |
| | | PayUtil.aliPay(this@VipActivity,data?.orderInfo?:"") |
| | | tv_action.postDelayed({ //TEST CALLBACK |
| | | onPaySuccess() |
| | | },3000) |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | "你还未开通会员服务" |
| | | } else{ |
| | | bg_vip.backgroundResource = R.mipmap.bg_vip |
| | | tv_describe.text = "您将享受所有会员专享音频,尽情畅游心泉·疗愈世界" |
| | | tv_describe.text = "您将享受所有会员专享音频,尽情畅游泉疗愈世界" |
| | | "${vipExpireTime?.substring(0,10)}到期" |
| | | } |
| | | } |
| | |
| | | |
| | | override fun onPaySuccess() { |
| | | showVipInfo() |
| | | EventBus.getDefault().post(EmptyEvent(Const.EventCode.USER_INFO_CHANGED)) |
| | | } |
| | | |
| | | override fun onPayCancel() { |
| | |
| | | Log.e("虚拟导航栏高度", "$virtualBarHeigh") |
| | | val navigationBarHeight = getNavigationBarHeight() |
| | | Log.e("导航栏高度", "$navigationBarHeight") |
| | | if (virtualBarHeigh >= getNavigationBarHeight()) //如果虚拟导航栏高度大于或等于导航栏高度,说明虚拟导航栏在显示,需要减去导航栏的高度 |
| | | behavior.setPeekHeight(dip(63) - getNavigationBarHeight(), true) |
| | | else |
| | | // if (virtualBarHeigh >= getNavigationBarHeight()) //如果虚拟导航栏高度大于或等于导航栏高度,说明虚拟导航栏在显示,需要减去导航栏的高度 |
| | | // behavior.setPeekHeight(dip(63) + getNavigationBarHeight(), true) |
| | | // else |
| | | behavior.setPeekHeight(dip(63), true) |
| | | tv_rule.setOnClickListener { |
| | | HttpManager.getH5(6).requestByF(this){ _, data-> |
| | |
| | | else |
| | | HttpManager.watering().requestByF(this){_,data-> |
| | | data?.apply { |
| | | EventBus.getDefault().post(EmptyEvent(Const.EventCode.USER_INFO_CHANGED)) //刷新成长值 |
| | | tv_max.text = "/$nextLevel" |
| | | tv_growth.text = growthValue.toString() |
| | | val targetHeight = growthValue.toDouble()/nextLevel*dip(155) |
| | | val layoutParams = progress.layoutParams |
| | | showGrowthAnim(layoutParams.height, max(1,targetHeight.toInt())) |
| | | showWater() |
| | | tree?.energyValue = 0 |
| | | tree?.energyValue = energyValue |
| | | tv_power.text = "当前能量值:${(tree?.energyValue?:0)}" |
| | | if (isNext){ |
| | | tree!!.treeLevelType++ |
| | | if (tree!!.treeLevelType != data.treeLevelType){ |
| | | tree!!.treeLevelType = data.treeLevelType |
| | | showTreeAnim(tree!!.getTreeApng(),true) |
| | | audioPlayer.startPlayMusic(requireContext(),tree!!.getLevelUpAudio()) |
| | | TreeTipDialog.show(childFragmentManager,"升级","恭喜!你的树苗已升级为${tree!!.getLevelName()}阶段!") |
| | | }else if (tree!!.status != 2){ |
| | | tree!!.status = 2 |
| | | showTreeAnim(tree!!.getTreeApng(),tree!!.treeLevelType != 1) |
| | | } |
| | | } |
| | | } |
| | |
| | | mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { |
| | | @Override |
| | | public void onCompletion(MediaPlayer mp) { |
| | | Log.e("mmp", "播放完成 从新循环 path:" + filePath); |
| | | // Log.e("mmp", "播放完成 从新循环 path:" + filePath); |
| | | mMediaPlayer.start(); |
| | | if (isPause){ |
| | | Log.e("mmp", "循环播放异步暂停"); |
| | | // Log.e("mmp", "循环播放异步暂停"); |
| | | mMediaPlayer.pause(); |
| | | } |
| | | } |
| | |
| | | |
| | | val OSS_DOMAIN = "https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/" |
| | | |
| | | object SHARE{ |
| | | const val SHARE_TITLE = "分享疗愈时光,让宁静触手可及" |
| | | const val SHARE_CONTENT = "这份疗愈之旅,带来了意想不到的平静和安宁。愿与你一同分享,让我们在繁忙的生活中找到片刻的温柔,静享属于我们的宁静时光。" |
| | | const val SHARE_COURSE_TITLE = "传递心灵温暖,一起感受疗愈力量" |
| | | } |
| | | |
| | | object TREE { |
| | | val first = OSS_DOMAIN+"xinquan/1d3254a9966b476789491032d8bb908a.wav" |
| | | val LEVEL_2 = OSS_DOMAIN+"xinquan/d8daa4d5490f40f9a68a8469ad697660.wav" |
| | |
| | | } |
| | | |
| | | public static String getTextFromHtml(String htmlStr) { |
| | | if (htmlStr == null||htmlStr.isEmpty()) |
| | | return ""; |
| | | htmlStr = delHTMLTag(htmlStr); |
| | | htmlStr = htmlStr.replaceAll(" ", ""); |
| | | // if (htmlStr.length() > 50) { |
| | |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:text="心泉·疗愈" |
| | | android:text="泉疗愈" |
| | | android:textSize="18sp" |
| | | android:textStyle="bold" |
| | | android:textColor="@color/textColor" |
| | |
| | | android:layout_marginTop="25dp" |
| | | android:textColor="@color/textColor" |
| | | tools:text="心里咨询课程" |
| | | android:singleLine="true" |
| | | android:ellipsize="end" |
| | | android:textStyle="bold" |
| | | android:layout_marginStart="20sp" |
| | | android:layout_marginEnd="10dp" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | app:screenScaleType="type_center_crop" |
| | | app:playerBackgroundColor="@color/black" |
| | | app:playerBackgroundColor="@color/colorPrimary" |
| | | android:id="@+id/player"/> |
| | | |
| | | <TextView |
| | |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:layout_marginTop="47dp" |
| | | android:textSize="41sp" |
| | | android:text="心泉·疗愈空间" |
| | | android:text="泉疗愈空间" |
| | | android:textColor="@color/white" |
| | | android:id="@+id/tv_1"/> |
| | | <TextView |
| | |
| | | app:layout_constraintTop_toBottomOf="@id/tv_1" |
| | | android:gravity="center" |
| | | android:lineSpacingExtra="10dp" |
| | | android:text="亲爱的家人,温暖喜悦问候您\n我是心泉老师\n欢迎来到心泉·疗愈空间\n愿这一方空间为您带来\n平和 喜悦 放松 宁静" |
| | | android:text="亲爱的家人,温暖喜悦问候您\n我是心泉老师\n欢迎来到泉疗愈空间\n愿这一方空间为您带来\n放松 平和 宁静 与喜悦" |
| | | android:textColor="@color/white" |
| | | android:layout_marginTop="36dp" |
| | | android:textSize="18sp"/> |
| | |
| | | android:textSize="22sp" |
| | | android:textColor="#404040" |
| | | android:lineSpacingExtra="10dp" |
| | | android:text="请您遵从本心\n回答以下问题\n挑选您喜欢的空间环境\n为您定制专属您的\n心泉·疗愈空间"/> |
| | | android:text="请您遵从本心\n回答以下问题\n挑选您喜欢的空间环境\n为您定制专属您的\n泉疗愈空间"/> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | app:layout_constraintTop_toBottomOf="@id/iv_level" |
| | | android:layout_marginTop="20dp" |
| | | android:layout_marginHorizontal="14dp" |
| | | android:max="100" |
| | | android:id="@+id/mProgressBar"/> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | |
| | | android:layout_marginHorizontal="14dp" |
| | | android:layout_marginTop="9dp" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_2" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_2" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:id="@+id/tv_empty2" |
| | | android:text="暂无推荐" |
| | | android:textSize="12sp" |
| | | android:layout_marginTop="30dp" |
| | | android:textColor="@color/textColor66" |
| | | android:drawableTop="@mipmap/wu" |
| | | android:drawablePadding="20dp" |
| | | android:gravity="center"/> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | </androidx.core.widget.NestedScrollView> |
| | | |
| | |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | android:layout_marginTop="25dp" |
| | | android:textColor="@color/textColor" |
| | | android:singleLine="true" |
| | | android:ellipsize="end" |
| | | tools:text="心里咨询课程" |
| | | android:textStyle="bold" |
| | | android:layout_marginStart="20sp" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:id="@+id/webView" |
| | | android:layout_marginStart="21dp" |
| | | android:background="@color/page_bg" |
| | | android:layout_marginTop="19dp"/> |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | |
| | | android:id="@+id/iv_contact" |
| | | android:src="@mipmap/ic_contact" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:layout_marginEnd="4dp" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | android:layout_marginBottom="180dp"/> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | <androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/white" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content"> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:layout_marginHorizontal="16dp" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_answer" |
| | | android:layout_marginTop="11dp"/> |
| | | |
| | | <RelativeLayout |
| | | android:id="@+id/rl_web" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_answer" |
| | | android:layout_marginTop="30dp" |
| | | android:background="@drawable/bg_grey_10dp_web" |
| | | android:padding="10dp" |
| | | android:layout_marginHorizontal="16dp"> |
| | | <WebView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:minHeight="300dp" |
| | | android:background="@color/transparent" |
| | | android:id="@+id/webView"/> |
| | | </RelativeLayout> |
| | | |
| | | |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:textSize="12sp" |
| | | android:textColor="@color/textColor66" |
| | | android:text="咨询客服" |
| | | app:layout_constraintTop_toBottomOf="@id/iv_code" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:layout_marginTop="4dp" |
| | | android:layout_marginBottom="30dp"/> |
| | | |
| | | <com.facebook.drawee.view.SimpleDraweeView |
| | |
| | | android:layout_width="96dp" |
| | | android:layout_height="96dp" |
| | | android:layout_gravity="center" |
| | | app:layout_constraintBottom_toTopOf="@id/tv_1" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:layout_marginTop="40dp" |
| | | app:actualImageScaleType="fitXY" |
| | | app:layout_constraintTop_toBottomOf="@+id/rl_web" |
| | | app:placeholderImage="@color/page_bg" |
| | | android:layout_marginBottom="4dp"/> |
| | | |
| | | <RelativeLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_answer" |
| | | android:layout_marginTop="30dp" |
| | | android:background="@drawable/bg_grey_10dp_web" |
| | | app:layout_constraintBottom_toTopOf="@id/iv_code" |
| | | android:layout_marginBottom="45dp" |
| | | android:padding="10dp" |
| | | android:layout_marginHorizontal="16dp"> |
| | | <WebView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/transparent" |
| | | android:id="@+id/webView"/> |
| | | </RelativeLayout> |
| | | |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | |
| | | </androidx.core.widget.NestedScrollView> |
| | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="心泉·疗愈会员" |
| | | android:text="泉疗愈会员" |
| | | app:layout_constraintTop_toTopOf="@id/bg_vip" |
| | | app:layout_constraintStart_toStartOf="@id/bg_vip" |
| | | android:layout_marginStart="19dp" |
| | |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:text="心泉·疗愈" |
| | | android:text="泉疗愈" |
| | | android:textSize="18sp" |
| | | android:textStyle="bold" |
| | | android:textColor="@color/white" |
| | |
| | | android:paddingBottom="30dp" |
| | | android:layout_height="wrap_content"> |
| | | <TextView |
| | | android:id="@+id/tv_title" |
| | | android:id="@+id/tv_count" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="0条提问" |
| | |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:id="@+id/iv_close" |
| | | app:layout_constraintTop_toTopOf="@id/tv_title" |
| | | app:layout_constraintBottom_toBottomOf="@id/tv_title" |
| | | app:layout_constraintTop_toTopOf="@id/tv_count" |
| | | app:layout_constraintBottom_toBottomOf="@id/tv_count" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:padding="10dp" |
| | | android:layout_marginEnd="5dp" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1px" |
| | | android:background="@color/textColor66" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_title" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_count" |
| | | android:layout_margin="21dp"/> |
| | | <com.scwang.smart.refresh.layout.SmartRefreshLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="420dp" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_title" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_count" |
| | | android:layout_marginTop="22dp" |
| | | android:id="@+id/refreshLayout"> |
| | | <com.scwang.smart.refresh.header.ClassicsHeader |
| | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="心泉·疗愈会员" |
| | | android:text="泉疗愈会员" |
| | | app:layout_constraintTop_toTopOf="@id/bg_vip" |
| | | app:layout_constraintStart_toStartOf="@id/bg_vip" |
| | | android:layout_marginStart="19dp" |
| | |
| | | android:id="@+id/banner" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_marginTop="16dp" |
| | | android:src="@mipmap/bg_guide" |
| | | app:layout_constraintDimensionRatio="390:205" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_1" |
| | | android:layout_marginTop="18dp" |
| | | android:background="@color/white" |
| | | android:id="@+id/webView"/> |
| | | |
| | | <TextView |
| | |
| | | app:layout_behavior="@string/bottom_sheet_behavior" |
| | | android:id="@+id/bottom" |
| | | android:background="@drawable/bg_white_top_20dp" |
| | | android:layout_height="311dp"> |
| | | android:layout_height="290dp"> |
| | | <TextView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="53dp" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto"> |
| | | <ImageView |
| | | <com.facebook.drawee.view.SimpleDraweeView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:scaleType="centerCrop" |
| | | app:actualImageScaleType="fitXY" |
| | | android:id="@+id/iv_img"/> |
| | | <View |
| | | android:layout_width="match_parent" |