1 文件已重命名
20个文件已删除
36个文件已修改
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | buildTypes { |
| | | release { |
| | | minifyEnabled false |
| | |
| | | </queries> |
| | | |
| | | <application |
| | | android:name=".JkApplication" |
| | | android:name=".XQApplication" |
| | | android:allowBackup="true" |
| | | android:icon="@mipmap/ic_launcher" |
| | | android:label="@string/app_name" |
| | |
| | | thinkHandler?.removeMessages(0) |
| | | cl_player.gone() |
| | | (fragments[0] as HomeFragment).refreshTodayPlayingState() //对比当前音频是否是每日疗愈 |
| | | if (JkApplication.isForeground){ |
| | | if (XQApplication.isForeground){ |
| | | if (isBGMChanged) //BGM已经被切换,重新播放新BGM |
| | | startBgm() |
| | | else //BGM未改变,直接续播 |
File was renamed from app/src/main/java/com/sinata/xqmuse/JkApplication.kt |
| | |
| | | import xyz.doikki.videoplayer.player.VideoViewManager |
| | | |
| | | |
| | | class JkApplication :BaseApplication(), Application.ActivityLifecycleCallbacks { |
| | | class XQApplication :BaseApplication(), Application.ActivityLifecycleCallbacks { |
| | | override fun getSPName() = "JKSp" |
| | | |
| | | private val activities = ArrayList<Activity>() |
| | |
| | | UMConfigure.init(this, Const.UMENG_KEY, "", UMConfigure.DEVICE_TYPE_PHONE, "") |
| | | UMConfigure.setLogEnabled(true) |
| | | PlatformConfig.setWeixin(Const.WX_APP_ID, Const.WX_SECRET) |
| | | PlatformConfig.setQQZone(Const.QQ_APP_ID, Const.QQ_SECRET) |
| | | initPlayer() |
| | | } |
| | | |
| | |
| | | var lat:Double? = null |
| | | var lon:Double? = null |
| | | var isForeground = true |
| | | var appContext: JkApplication? = null |
| | | fun getInstance(): JkApplication? { |
| | | var appContext: XQApplication? = null |
| | | fun getInstance(): XQApplication? { |
| | | if (appContext == null) { |
| | | appContext = JkApplication() |
| | | appContext = XQApplication() |
| | | } |
| | | return appContext |
| | | } |
| | |
| | | setMonth(true) |
| | | setDay(true) |
| | | |
| | | wv_1.setOnWheelViewListener { _, item -> |
| | | wv_1.setOnWheelViewListener { _, _ -> |
| | | setMonth() |
| | | setDay() |
| | | } |
| | |
| | | setYear() |
| | | setMonth(true) |
| | | |
| | | wv_1.setOnWheelViewListener { _, item -> |
| | | wv_1.setOnWheelViewListener { _, _ -> |
| | | setMonth(false) |
| | | } |
| | | |
| | |
| | | import cn.sinata.xldutils.fragment.BaseFragment |
| | | import cn.sinata.xldutils.rxutils.ResultDataSubscriber |
| | | import cn.sinata.xldutils.utils.SPUtils |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.ui.login.LoginActivity |
| | | import com.sinata.xqmuse.utils.Const |
| | | import io.reactivex.Flowable |
| | |
| | | iv_silent.setOnClickListener { |
| | | sb_voice.progress = 0 |
| | | } |
| | | banner_landscape.setOnBannerListener { data, position -> |
| | | banner_landscape.setOnBannerListener { _, position -> |
| | | cardBannerAdapter.playPosition = position |
| | | cardBannerAdapter.notifyDataSetChanged() |
| | | player.startPlayMusic(this,list[position].audioFile) |
| | |
| | | import cn.sinata.xldutils.visible |
| | | import com.github.zackratos.ultimatebar.UltimateBar |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.XQApplication |
| | | import com.sinata.xqmuse.dialog.TipDialog |
| | | import com.sinata.xqmuse.network.Apis |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.request |
| | | import com.sinata.xqmuse.ui.login.LoginActivity |
| | |
| | | HttpManager.cancellation().request(this@H5Activity){ _, _-> |
| | | myToast("注销成功") |
| | | SPUtils.instance().remove(Const.User.TOKEN).apply() |
| | | (application as JkApplication).exit() |
| | | (application as XQApplication).exit() |
| | | startActivity<LoginActivity>() |
| | | } |
| | | } |
| | |
| | | import com.amap.apis.utils.core.api.AMapUtilCoreApi |
| | | import com.sinata.xqmuse.MainActivity |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.XQApplication |
| | | import com.sinata.xqmuse.dialog.UserRuleDialog |
| | | import com.sinata.xqmuse.network.Apis |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.request |
| | | import com.sinata.xqmuse.ui.guide.GuideActivity |
| | | import com.sinata.xqmuse.utils.Const |
| | | import com.umeng.commonsdk.UMConfigure |
| | | import kotlinx.android.synthetic.main.activity_splash.* |
| | |
| | | */ |
| | | private fun startNext(){ |
| | | UMConfigure.preInit(this, Const.UMENG_KEY, "") |
| | | (application as JkApplication).initSdk() |
| | | (application as XQApplication).initSdk() |
| | | if (SPUtils.instance().getBoolean(Const.FIRST_LAUNCH,true)){ //第一次启动显示引导页 |
| | | SPUtils.instance().put(Const.FIRST_LAUNCH,false).apply() |
| | | startActivity<MainActivity>("code" to code,"isFirst" to true) |
| | |
| | | import cn.sinata.xldutils.activity.TitleActivity |
| | | import com.github.zackratos.ultimatebar.UltimateBar |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.XQApplication |
| | | import org.jetbrains.anko.backgroundColorResource |
| | | import org.jetbrains.anko.backgroundResource |
| | | |
| | | abstract class TransparentStatusBarActivity : TitleActivity() { |
| | | protected val app by lazy { |
| | | application as JkApplication |
| | | application as XQApplication |
| | | } |
| | | |
| | | override fun onCreate(savedInstanceState: Bundle?) { |
| | |
| | | scroll2Position(2) |
| | | checkTab(2) |
| | | } |
| | | scrollView.setOnScrollChangeListener { v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int -> |
| | | scrollView.setOnScrollChangeListener { _: NestedScrollView?, _: Int, scrollY: Int, _: Int, _: Int -> |
| | | if (!scrollByTab) |
| | | when { |
| | | scrollY>=tv_2.top -> checkTab(2) |
| | |
| | | else -> checkTab(0) |
| | | } |
| | | } |
| | | chapterAdapter.setOnItemClickListener { view, position -> |
| | | chapterAdapter.setOnItemClickListener { _, position -> |
| | | if (tv_action.text == "立即学习") |
| | | startActivity<StudyActivity>("id" to data?.list?.get(position)?.id,"index" to position) |
| | | else |
| | | getData(false) |
| | | } |
| | | courseAdapter.setOnItemClickListener { view, position -> |
| | | courseAdapter.setOnItemClickListener { _, position -> |
| | | showDialog() |
| | | HttpManager.getPayCourseInfoById(courseList[position].id?:"").request(this,success = { _, data-> |
| | | dismissDialog() |
| | |
| | | private val freeAdapter = CourseGridAdapter(freeList) |
| | | |
| | | override fun initClick() { |
| | | myAdapter.setOnItemClickListener { view, position -> |
| | | myAdapter.setOnItemClickListener { _, position -> |
| | | showDialog() |
| | | HttpManager.getPayCourseInfoById(myList[position].id).request(this,success = { _, data-> |
| | | dismissDialog() |
| | |
| | | dismissDialog() |
| | | } |
| | | } |
| | | freeAdapter.setOnItemClickListener { view, position -> |
| | | freeAdapter.setOnItemClickListener { _, position -> |
| | | showDialog() |
| | | HttpManager.getPayCourseInfoById(freeList[position].id).request(this,success = { _, data-> |
| | | dismissDialog() |
| | |
| | | import cn.sinata.xldutils.utils.SPUtils |
| | | import com.amap.api.location.AMapLocationClient |
| | | import com.amap.api.location.AMapLocationClientOption |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.XQApplication |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.dialog.TipDialog |
| | | import com.sinata.xqmuse.network.HttpManager |
| | |
| | | locationClient = null |
| | | } |
| | | locationClient?.setLocationListener { |
| | | JkApplication.lat = it.latitude |
| | | JkApplication.lon = it.longitude |
| | | XQApplication.lat = it.latitude |
| | | XQApplication.lon = it.longitude |
| | | refreshLayout.autoRefresh() |
| | | } |
| | | val option = AMapLocationClientOption() |
| | |
| | | } |
| | | |
| | | private fun getData(){ |
| | | HttpManager.getMeditationPage(page, search, JkApplication.lat, JkApplication.lon).requestByF( |
| | | HttpManager.getMeditationPage(page, search, XQApplication.lat, XQApplication.lon).requestByF( |
| | | this, |
| | | success = { _, data -> |
| | | if (page == 1) |
| | |
| | | |
| | | import android.view.inputmethod.EditorInfo |
| | | import androidx.recyclerview.widget.GridLayoutManager |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.XQApplication |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.entity.Place |
| | |
| | | } |
| | | |
| | | private fun getData(){ |
| | | HttpManager.getMeditationPage(page,search, JkApplication.lat, JkApplication.lon).request(this,success = { _, data-> |
| | | HttpManager.getMeditationPage(page,search, XQApplication.lat, XQApplication.lon).request(this,success = { _, data-> |
| | | if (page == 1) |
| | | list.clear() |
| | | list.addAll(data?.list?: arrayListOf()) |
| | |
| | | import android.app.Activity |
| | | import android.content.Intent |
| | | import android.os.CountDownTimer |
| | | import android.text.method.HideReturnsTransformationMethod |
| | | import android.text.method.PasswordTransformationMethod |
| | | import cn.sinata.xldutils.gone |
| | | import cn.sinata.xldutils.utils.* |
| | | import cn.sinata.xldutils.visible |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.dialog.LoginRuleDialog |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.request |
| | |
| | | showDialog() |
| | | val openid = p2?.get("openid") |
| | | val nickname = p2?.get("name") |
| | | HttpManager.bindVx(openid?:"",nickname?:"").request(this,success = { _, data -> |
| | | HttpManager.bindVx(openid?:"",nickname?:"").request(this,success = { _, _ -> |
| | | toast("绑定成功") |
| | | tv_wx.text = nickname |
| | | this.data?.wxOpenId = openid |
| | |
| | | import cn.sinata.xldutils.utils.SPUtils |
| | | import cn.sinata.xldutils.utils.isValidPhone |
| | | import cn.sinata.xldutils.utils.myToast |
| | | import com.sinata.xqmuse.JkApplication |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.request |
| | | import com.sinata.xqmuse.ui.TransparentStatusBarActivity |
| | | import com.sinata.xqmuse.ui.login.LoginActivity |
| | | import com.sinata.xqmuse.utils.Const |
| | | import kotlinx.android.synthetic.main.activity_change_phone.* |
| | | |
| | | import org.jetbrains.anko.sdk27.coroutines.onClick |
| | | import org.jetbrains.anko.startActivity |
| | | import org.jetbrains.anko.support.v4.startActivity |
| | | |
| | | class ChangePhoneActivity:TransparentStatusBarActivity() { |
| | | override fun setContentView() = R.layout.activity_change_phone |
| | |
| | | getData() |
| | | } |
| | | refreshLayout.autoRefresh() |
| | | adapter.setOnItemClickListener { view, position -> |
| | | adapter.setOnItemClickListener { _, position -> |
| | | val courseBean = list[position] |
| | | if (adapter.isOrder&&courseBean.paymentStatus == 1) { |
| | | HttpManager.payOrder(courseBean.id).requestByF(this){_,data-> |
| | |
| | | private val adapter = MsgAdapter(list) |
| | | |
| | | override fun initClick() { |
| | | adapter.setOnItemClickListener { view, position -> |
| | | adapter.setOnItemClickListener { _, position -> |
| | | val msg = list[position] |
| | | HttpManager.noticeDetail(msg.id).request(this){_,data-> |
| | | msg.readStatus = 2 |
| | |
| | | HttpManager.getH5(type).requestByF(this){_,data-> |
| | | val sHead = |
| | | "<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>" |
| | | webView!!.loadDataWithBaseURL( |
| | | webView.loadDataWithBaseURL( |
| | | null, |
| | | sHead + data?.content, |
| | | "text/html", |
| | |
| | | private val adapter = QAAdapter(list) |
| | | |
| | | override fun initClick() { |
| | | adapter.setOnItemClickListener { view, position -> |
| | | adapter.setOnItemClickListener { _, position -> |
| | | startActivity<QaDetailActivity>("data" to list[position]) |
| | | } |
| | | } |
| | |
| | | HttpManager.getH5(LoginRuleDialog.TYPE_ABOUT).request(this){ _, data-> |
| | | data?.let { |
| | | startActivity<H5Activity>( |
| | | "title" to "关于泉", |
| | | "title" to "关于泉疗愈", |
| | | "url" to it.content, |
| | | "showClose" to false |
| | | ) |
| | |
| | | file.createNewFile() |
| | | } |
| | | val fors = FileOutputStream(file) |
| | | layout_share.drawToBitmap()?.compress(Bitmap.CompressFormat.PNG, 0, fors) |
| | | layout_share.drawToBitmap().compress(Bitmap.CompressFormat.PNG, 0, fors) |
| | | fors.flush() |
| | | fors.close() |
| | | MediaStore.Images.Media.insertImage(this@ShareActivity.contentResolver, file.absolutePath, copyPath, null); |
| | | toast("保存成功") |
| | | } catch (e: Exception) { |
| | | Log.e(Const.Tag,e?.message?:"") |
| | | Log.e(Const.Tag, e.message ?:"") |
| | | toast("保存失败") |
| | | } |
| | | } |
| | |
| | | |
| | | override fun initClick() { |
| | | iv_back.setOnClickListener { finish() } |
| | | adapter.setOnItemClickListener { view, position -> |
| | | adapter.setOnItemClickListener { _, position -> |
| | | adapter.checked = position |
| | | adapter.notifyDataSetChanged() |
| | | } |
| | |
| | | getData() |
| | | } |
| | | refreshLayout.autoRefresh() |
| | | adapter.setOnItemClickListener { view, position -> |
| | | adapter.setOnItemClickListener { _, position -> |
| | | startActivity<BalanceChangeDetailActivity>("id" to list[position].id) |
| | | } |
| | | } |
| | |
| | | tipDialog.setCallback(object : TipDialog.OnClickCallback { |
| | | override fun onOk() { |
| | | HttpManager.deleteBank(list[position].id ?: "") |
| | | .request(this@WithdrawActivity) { _, data -> |
| | | .request(this@WithdrawActivity) { _, _ -> |
| | | list.removeAt(position) |
| | | adapter.notifyDataSetChanged() |
| | | } |
| | |
| | | private var code = "" |
| | | |
| | | override fun initClick() { |
| | | adapter.setOnItemClickListener { view, position -> |
| | | adapter.setOnItemClickListener { _, position -> |
| | | exchange(position) |
| | | } |
| | | } |
| | |
| | | const val UMENG_KEY = "6620bc0fcac2a664de1f77eb" |
| | | const val WX_APP_ID = "wx4b9c1d814c2902a3" |
| | | const val WX_SECRET = "60fed4b6f52603ba6769e1118b4a57ae" |
| | | const val QQ_APP_ID = "101912859" |
| | | const val QQ_SECRET = "692a092b65a6ec830fb62d1dc2270813" |
| | | |
| | | const val APP_KEY = "BT7NPhA0f775uzcUuftWjCE1TYZlWmHZ" //接口秘钥 |
| | | |
| | | const val FIRST_LAUNCH = "isFirst" |
| | | const val IS_PUSH = "isPush" |
| | |
| | | object User { |
| | | const val TOKEN = "token" |
| | | const val USER_ID = "userId" |
| | | const val APP_ID = "appid" |
| | | const val IS_AGREE = "isAgree" //是否同意用户协议和隐私协议 |
| | | const val IS_READ = "isRead" //是否阅读并同意过登录协议 |
| | | const val USER_HEAD = "userHead" |
| | | const val USER_NAME = "userName" |
| | | const val USER_PWD = "pwd" |
| | | const val USER_PHONE = "userPhone" |
| | | const val SEARCH_HIS_HOME = "SEARCH_HIS_HOME" |
| | | const val SEARCH_HIS_COURSE = "SEARCH_HIS_COURSE" |
| | |
| | | import com.bumptech.glide.load.resource.bitmap.CenterCrop; |
| | | import com.bumptech.glide.load.resource.bitmap.FitCenter; |
| | | import com.bumptech.glide.load.resource.bitmap.RoundedCorners; |
| | | import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; |
| | | import com.bumptech.glide.request.RequestListener; |
| | | import com.bumptech.glide.request.RequestOptions; |
| | | import com.bumptech.glide.request.target.Target; |
| | | import com.sinata.xqmuse.R; |
| | | import com.sinata.xqmuse.JkApplication; |
| | | import com.sinata.xqmuse.XQApplication; |
| | | |
| | | import java.util.concurrent.ExecutionException; |
| | | |
| | |
| | | .error(R.color.page_bg) |
| | | .placeholder(R.color.page_bg) |
| | | .diskCacheStrategy(diskCacheStrategy) |
| | | .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(DensityUtil.dip2px(JkApplication.Companion.getInstance(), num)))); |
| | | .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(DensityUtil.dip2px(XQApplication.Companion.getInstance(), num)))); |
| | | } |
| | | return chatcricleFoursUserHead; |
| | | } |
| | |
| | | .error(R.color.black) |
| | | .placeholder(R.color.black) |
| | | .diskCacheStrategy(diskCacheStrategy) |
| | | .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(DensityUtil.dip2px(JkApplication.Companion.getInstance(), num)))); |
| | | .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(DensityUtil.dip2px(XQApplication.Companion.getInstance(), num)))); |
| | | } |
| | | return chatcricleFoursUserHead; |
| | | } |
| | |
| | | android:id="@+id/tv_rule" |
| | | app:layout_constraintTop_toBottomOf="@id/cl_level" |
| | | android:layout_marginTop="23dp" |
| | | android:text="泉・疗愈 升级规则" |
| | | android:text="泉疗愈 升级规则" |
| | | android:textColor="@color/white" |
| | | android:textSize="14sp" |
| | | android:textStyle="bold" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | style="@style/style_form_text" |
| | | android:text="关于泉" |
| | | android:text="关于泉疗愈" |
| | | android:paddingHorizontal="12dp" |
| | | android:drawableEnd="@mipmap/more_black"/> |
| | | <View |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout 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:orientation="vertical" |
| | | android:background="@color/page_bg" |
| | |
| | | android:paddingHorizontal="25dp" |
| | | android:drawableStart="@mipmap/ic_search_black"/> |
| | | |
| | | |
| | | <com.scwang.smart.refresh.layout.SmartRefreshLayout |
| | | android:id="@+id/refreshLayout" |
| | | android:layout_width="match_parent" |
| | |
| | | <com.scwang.smart.refresh.header.ClassicsHeader |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" /> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | |
| | | app:layout_constraintEnd_toStartOf="@id/play" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | android:layout_marginTop="15dp" |
| | | android:layout_marginTop="7dp" |
| | | android:layout_marginStart="16dp" |
| | | android:layout_marginEnd="4dp" |
| | | android:text="缓解压力" |
| | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="5dp" |
| | | android:layout_marginTop="3dp" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_title" |
| | | app:layout_constraintStart_toStartOf="@id/tv_title" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | android:layout_marginBottom="17dp" |
| | | android:layout_marginBottom="9dp" |
| | | android:text="缓解压力" |
| | | android:textSize="6sp" |
| | | android:textColor="@color/white" |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | android:layout_marginTop="15dp" |
| | | android:layout_marginTop="7dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:text="缓解压力" |
| | | android:textSize="18sp" |
| | | android:textSize="16sp" |
| | | android:singleLine="true" |
| | | android:ellipsize="end" |
| | | android:textColor="@color/white" |
| | |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="5dp" |
| | | android:layout_marginTop="3dp" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_title" |
| | | app:layout_constraintStart_toStartOf="@id/tv_title" |
| | | app:layout_constraintEnd_toStartOf="@id/iv" |
| | |
| | | android:singleLine="true" |
| | | android:ellipsize="end" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | android:layout_marginBottom="15dp" |
| | | android:layout_marginBottom="8dp" |
| | | android:text="缓解压力" |
| | | android:textSize="11sp" |
| | | android:textColor="@color/white" |