app/src/main/java/com/sinata/xqmuse/MainActivity.kt
@@ -49,7 +49,7 @@ var teacherVideoView:VideoView? = null private var bgPlayer:AudioUtils? = null//背景音乐播放器 private var thinkBgPlayer:AudioUtils? = null//冥想背景音播放器 private var thinkPlayer:AudioUtils? = null//冥想背景音播放器 // private var thinkPlayer:AudioUtils? = null//冥想背景音播放器 private var guideAudio:String? = null private var guidePlayer:AudioUtils? = null//引导音频播放器 @@ -91,13 +91,13 @@ if (playing){ player_play.setImageResource(R.mipmap.player_pause) thinkBgPlayer?.resume() thinkPlayer?.resume() // thinkPlayer?.resume() thinkHandler?.sendEmptyMessage(MSG_PROGRESS) startTime = System.currentTimeMillis() }else{ player_play.setImageResource(R.mipmap.player_start) thinkBgPlayer?.pause() thinkPlayer?.pause() // thinkPlayer?.pause() thinkHandler?.removeMessages(MSG_PROGRESS) saveThinkRecord() } @@ -184,30 +184,11 @@ if (voice?.meditationMusicList?.isNullOrEmpty() == false){ if (thinkBgPlayer == null){ thinkBgPlayer = AudioUtils() thinkPlayer = AudioUtils() thinkBgPlayer!!.setOnAudioStatusUpdateListener(this) thinkPlayer!!.setOnAudioStatusUpdateListener(object :AudioUtils.OnAudioStatusUpdateListener{ override fun onUpdate(db: Double, time: Long) { } override fun onStop(filePath: String?) { } override fun onStartPlay() { } override fun onFinishPlay() { EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK)) } override fun onGetDuration(duration: Int) { } }) } val volume = SPUtils.instance().getInt(Const.User.VOLUME_THINK,50) thinkPlayer?.setVolume(volume.toFloat()/100) thinkBgPlayer?.setVolume(volume.toFloat()/100) thinkBgPlayer?.startPlayMusic(this, voice?.meditationMusicList?.get(index)) thinkPlayer?.startPlayMusic(this, voice?.tutorAudioUrl) currentDuration = voice?.meditationSecondList?.get(index)?:0 EventBus.getDefault().post(EmptyEvent(Const.EventCode.GOT_THINK_DURATION)) playing = true @@ -230,7 +211,6 @@ index = 0 finishTime = 0L thinkBgPlayer?.stopPlayMusic(true) thinkPlayer?.stopPlayMusic(true) playing = false thinkHandler?.removeMessages(0) cl_player.gone() @@ -379,19 +359,17 @@ player_play.callOnClick() }else if(e.code == Const.EventCode.CHANGE_THINK_VOLUME){ val v = SPUtils.instance().getInt(Const.User.VOLUME_THINK,50) thinkPlayer?.setVolume(v.toFloat()/100) thinkBgPlayer?.setVolume(v.toFloat()/100) }else if(e.code == Const.EventCode.START_GUIDE_AUDIO){ inGuide = true startGuide() bgPlayer?.pause() thinkBgPlayer?.pause() thinkPlayer?.pause() }else if(e.code == Const.EventCode.FINISH_GUIDE_AUDIO){ inGuide = false guidePlayer?.stopPlayMusic(false) if (voice!=null&& playing){ thinkBgPlayer?.resume() thinkPlayer?.resume() } if (voice == null) bgPlayer?.resume() @@ -480,11 +458,13 @@ }else{//顺序 index++ if (index>=voice?.meditationMusicList?.size?:0)//列表已播完 index = 0 currentDuration = voice?.meditationSecondList?.get(index)?:0 EventBus.getDefault().post(EmptyEvent(Const.EventCode.GOT_THINK_DURATION)) if (playing) thinkBgPlayer?.startPlayMusic(this, voice?.meditationMusicList?.get(index)) EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK)) else{ currentDuration = voice?.meditationSecondList?.get(index)?:0 EventBus.getDefault().post(EmptyEvent(Const.EventCode.GOT_THINK_DURATION)) if (playing) thinkBgPlayer?.startPlayMusic(this, voice?.meditationMusicList?.get(index)) } } } @@ -503,7 +483,7 @@ var voice: VoiceDetail? = null //冥想详情 var index = 0 //当前播放序号 var currentDuration = 0 //当前音频长度(秒) var currentPosition = 0 //当前音频进度(秒) var currentPosition = 0L //当前音频进度(毫秒) var finishTime = 0L //自动结束的时间戳 } } app/src/main/java/com/sinata/xqmuse/dialog/BuyRuleDialog.kt
@@ -29,6 +29,9 @@ arguments?.getString("title")?:"" } var callback:StringCallback? = null private val sHead by lazy { "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) @@ -50,7 +53,13 @@ settings.defaultTextEncodingName = "utf-8" settings.domStorageEnabled = true sc_content.webChromeClient = object : WebChromeClient() {} sc_content.loadData(rule,"text/html; charset=utf-8", "utf-8") sc_content.loadDataWithBaseURL( null, sHead + rule, "text/html", "utf-8", null ) tv_cancel.setOnClickListener { callback?.onResult("refuse") dismiss() app/src/main/java/com/sinata/xqmuse/network/entity/VoiceDetail.kt
@@ -29,7 +29,6 @@ val sanskrit: Int, val isVip: Int, val sortNum: Int, val tutorAudioUrl: String, val virtualLearnedNum: Int ):Parcelable{ fun goDetail(context: Context){ app/src/main/java/com/sinata/xqmuse/ui/course/BuyCourseActivity.kt
@@ -169,6 +169,13 @@ val s = "余额抵扣 当前可用 ¥$balance" rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyCourseActivity,4,s.length,R.color.textColor99).build() rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0) if ((data?.generalPrice?:"0.0").toDouble() == 0.0){ rb_ali.isEnabled = false rb_wx.isEnabled = false rb_ali.alpha = 0.6f rb_wx.alpha = 0.6f } } } app/src/main/java/com/sinata/xqmuse/ui/home/BuyVoiceActivity.kt
@@ -44,18 +44,15 @@ tv_action.setOnClickListener { if (cb_rule.isChecked){ if (cb_rule.isChecked){ if (rb_balance.isChecked&&((data?.balance?:"0.0").toDouble()>=(data?.generalPrice?:"0.0").toDouble())){//余额勾选,并且可用余额大于课程价格,直接扣余额 payBalance() }else if (rb_ali.isChecked){ pay(2) }else if (rb_wx.isChecked){ pay(1) }else{ toast("请选择支付方式") } }else toast("请阅读并同意《购买协议》") if ((data?.generalPrice?:"0.0").toDouble() == 0.0||rb_balance.isChecked&&((data?.balance?:"0.0").toDouble()>=(data?.generalPrice?:"0.0").toDouble())){//余额勾选,并且可用余额大于课程价格,直接扣余额 payBalance() }else if (rb_ali.isChecked){ pay(2) }else if (rb_wx.isChecked){ pay(1) }else{ toast("请选择支付方式") } }else toast("请阅读并同意《购买协议》") } @@ -118,6 +115,12 @@ val s = "余额抵扣 当前可用 ¥$balance" rb_balance.text = SpanBuilder(s).size(4,s.length,11).color(this@BuyVoiceActivity,4,s.length,R.color.textColor99).build() rb_balance.isChecked = !(balance.isNullOrEmpty()||balance.toDouble() == 0.0) if ((data?.generalPrice?:"0.0").toDouble() == 0.0){ rb_ali.isEnabled = false rb_wx.isEnabled = false rb_ali.alpha = 0.6f rb_wx.alpha = 0.6f } } } } app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt
@@ -19,11 +19,13 @@ import com.sinata.xqmuse.ui.home.adapter.HomeBannerAdapter import com.sinata.xqmuse.ui.home.adapter.TopMenuAdapter import com.sinata.xqmuse.ui.login.LoginActivity import com.sinata.xqmuse.ui.mine.VipActivity import com.sinata.xqmuse.utils.Const import com.sinata.xqmuse.utils.event.EmptyEvent import com.sinata.xqmuse.utils.interfaces.StringCallback import kotlinx.android.synthetic.main.fragment_home.* import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.startActivity import org.jetbrains.anko.support.v4.startActivity import org.jetbrains.anko.support.v4.toast @@ -106,10 +108,16 @@ showDialog() HttpManager.getMeditationDetails(today!!.meditationId).requestByF(this,success = {_,data-> dismissDialog() if (MainActivity.playing) EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK)) MainActivity.voice = data EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_THINK)) if (data?.chargeType == 2&&data.isVip != 1){ //会员免费 startActivity<VipActivity>() }else if (data?.chargeType == 3&&data.isBuy != 1){ //单独收费且未购买 startActivity<BuyVoiceActivity>("id" to data.id) }else{ if (MainActivity.playing) EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK)) MainActivity.voice = data EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_THINK)) } }){_,_-> dismissDialog() } app/src/main/java/com/sinata/xqmuse/ui/home/VoiceDetailActivity.kt
@@ -146,7 +146,7 @@ iv_play.setImageResource(R.mipmap.player_pause) //恢复进度 tv_progress.text = "%02d:%02d".format(MainActivity.currentPosition/1000/60,MainActivity.currentPosition/1000%60) sb_voice.progress = MainActivity.currentPosition/1000 sb_voice.progress = (MainActivity.currentPosition/1000).toInt() } } EventBus.getDefault().register(this) @@ -189,7 +189,7 @@ sb_voice.max = MainActivity.currentDuration }else if (e.code == Const.EventCode.GOT_THINK_POSITION&&MainActivity.voice?.id == voiceDetail?.id){ tv_progress.text = "%02d:%02d".format(MainActivity.currentPosition/1000/60,MainActivity.currentPosition/1000%60) sb_voice.progress = MainActivity.currentPosition/1000 sb_voice.progress = (MainActivity.currentPosition/1000).toInt() } } app/src/main/java/com/sinata/xqmuse/ui/home/adapter/HomeAdapter.kt
@@ -64,7 +64,7 @@ banner_card.visible() val cardBannerAdapter = CardBannerAdapter(data.clientMeditationVOList,context) banner_card.adapter = cardBannerAdapter banner_card.setBannerGalleryEffect(100,15,0.9f) banner_card.setBannerGalleryEffect(110,12,0.92f) banner_card.setOnBannerListener { _, position -> callback?.onResult(data.clientMeditationVOList[position].id) } app/src/main/java/com/sinata/xqmuse/ui/mine/WalletActivity.kt
@@ -42,8 +42,6 @@ } tv_withdraw.clickDelay { toast("暂未开放") return@clickDelay startActivity<WithdrawActivity>("balance" to balance) } @@ -58,30 +56,6 @@ } } private fun withdraw(){ WithdrawDialog.show(supportFragmentManager,balance,object :StringCallback{ override fun onResult(rst: String) { HttpManager.withdrawal(rst.toDouble()).request(this@WalletActivity,false, {_,_-> startActivity<WithdrawRecordActivity>() myToast("提交成功") getData() }){_,msg-> if (msg.contains("绑定")){ TipDialog.show(supportFragmentManager,"提现失败,请先绑定银行卡。",object : TipDialog.OnClickCallback{ override fun onOk() { startActivity<BindCardActivity>() } override fun onCancel() { } },"去绑定") }else myToast(msg) } } }) } private fun initView() { EventBus.getDefault().register(this) app/src/main/java/com/sinata/xqmuse/ui/tree/TreeFragment.kt
@@ -78,7 +78,7 @@ EventBus.getDefault().post(EmptyEvent(Const.EventCode.SWITCH_HOME)) } iv_water.clickDelay { // showWater() showWater() // tree?.energyValue = 0 // tree!!.treeLevelType++ // showTreeAnim(tree!!.getTreeApng(),true) app/src/main/java/com/sinata/xqmuse/utils/AudioUtils.java
@@ -11,7 +11,12 @@ import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.PlaybackException; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.source.MediaSource; import com.sinata.xqmuse.utils.exo.ExoMediaPlayer; import com.sinata.xqmuse.utils.exo.ExoMediaPlayerFactory; import java.io.File; import java.io.IOException; @@ -32,7 +37,7 @@ public static final int MAX_LENGTH = 1000 * 600;// 最大录音时长十分钟,实际行程设置为5分钟上传一次 private OnAudioStatusUpdateListener audioStatusUpdateListener; private MediaPlayer mMediaPlayer; private SimpleExoPlayer mMediaPlayer; private float volume = 0.5f; //播放音量 @@ -231,34 +236,34 @@ if (mMediaPlayer != null) { stopPlayMusic(false); } mMediaPlayer = new MediaPlayer(); mMediaPlayer.setVolume(volume,volume); mMediaPlayer = new SimpleExoPlayer.Builder(context).build(); mMediaPlayer.setVolume(volume); isPause = false; try { Log.e("mmp", "开始播放 path:" + filePath); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.setDataSource(context, Uri.parse(filePath)); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { MediaItem mediaItem = MediaItem.fromUri(Uri.parse(filePath)); mMediaPlayer.setMediaItem(mediaItem); mMediaPlayer.prepare(); mMediaPlayer.play(); mMediaPlayer.addListener(new Player.Listener(){ @Override public void onPrepared(MediaPlayer mp) { // 装载完毕回调 mMediaPlayer.start(); if (audioStatusUpdateListener != null){ audioStatusUpdateListener.onGetDuration(mMediaPlayer.getDuration()); audioStatusUpdateListener.onStartPlay(); } public void onPlayerError(PlaybackException error) { Log.e("mmp","播放错误:"+error.getMessage()); } }); mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { stopPlayMusic(true); // baseEvent.setMsg(filePath); // EventBus.getDefault().post(baseEvent); public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { if (playbackState == Player.STATE_BUFFERING) Log.e("mmp","缓冲中...STATE_BUFFERING"); else if (playbackState == Player.STATE_READY){ Log.e("mmp","缓冲完成,音频准备就绪:STATE_READY"); } else if (playbackState == Player.STATE_ENDED){ Log.e("mmp","播放完成:STATE_ENDED"); stopPlayMusic(true); } else if (playbackState == Player.STATE_IDLE){ Log.e("mmp","播放器空闲:STATE_IDLE"); } } }); } catch (Exception e) { @@ -276,34 +281,16 @@ if (mMediaPlayer != null) { stopPlayMusic(false); } mMediaPlayer = new MediaPlayer(); mMediaPlayer.setVolume(volume,volume); mMediaPlayer = new SimpleExoPlayer.Builder(context).build(); mMediaPlayer.setVolume(volume); isPause = false; try { Log.e("mmp", "循环播放 path:" + filePath); mMediaPlayer.setDataSource(context, Uri.parse(filePath)); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { // 装载完毕回调 mMediaPlayer.start(); if (audioStatusUpdateListener != null) audioStatusUpdateListener.onStartPlay(); } }); mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // Log.e("mmp", "播放完成 从新循环 path:" + filePath); mMediaPlayer.start(); if (isPause){ // Log.e("mmp", "循环播放异步暂停"); mMediaPlayer.pause(); } } }); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(filePath)); mMediaPlayer.setMediaItem(mediaItem); mMediaPlayer.prepare(); mMediaPlayer.setRepeatMode(Player.REPEAT_MODE_ONE); mMediaPlayer.play(); } catch (Exception e) { e.printStackTrace(); } @@ -318,7 +305,7 @@ public void resume(){ if (mMediaPlayer != null) { mMediaPlayer.start(); mMediaPlayer.play(); isPause = false; } } @@ -332,11 +319,11 @@ public void setVolume(float volume){ this.volume = volume; if (mMediaPlayer!=null){ mMediaPlayer.setVolume(volume,volume); mMediaPlayer.setVolume(volume); } } public int getCurrentPosition(){ public long getCurrentPosition(){ if (mMediaPlayer!=null){ return mMediaPlayer.getCurrentPosition(); } @@ -369,23 +356,23 @@ * @param filePath * @return */ public int getMusicTime(Context context, String filePath) { if (mMediaPlayer != null) { stopPlayMusic(false); } mMediaPlayer = new MediaPlayer(); try { mMediaPlayer.setDataSource(context, Uri.parse(filePath)); mMediaPlayer.prepare(); int duration = mMediaPlayer.getDuration(); if (0 != duration) { mMediaPlayer.release(); return duration / 1000; } } catch (IOException e) { e.printStackTrace(); } return 0; } // public int getMusicTime(Context context, String filePath) { // if (mMediaPlayer != null) { // stopPlayMusic(false); // } // mMediaPlayer = new MediaPlayer(); // try { // mMediaPlayer.setDataSource(context, Uri.parse(filePath)); // mMediaPlayer.prepare(); // int duration = mMediaPlayer.getDuration(); // if (0 != duration) { // mMediaPlayer.release(); // return duration / 1000; // } // } catch (IOException e) { // e.printStackTrace(); // } // return 0; // } } app/src/main/res/drawable/bg_black_alpha50_bottom_10.xml
New file @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp"/> <solid android:color="#80000000"/> </shape> app/src/main/res/layout/activity_guide.xml
@@ -23,6 +23,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:paddingStart="10dp" android:fontFamily="@font/fly_flower_song" android:paddingTop="5dp" android:paddingBottom="5dp" android:paddingEnd="10dp"/> @@ -38,6 +39,7 @@ android:paddingVertical="14dp" android:textSize="24sp" android:paddingHorizontal="45dp" android:fontFamily="@font/fly_flower_song" android:textStyle="bold" android:background="@drawable/bg_white_line_alpha" android:text="个性化定制"/> @@ -48,6 +50,7 @@ app:layout_constraintEnd_toEndOf="parent" android:textSize="19sp" android:textColor="@color/white" android:fontFamily="@font/fly_flower_song" app:layout_constraintBottom_toTopOf="@id/tv_action" android:layout_marginBottom="20dp" android:text="愿它成为您心灵栖息的幸福家园"/> @@ -60,6 +63,7 @@ android:layout_marginTop="47dp" android:textSize="41sp" android:text="泉疗愈空间" android:fontFamily="@font/fly_flower_song" android:textColor="@color/white" android:id="@+id/tv_1"/> <TextView @@ -68,6 +72,7 @@ app:layout_constraintTop_toBottomOf="@id/tv_1" android:gravity="center" android:lineSpacingExtra="10dp" android:fontFamily="@font/fly_flower_song" android:text="亲爱的家人,温暖喜悦问候您\n我是心泉老师\n欢迎来到泉疗愈空间\n愿这一方空间为您带来\n放松 平和 宁静 与喜悦" android:textColor="@color/white" android:layout_marginTop="36dp" app/src/main/res/layout/activity_guide2.xml
@@ -14,6 +14,7 @@ android:text="亲爱的家人" android:textSize="38sp" android:id="@+id/tv_1" android:fontFamily="@font/fly_flower_song" android:textColor="@color/deepGreen"/> <TextView android:layout_width="wrap_content" @@ -24,6 +25,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="40dp" android:fontFamily="@font/fly_flower_song" android:textSize="22sp" android:textColor="#404040" android:lineSpacingExtra="10dp" @@ -40,6 +42,7 @@ android:textStyle="bold" android:textSize="20sp" android:textColor="#404040" android:fontFamily="@font/fly_flower_song" android:lineSpacingExtra="10dp" android:text="@string/tx_guide"/> <TextView @@ -52,6 +55,7 @@ android:padding="10dp" android:text="跳过" android:textStyle="bold" android:fontFamily="@font/fly_flower_song" android:id="@+id/tv_skip" android:textColor="@color/textColor" android:textSize="18sp"/> @@ -64,6 +68,7 @@ android:textSize="22sp" android:textColor="@color/white" android:textStyle="bold" android:fontFamily="@font/fly_flower_song" android:paddingVertical="14dp" android:paddingHorizontal="90dp" android:background="@drawable/bg_mid_green_30" app/src/main/res/layout/activity_qa.xml
@@ -15,6 +15,7 @@ android:textSize="19sp" android:text="跳过" android:id="@+id/tv_skip" android:fontFamily="@font/fly_flower_song" android:layout_marginBottom="50dp"/> <RadioGroup android:id="@+id/rg_qa" @@ -28,6 +29,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="星/星/知/我/心" android:fontFamily="@font/fly_flower_song" android:textColor="@color/textColor99" android:textSize="16sp" android:layout_marginTop="50dp" @@ -39,6 +41,7 @@ android:layout_marginTop="12dp" android:textSize="24sp" android:textColor="@color/deepGreen" android:fontFamily="@font/fly_flower_song" android:gravity="center" android:text="您是否内心纠结敏感多疑"/> <RadioButton @@ -50,6 +53,7 @@ android:textSize="18sp" android:gravity="center" android:paddingVertical="14dp" android:fontFamily="@font/fly_flower_song" android:textColor="@color/selector_green_white" android:layout_marginHorizontal="35dp" android:layout_marginTop="38dp" @@ -60,6 +64,7 @@ android:id="@+id/rb_no" android:text="否" android:button="@null" android:fontFamily="@font/fly_flower_song" android:textSize="18sp" android:gravity="center" android:paddingVertical="14dp" @@ -72,6 +77,7 @@ android:layout_height="wrap_content" android:id="@+id/rb_maybe" android:text="偶尔有" android:fontFamily="@font/fly_flower_song" android:button="@null" android:textSize="18sp" android:gravity="center" @@ -86,6 +92,7 @@ android:id="@+id/mask" android:layout_width="0dp" android:layout_height="0dp" android:fontFamily="@font/fly_flower_song" app:layout_constraintTop_toTopOf="@id/rg_qa" app:layout_constraintBottom_toBottomOf="@id/rg_qa" app:layout_constraintStart_toStartOf="@id/rg_qa" app/src/main/res/layout/activity_tag.xml
@@ -22,6 +22,7 @@ android:text="跳过" android:textSize="18sp" android:textColor="@color/textColor" android:fontFamily="@font/fly_flower_song" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="30dp" @@ -41,6 +42,7 @@ android:layout_marginEnd="20dp" app:layout_constraintWidth_percent="0.32" android:gravity="center" android:fontFamily="@font/fly_flower_song" android:background="@drawable/bg_deep_green_line_30" android:text="上一步"/> <TextView @@ -56,6 +58,7 @@ android:background="@drawable/bg_mid_green_30" android:textColor="@color/white" android:paddingVertical="12dp" android:fontFamily="@font/fly_flower_song" android:textSize="16sp" android:layout_marginBottom="20dp"/> <LinearLayout @@ -74,6 +77,7 @@ android:text="您在这方空间最想\n解决和收获的是哪方面问题" android:gravity="center" app:layout_constraintStart_toStartOf="parent" android:fontFamily="@font/fly_flower_song" app:layout_constraintEnd_toEndOf="parent" android:textColor="@color/darkGreen" app:layout_constraintTop_toTopOf="parent" app/src/main/res/layout/activity_voice_detail.xml
@@ -135,8 +135,9 @@ android:textColor="@color/white" android:textStyle="bold" android:textSize="14sp" android:lineSpacingExtra="8dp" android:lines="2" android:lineSpacingExtra="3dp" android:maxLines="3" android:ellipsize="end" android:text="聆听大自然,感受大自然的美,感受海浪带给我们的宁静。"/> <TextView android:layout_width="match_parent" @@ -150,7 +151,7 @@ android:textColor="@color/white" android:textSize="26sp" android:textStyle="bold" android:layout_marginBottom="20dp"/> android:layout_marginBottom="16dp"/> <ImageView android:id="@+id/iv_play" android:layout_width="60dp" app/src/main/res/layout/activity_wallet.xml
@@ -47,6 +47,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="26dp" android:textColor="@color/textColor" @@ -58,6 +59,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="@id/tv_2" app:layout_constraintEnd_toEndOf="@id/tv_2" android:textColor="@color/textColor" app:layout_constraintTop_toBottomOf="@id/tv_2" android:textSize="35sp" @@ -67,6 +69,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_3" android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/tv_balance" app:layout_constraintStart_toStartOf="@id/tv_balance" android:textSize="12sp" @@ -77,6 +80,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_4" android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/tv_balance" app:layout_constraintStart_toEndOf="@id/tv_3" app:layout_constraintEnd_toEndOf="parent" @@ -89,6 +93,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_recharge_money" android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/tv_3" app:layout_constraintStart_toStartOf="@id/tv_balance" android:textSize="20sp" @@ -100,6 +105,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_income" android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/tv_3" app:layout_constraintStart_toStartOf="@id/tv_4" android:textSize="20sp" @@ -115,7 +121,6 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> <TextView android:id="@+id/tv_action" android:layout_width="0dp" @@ -123,7 +128,9 @@ app:layout_constraintStart_toEndOf="@id/center" android:layout_height="49dp" android:layout_marginStart="6dp" android:visibility="invisible" android:layout_marginTop="20dp" app:layout_goneMarginTop="30dp" android:layout_marginEnd="13dp" app:layout_constraintBottom_toBottomOf="parent" android:text="充值" @@ -134,11 +141,12 @@ app:layout_constraintTop_toBottomOf="@id/tv_recharge_money"/> <TextView android:id="@+id/tv_withdraw" android:layout_width="0dp" android:layout_width="wrap_content" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/center" app:layout_constraintEnd_toEndOf="parent" android:layout_height="49dp" android:layout_marginEnd="6dp" android:paddingHorizontal="90dp" android:textColor="@color/textColor" android:gravity="center" android:background="@drawable/bg_white_25dp" app/src/main/res/layout/dialog_tip_tree.xml
@@ -17,7 +17,7 @@ android:layout_marginTop="24dp" android:layout_marginEnd="14dp" android:gravity="center" android:text="心泉之树" android:text="生命之树" android:textColor="@color/colorPrimary" android:textSize="18sp" android:textStyle="bold" @@ -31,7 +31,7 @@ android:lineSpacingExtra="10dp" android:minHeight="100dp" android:gravity="center_vertical" android:text="亲爱的家人,感谢您用心的交流。\n现在,您心灵之树的种子已经植入这片沃土,请以农夫的心态用心浇灌,不久的将来,将会长成苍天大树,结出丰硕的果实。加油哦!" android:text="亲爱的家人,生命之树的种子已植入这片沃土,请以农夫的心态用心浇灌,为你加油哦。" android:textColor="@color/textColor" android:textSize="14sp" app:layout_constraintTop_toBottomOf="@id/tv_title" /> app/src/main/res/layout/fragment_tree.xml
@@ -50,14 +50,6 @@ android:id="@+id/iv_sunshine" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/iv_water_anim" android:layout_marginTop="110dp" android:layout_marginEnd="50dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"/> <TextView android:layout_width="wrap_content" @@ -164,6 +156,16 @@ android:paddingBottom="150dp" app:layout_constraintBottom_toBottomOf="@id/player"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/iv_water_anim" android:layout_marginEnd="30dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginBottom="200dp" app:layout_constraintBottom_toBottomOf="@id/iv_tree"/> <TextView android:layout_width="164dp" android:layout_height="wrap_content" app/src/main/res/layout/item_banner_card.xml
@@ -4,17 +4,19 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <com.facebook.drawee.view.SimpleDraweeView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_width="0dp" android:layout_height="0dp" android:id="@+id/iv_bg" app:roundedCornerRadius="25dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="148:213" app:placeholderImage="@color/page_bg" app:actualImageScaleType="centerCrop"/> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_width="0dp" app:layout_constraintStart_toStartOf="@id/iv_bg" app:layout_constraintEnd_toEndOf="@id/iv_bg" android:layout_height="wrap_content" app/src/main/res/layout/item_course_grid.xml
@@ -23,12 +23,12 @@ app:layout_constraintEnd_toEndOf="@id/iv_bg" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="@id/iv_bg" android:background="@drawable/bg_white_alpha50_bottom_10"> android:background="@drawable/bg_black_alpha50_bottom_10"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="17dp" android:layout_marginTop="15dp" android:layout_marginHorizontal="16dp" android:text="缓解压力" android:textSize="18sp" @@ -47,7 +47,7 @@ android:singleLine="true" android:ellipsize="end" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="17dp" android:layout_marginBottom="15dp" android:text="缓解压力" android:textSize="11sp" android:textColor="@color/white" app/src/main/res/layout/item_home_list.xml
@@ -89,7 +89,7 @@ android:id="@+id/banner_landscape"/> <com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="214dp" android:layout_height="224dp" android:visibility="gone" app:banner_auto_loop="false" app:banner_infinite_loop="false" app/src/main/res/layout/item_voice_grid.xml
@@ -22,7 +22,7 @@ app:layout_constraintEnd_toEndOf="@id/iv_bg" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="@id/iv_bg" android:background="@drawable/bg_white_alpha50_bottom_25"> android:background="@drawable/bg_black_alpha50_bottom_25"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content"