Commit 4397ceb4 authored by maxiaoliang's avatar maxiaoliang

提交代码

parent 254dad2d
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
......
package com.ym.game
import android.os.Bundle
import android.util.Log
import com.game.luckyfarm.UnityPlayerActivity
import com.tencent.ep.commonbase.api.AppContext.context
import com.ym.game.module.HomeInfoEntity
import com.ym.game.module.LandListEntity
import com.ym.game.module.OrderListEntity
import com.ym.game.module.StatusEntity
import com.ym.game.net.GameApiClient
import com.ym.game.view.SiginDropsPopupwindow
import com.ym.game.view.TurntableDialog
import com.ym.library.net.BaseObserver
import com.ym.library.net.RxSchedulers
import com.ym.library.rxbus.RxBusConstant
import com.ym.library.rxbus.RxBusUtil
import com.ym.library.utils.Utils
/**
......@@ -17,11 +23,22 @@ import com.ym.library.utils.Utils
* @detail :
*/
class GameActivity : UnityPlayerActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
TurntableDialog.initTurntableAnim()
// TurntableDialog.showTurntable(this)
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_TURNTABLE_LOTTERYED)
if (Utils.isFastClick()) {
}
}
/**
* 跳转提现页
*/
fun gotoWithdrawPage() {
Log.d("wxw", "跳转提现页")
}
/**
......@@ -36,6 +53,14 @@ class GameActivity : UnityPlayerActivity() {
*/
fun oneveryDayWelfareClick() {
Log.d("wxw", "每日福利")
this.runOnUiThread(object : Runnable {
override fun run() {
SiginDropsPopupwindow().init(this@GameActivity)
}
})
}
/**
......@@ -53,7 +78,7 @@ class GameActivity : UnityPlayerActivity() {
GameApiClient.gameApi.getGameHomeInfo().compose(RxSchedulers.observableIO2Main())
.subscribe(object : BaseObserver<HomeInfoEntity>() {
override fun onSuccess(result: HomeInfoEntity?) {
Log.d("wxw", "获取首页信息" +Utils.obj2Str(result))
Log.d("wxw", "获取首页信息" + Utils.obj2Str(result))
callback?.onHomeSuccess(true, Utils.obj2Str(result))
}
......
package com.ym.game.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.ym.game.module.SinginEntity
import com.ym.library.base.BaseRecyclerAdapter
import com.ym.quwei.guessing.R
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
*/
class SigninDropsAdapter :
BaseRecyclerAdapter<SinginEntity.SignInfoListEntity, SigninDropsAdapter.SigninDropsHolder> {
private var mContext: Context? = null
constructor(content: Context?) : super() {
mContext = content
}
override fun getItemCount(): Int {
return mList.size
}
override fun onBindViewHolder(holder: SigninDropsHolder, position: Int) {
if (mList.size > 0) {
val data = mList[position]
holder.tvDay.text = "第${data.id}天"
if(data.status == 1) {
holder.tvStatus.text = "已领取"
holder.ivStatus.setImageResource(R.mipmap.icon_main_popup_singnin_received)
} else {
holder.tvStatus.text = "+${data.awardNum}"
holder.ivStatus.setImageResource(R.mipmap.icon_main_popup_singnin_receiv)
}
if (data.id == 7) {
holder.ivStatus.setImageResource(R.mipmap.icon_main_popup_singnin_receiv_treasure_chest)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SigninDropsHolder {
return SigninDropsHolder(
LayoutInflater.from(mContext).inflate(R.layout.item_signin_drops, parent, false)
)
}
inner class SigninDropsHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val ivStatus: ImageView = itemView.findViewById(R.id.iv_item_signin_status)
val tvDay: TextView = itemView.findViewById(R.id.tv_item_signin_day)
val tvStatus: TextView = itemView.findViewById(R.id.tv_item_signin_status)
}
}
\ No newline at end of file
package com.ym.game.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.ProgressBar
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.ym.game.module.WateringTaskEntity
import com.ym.game.view.MainDialog
import com.ym.library.base.BaseRecyclerAdapter
import com.ym.library.net.BaseObserver
import com.ym.library.net.RxSchedulers
import com.ym.library.rxbus.RxBusConstant
import com.ym.library.rxbus.RxBusUtil
import com.ym.library.utils.LogUtils
import com.ym.library.utils.Utils
import com.ym.module.guesssong.listener.OnRecycleItemClickListener
import com.ym.quwei.guessing.R
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
*/
class WateringTaskAdpater :
BaseRecyclerAdapter<WateringTaskEntity, WateringTaskAdpater.WateringTaskHolder> {
private var type: Int = -1
private var mContext: Context? = null
private val listener: OnRecycleItemClickListener<WateringTaskEntity>
constructor(
content: Context?,
type: Int,
listener: OnRecycleItemClickListener<WateringTaskEntity>
) : super() {
this.listener = listener
mContext = content
this.type = type
}
override fun getItemCount(): Int {
return mList.size
}
override fun onBindViewHolder(holder: WateringTaskHolder, position: Int) {
if (mList.size > 0) {
val data = mList[position]
holder.tvTitle.text = data.title
holder.tvCount.text = "+${data.awardNum}"
if (data.subTitle != null) {
holder.btnProgess.visibility = View.GONE
holder.tvProgess.text = data.subTitle
} else {
holder.btnProgess.visibility = View.VISIBLE
holder.btnProgess.max = data.targetNum
holder.btnProgess.setProgress(data.completedNum)
holder.tvProgess.text = "${data.completedNum}/${data.targetNum}"
}
holder.ivStatus.setOnClickListener {
if (Utils.isFastClick()) {
when (data.status) {
0 -> listener.onItemClick(it, position, mList[position])
1 -> Utils.showToast(mContext, "您已经领过了哦~")
//领取
2 -> getDripTaskReceive(type, data)
}
}
}
// 0未完成 1已领取 2可领取
when (data.status) {
0 -> holder.ivStatus.setImageResource(R.drawable.icon_mian_popup_complete)
1 -> holder.ivStatus.setImageResource(R.drawable.icon_main_popup_receiveed)
2 -> holder.ivStatus.setImageResource(R.drawable.icon_main_popup_receive)
}
val layoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
if (position == mList.size - 1) {
layoutParams.setMargins(0, 0, 0, Utils.dip2px(20f))
} else {
layoutParams.setMargins(0, 0, 0, Utils.dip2px(8f))
}
holder.layoutRoot.layoutParams = layoutParams
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WateringTaskHolder {
return WateringTaskHolder(
LayoutInflater.from(mContext).inflate(R.layout.item_watering_task, parent, false)
)
}
inner class WateringTaskHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val tvTitle: TextView = itemView.findViewById(R.id.tv_watering_item_title)
// val btnProgess: ProgressButton = itemView.findViewById(R.id.progess_watering_item)
val btnProgess: ProgressBar = itemView.findViewById(R.id.progess_watering_item)
val tvProgess: TextView = itemView.findViewById(R.id.tv_watering_item_progess)
val tvCount: TextView = itemView.findViewById(R.id.tv_watering_item_count)
val ivStatus: ImageView = itemView.findViewById(R.id.tv_watering_item_status)
val layoutRoot: RelativeLayout = itemView.findViewById(R.id.layout_watering_root)
}
// 领取水滴 type:1每日领水 2高额领水
private fun getDripTaskReceive(type: Int, data: WateringTaskEntity) {
// OrchardApiClient.orchard.getDripTaskReceive(data.id, type).compose(
// RxSchedulers.observableIO2Main()
// ).subscribe(object : BaseObserver<Any>() {
// override fun onSuccess(result: Any?) {
// if (result != null) {
// LogUtils.i("WateringTaskAdpater", "水滴领取" + result)
// var adType = ""
//// if (type == 1) {
//// RxBusUtil.getDefault()
//// .send(RxBusConstant.RX_MAIN_WATER_DROP_UPDATE)
//// adType = "每日"
//// } else if (type == 2) {
//// RxBusUtil.getDefault()
//// .send(RxBusConstant.RX_MAIN_HIGH_WATER_DROP_UPDATE)
//// adType = "高额"
//// }
// // MainDialog.showgetWaterDrop(mContext, 1,adType, data.awardNum)
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_UPDATE_HOME_INFO)
// }
// }
//
// override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {}
// })
}
}
\ No newline at end of file
package com.ym.game.contract
import com.ym.game.module.TurntableEntity
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/11
*/
class TurntableContract {
interface View {
fun turntableListResult(data: TurntableEntity)
fun turntableLotteryResult(data: TurntableEntity.Turntable)
}
interface Presenter {
fun getTurntableList()
fun getTurntableLotteryResult()
}
}
\ No newline at end of file
package com.ym.game.contract
import com.ym.game.module.SinginEntity
import com.ym.game.module.WateringTaskEntity
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
*/
class WateringRewardContract {
interface View {
fun rchardDailyTaskResult(datas: List<WateringTaskEntity>)
fun rchardSignTaskResult(datas: SinginEntity)
}
interface Presenter {
fun getRrchardDailyTask()
fun getOrchardSignTask()
}
}
\ No newline at end of file
package com.ym.game.module
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
*/
class SinginEntity {
var isPop: Int = 0 // 1弹领取水滴弹窗
var totalNum: Int = 0 //连续签到水滴数量
var awardNum: Int = 0 //每日首次签到水滴数量
var signInfoList: MutableList<SignInfoListEntity> = ArrayList()
class SignInfoListEntity {
var id = 0
var awardNum: Int = 0 // 奖励数量
var awardType: Int = 0 //("奖励类型 1 金币 2 红包 3 水滴")
var isToday: Int = -1
var status: Int = -1
}
}
\ No newline at end of file
package com.ym.game.module
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/10
*/
class TurntableEntity {
var turntables: MutableList<Turntable> = ArrayList()
var lotteryNum: Int? = 0
var countDownSecond: Int? = 0
var showVideo: Int? = 0
class Turntable {
var id = 0
var name: String? = ""
var awardNum: Int? = 0
var awardType: Int? = 0
var lotteryNum: Int? = 0
var countDownSecond: Int? = 0
var showVideo: Int? = 0
}
}
\ No newline at end of file
package com.ym.game.module
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
*/
class WateringTaskEntity {
var id = 0
var title: String = ""
var subTitle: String = ""
var targetNum: Int = 0 // 目标数量
var completedNum: Int = 0 // 已完成数量
var awardType: Int = 0 //("奖励类型 1 金币 2 红包 3 水滴")
var awardNum: Int = 0 // 奖励数量
var status: Int = 0 // "完成状态 0未完成 1已完成 2可领取" 领取后 --> 明日再来
var cashStr: String = "" //提现机会
var reference: Int = -1 //跳转页面 1转盘 2高额水滴任务 3首页 4激励视频 直客任务链接"
var url: String = "" //直客任务链接"
var ad: String = "" //直客任务链接"
var description: String = "" //高额任务副标题
var coins: Int = 0 //高额任务奖励数量
}
\ No newline at end of file
package com.ym.game.net
import com.ym.game.module.HomeInfoEntity
import com.ym.game.module.LandListEntity
import com.ym.game.module.OrderListEntity
import com.ym.game.module.StatusEntity
import com.ym.game.module.*
import com.ym.library.net.NetConfig
import com.ym.library.net.Response
import io.reactivex.Observable
......@@ -52,7 +49,10 @@ interface IGameApi {
* @return
*/
@POST(NetConfig.Game.URL_GAME_UNLOCK_LAND)
fun getUnlockLand(@Query("id") id: Int, @Query("type") type: Int): Observable<Response<StatusEntity>>
fun getUnlockLand(
@Query("id") id: Int,
@Query("type") type: Int
): Observable<Response<StatusEntity>>
/**
* 加速剂
......@@ -62,6 +62,7 @@ interface IGameApi {
*/
@POST(NetConfig.Game.URL_GAME_USE_ACCELERATORS)
fun getUseAccelerators(@Query("id") id: Int): Observable<Response<StatusEntity>>
/**
* 金币购买种子
* @param
......@@ -70,6 +71,7 @@ interface IGameApi {
*/
@POST(NetConfig.Game.URL_GAME_BUY_SEED)
fun getBuySeed(@Query("id") id: Int): Observable<Response<StatusEntity>>
/**
* 仓库
* @param id 仓库列表id
......@@ -88,5 +90,20 @@ interface IGameApi {
@GET(NetConfig.Game.URL_GAME_ORDER_DATA)
fun getOrderData(): Observable<Response<OrderListEntity>>
/*
转盘列表
*/
@GET(NetConfig.Game.URL_GAME_TURNTABLE_LIST)
fun getTurntableList(): Observable<Response<TurntableEntity>>
//抽奖结果
@POST(NetConfig.Game.URL_GAME_FARM_LOTTERY)
fun getLotteryResult(): Observable<Response<TurntableEntity.Turntable>>
//签到列表
@GET(NetConfig.Game.URL_GAME_FARM_LIST)
fun getOrchardSignTask(): Observable<Response<SinginEntity>>
//
@GET(NetConfig.Game.URL_GAME_FARM_DAILY_TASK)
fun getOrchardDailyTask(): Observable<Response<List<WateringTaskEntity>>>
}
\ No newline at end of file
package com.ym.game.presenter
import com.ym.game.contract.TurntableContract
import com.ym.game.module.TurntableEntity
import com.ym.game.net.GameApiClient
import com.ym.library.net.BaseObserver
import com.ym.library.net.RxSchedulers
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/11
*/
class TurntablePresenter : TurntableContract.Presenter {
var mView: TurntableContract.View
constructor(mView: TurntableContract.View) {
this.mView = mView
}
/**
* 转盘列表
*/
override fun getTurntableList() {
GameApiClient.gameApi.getTurntableList().compose(
RxSchedulers.observableIO2Main()
).subscribe(object : BaseObserver<TurntableEntity>() {
override fun onSuccess(result: TurntableEntity?) {
if (result != null) {
mView?.turntableListResult(result)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {}
})
}
/**
* 转盘抽奖结果
*/
override fun getTurntableLotteryResult() {
GameApiClient.gameApi.getLotteryResult().compose(
RxSchedulers.observableIO2Main()
).subscribe(object : BaseObserver<TurntableEntity.Turntable>() {
override fun onSuccess(result: TurntableEntity.Turntable?) {
if (result != null) {
mView?.turntableLotteryResult(result)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {}
})
}
}
\ No newline at end of file
package com.ym.game.presenter
import com.ym.game.contract.WateringRewardContract
import com.ym.game.module.SinginEntity
import com.ym.game.module.WateringTaskEntity
import com.ym.game.net.GameApiClient
import com.ym.library.net.BaseObserver
import com.ym.library.net.RxSchedulers
import com.ym.library.utils.LogUtils
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
*/
class WateringRewardPresenter : WateringRewardContract.Presenter {
var mView: WateringRewardContract.View
constructor(mView: WateringRewardContract.View) {
this.mView = mView
}
//每日水滴任务
override fun getRrchardDailyTask() {
GameApiClient.gameApi.getOrchardDailyTask().compose(
RxSchedulers.observableIO2Main()
).subscribe(object : BaseObserver<List<WateringTaskEntity>>() {
override fun onSuccess(result: List<WateringTaskEntity>?) {
if (result != null) {
mView?.rchardDailyTaskResult(result)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {}
})
}
//签到
override fun getOrchardSignTask() {
GameApiClient.gameApi.getOrchardSignTask().compose(
RxSchedulers.observableIO2Main()
).subscribe(object : BaseObserver<SinginEntity>() {
override fun onSuccess(result: SinginEntity?) {
if (result != null) {
mView?.rchardSignTaskResult(result)
}
}
override fun onFailure(e: Throwable?, code: String?, errorMsg: String?) {
LogUtils.i("Popupwindow",errorMsg)
}
})
}
}
\ No newline at end of file
package com.ym.game.view
import android.app.Dialog
import android.content.Context
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import com.ym.library.AppliContext
import com.ym.library.utils.PhoneUtils
object MainDialog {
fun showBottomDialog(
layout: Int,
activity: Context,
setHeadDialog: Dialog,
animation: Int,
gravity: Int
): View {
val mDialogView = View.inflate(activity, layout, null)
setHeadDialog.setContentView(mDialogView)
val window = setHeadDialog.window
window?.setGravity(gravity)
val lp = window?.attributes
window?.decorView?.setPadding(0, 0, 0, 0)
lp?.width = PhoneUtils.getScreenWidth(AppliContext.get())
lp?.height = ViewGroup.LayoutParams.MATCH_PARENT
if (gravity == Gravity.TOP) {
lp?.height = PhoneUtils.getScreenHeight(AppliContext.get())
}
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
window?.attributes = lp
if (animation > 0)
window?.setWindowAnimations(animation)//设置动画
return mDialogView
}
}
\ No newline at end of file
package com.ym.game.view
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.ColorDrawable
import android.text.Html
import android.util.Log
import android.view.*
import android.widget.ImageView
import android.widget.PopupWindow
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.anythink.core.api.ATAdInfo
import com.anythink.core.api.AdError
import com.ym.game.adapter.SigninDropsAdapter
import com.ym.game.adapter.WateringTaskAdpater
import com.ym.game.contract.WateringRewardContract
import com.ym.game.module.SinginEntity
import com.ym.game.module.WateringTaskEntity
import com.ym.game.presenter.WateringRewardPresenter
import com.ym.library.module.AdEntity
import com.ym.library.net.BaseObserver
import com.ym.library.net.RxSchedulers
import com.ym.library.rxbus.RxBusConstant
import com.ym.library.rxbus.RxBusUtil
import com.ym.library.rxbus.Subscribe
import com.ym.library.rxbus.ThreadMode
import com.ym.library.utils.EventUtils
import com.ym.library.utils.LogUtils
import com.ym.library.utils.Utils
import com.ym.module.guesssong.listener.OnRecycleItemClickListener
import com.ym.module.toponad.AdID
import com.ym.module.toponad.ToponManager
import com.ym.module.toponad.listener.ToponRewardListener
import com.ym.quwei.guessing.R
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/12
* 每日水滴
*/
class SiginDropsPopupwindow : PopupWindow(), WateringRewardContract.View,
OnRecycleItemClickListener<WateringTaskEntity> {
private val TAG = "Popupwindow"
private var view: View? = null
private var mContext: Context? = null
private var tvPopupSigninDrops: TextView? = null
private var mPresenter: WateringRewardPresenter? = null
private var singinDropsAdapter: SigninDropsAdapter? = null
private var wateringTaskAdpater: WateringTaskAdpater? = null
fun init(mContext: Context?) {
this.mContext = mContext
RxBusUtil.getDefault().register(this)
// ToponManager.initNativeAd((mContext as Activity), AdID.AD_DAILY_DRIP_BIGIMAGE)
// ToponManager.initNativeAd((mContext as Activity), AdID.AD_LUCKY_DAILY_WATER_VIDEO)
// ToponManager.initRewardAd((mContext as Activity), AdID.AD_LUCKY_WATER_HIGH_VIDEO)
mPresenter = WateringRewardPresenter(this)
view = LayoutInflater.from(mContext).inflate(R.layout.layout_popup_drops, null)
init(view)
initView()
mPresenter?.getOrchardSignTask()
mPresenter?.getRrchardDailyTask()
showAtLocation(
view,
Gravity.CENTER,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
)
}
private fun initView() {
tvPopupSigninDrops = view?.findViewById<TextView>(R.id.tv_popup_signin_drops)
val recyclerSigninDrops =
view?.findViewById<RecyclerView>(R.id.recycler_popup_signin_drops)
val recyclerWatering =
view?.findViewById<RecyclerView>(R.id.recycler_popup_watering)
view?.findViewById<ImageView>(R.id.iv_popup_close)?.setOnClickListener { dismiss() }
singinDropsAdapter = SigninDropsAdapter(mContext)
recyclerSigninDrops?.layoutManager =
GridLayoutManager(mContext, 7) as RecyclerView.LayoutManager
recyclerSigninDrops?.adapter = singinDropsAdapter
wateringTaskAdpater = WateringTaskAdpater(mContext, 1, this)
recyclerWatering?.adapter = wateringTaskAdpater
}
@SuppressLint()
@Subscribe(code = RxBusConstant.RX_MAIN_WATER_DROP_UPDATE, threadMode = ThreadMode.MAIN)
fun updateList() {
mPresenter?.getRrchardDailyTask()
}
override fun onItemClick(view: View, position: Int, data: WateringTaskEntity) {
// 0未完成 1已领取 2可领取
when (data.status) {
0 -> {
// 跳转页面 1转盘 2高额水滴任务 3首页 4激励视频 直客任务链接"
when (data.reference) {
1 -> {
dismiss()
TurntableDialog.showTurntable(mContext)
RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_TURNTABLE_LOTTERYED)
}
2 -> {
dismiss()
// WateringTaskPopupwindow().init(mContext)
}
3 -> dismiss()
// 4 -> {
// //看广告
// ToponManager.loadReward((mContext as Activity), object : ToponRewardListener {
// override fun onRewardedVideoAdPlayClicked(entity: ATAdInfo) {
// EventUtils.onEvent(
// "ad_click",
// Utils.obj2Str(
// AdEntity(
// entity.networkFirmId,
// AdID.AD_LUCKY_DAILY_WATER_VIDEO,
// "每日水滴激励视频"
// )
// )
// )
// }
//
// override fun onRewardedVideoAdClosed(entity: ATAdInfo) {
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_REQUEST_TEPORT)
// mPresenter?.getRrchardDailyTask()
// }
//
// override fun onRewardedVideoAdFailed(errorCode: AdError) {
//
// }
//
// override fun onRewardedVideoAdPlayEnd(entity: ATAdInfo) {
// EventUtils.onEvent(
// "ad_ended",
// Utils.obj2Str(AdEntity("ad_ended", "ad_ended", "每日水滴激励视频"))
// )
// }
//
// override fun onRewardedVideoAdPlayStart(entity: ATAdInfo) {
// EventUtils.onEvent(
// "ad_show",
// Utils.obj2Str(
// AdEntity(
// entity.networkFirmId,
// AdID.AD_LUCKY_DAILY_WATER_VIDEO,
// "每日水滴激励视频"
// )
// )
// )
// }
//
// },
// AdID.AD_BUBBLE_POP_VIDEO
// )
//
// }
}
}
}
}
//签到
override fun rchardSignTaskResult(data: SinginEntity) {
LogUtils.i(TAG, "签到")
if (data != null) {
var content = "连续签到7天,领惊喜大奖"
tvPopupSigninDrops?.text = content
singinDropsAdapter?.clear()
singinDropsAdapter?.appendToList(data.signInfoList)
singinDropsAdapter?.notifyDataSetChanged()
if (data.isPop == 1) {
//首次签到弹窗
// MainDialog.showgetWaterDrop(mContext, 1, "签到", data?.awardNum)
RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_TURNTABLE_LOTTERYED)
}
}
}
//每日水滴任务列表
override fun rchardDailyTaskResult(datas: List<WateringTaskEntity>) {
LogUtils.i(TAG, "每日水滴任务列表")
wateringTaskAdpater?.clear()
wateringTaskAdpater?.appendToList(datas)
wateringTaskAdpater?.notifyDataSetChanged()
}
override fun dismiss() {
super.dismiss()
LogUtils.i(TAG, "dismiss")
RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_UPDATE_HOME_INFO)
RxBusUtil.getDefault().unregister(this)
}
private fun init(view: View?) {
// 设置外部可点击
this.isOutsideTouchable = true
// mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
view?.setOnTouchListener(object : View.OnTouchListener {
@SuppressLint("ClickableViewAccessibility")
override fun onTouch(p0: View?, event: MotionEvent?): Boolean {
val height = view?.findViewById<RelativeLayout>(R.id.layout_drops_root)?.getTop()
val y = event?.getY()?.toInt()
if (event?.getAction() === MotionEvent.ACTION_UP) {
if (y != null) {
if (height != null && y < height) {
dismiss()
}
}
}
return true
}
})
/* 设置弹出窗口特征 */ // 设置视图
this.contentView = view
// 设置弹出窗体的宽和高
this.height = RelativeLayout.LayoutParams.MATCH_PARENT
this.width = RelativeLayout.LayoutParams.MATCH_PARENT
// 设置弹出窗体可点击
this.isFocusable = true
// 实例化一个ColorDrawable颜色为半透明
val dw = ColorDrawable(-0x60000000)
// 设置弹出窗体的背景
setBackgroundDrawable(dw)
// 设置弹出窗体显示时的动画,从底部向上弹出
this.animationStyle = R.style.main_photo_anim
isClippingEnabled = false
}
}
\ No newline at end of file
package com.ym.game.view
import android.annotation.SuppressLint
import android.app.Activity
import android.app.Dialog
import android.content.Context
import android.os.CountDownTimer
import android.view.Gravity
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import com.anythink.core.api.ATAdInfo
import com.anythink.core.api.AdError
import com.ym.game.contract.TurntableContract
import com.ym.game.module.TurntableEntity
import com.ym.game.presenter.TurntablePresenter
import com.ym.library.module.AdEntity
import com.ym.library.rxbus.RxBusConstant
import com.ym.library.rxbus.RxBusUtil
import com.ym.library.rxbus.Subscribe
import com.ym.library.rxbus.ThreadMode
import com.ym.library.utils.EventUtils
import com.ym.library.utils.LogUtils
import com.ym.library.utils.Utils
import com.ym.module.toponad.AdID
import com.ym.module.toponad.ToponManager
import com.ym.module.toponad.listener.ToponRewardListener
import com.ym.quwei.guessing.R
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/10
*/
object TurntableDialog : TurntableUtils(), TurntableContract.View {
private var TAG = "Turntable"
private var isStartAnim = true
private var isUpdate = false
private var context: Context? = null
private var mDialog: Dialog? = null
private var mLotteryResult: TurntableEntity.Turntable? = null
private var turntables: TurntableEntity? = null
private var tvTurntableCount: TextView? = null
private var tvTime: TextView? = null
private var btnTurntableLottery: TextView? = null
private var ivTurntableBg: ImageView? = null
private var btnCountdown: ImageView? = null
private var mPresenter: TurntablePresenter? = null
private var timeTask: CountDownTimer? = null
//初始化转盘动画 需要提现初始化 避免问题
fun initTurntableAnim() {
initAnim()
}
/**
*幸运转盘
*/
fun showTurntable(context: Context?) {
if (context == null) {
return
}
this.context = context
// ToponManager.initNativeAd((context as Activity), AdID.AD_LUCKY_TURNTABLE_BIGIMAGE)
// ToponManager.initRewardAd((context as Activity), AdID.AD_LUCKY_TURNTABLE_VIDEO)
mPresenter = TurntablePresenter(this)
mPresenter?.getTurntableList()
RxBusUtil.getDefault().register(this)
mDialog = Dialog(context, R.style.UpdateVersionCompatDialogTheme75)
val mDialogView =
MainDialog.showBottomDialog(
R.layout.dialog_turntable,
context,
mDialog!!,
0,
Gravity.CENTER
)
ivTurntableBg = mDialogView?.findViewById<ImageView>(R.id.iv_turntable_bg)
tvTurntableCount = mDialogView?.findViewById<TextView>(R.id.tv_main_turntable_count)
btnTurntableLottery = mDialogView?.findViewById<TextView>(R.id.btn_turntable_lottery)
btnCountdown = mDialogView?.findViewById<ImageView>(R.id.btn_turntable_lottery_countdown)
tvTime = mDialogView?.findViewById<TextView>(R.id.tv_main_turntable_time)
btnTurntableLottery?.setOnClickListener {
if (Utils.isFastClick()) {
//开启转盘
btnTurntableLottery?.isEnabled = false
isStartAnim = true
mPresenter?.getTurntableLotteryResult()
if (turntables?.showVideo == 0 && turntables?.countDownSecond!! < 0) {
} else if (turntables?.showVideo == 1) {
//看广告 结束调用转盘结果接口 刷新列表 并开启转盘动画
EventUtils.onEvent("turntable_video_dialog_click", "转盘视频")
// showAd()
}
}
}
btnCountdown?.setOnClickListener {
//倒计时
Utils.showToast(context, "抽奖次数已用完,倒计时结束后再来吧~")
}
mDialogView?.findViewById<ImageView>(R.id.iv_turntable_close).setOnClickListener {
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_UPDATE_HOME_INFO)
mDialog?.dismiss()
timeTask?.cancel()
RxBusUtil.getDefault().unregister(this)
}
mDialog?.setOnCancelListener {
timeTask?.cancel()
RxBusUtil.getDefault().unregister(this)
}
mDialog?.setCanceledOnTouchOutside(false)
mDialog?.setCancelable(false)
mDialog?.show()
}
// private fun showAd() {
// ToponManager.loadReward((context as Activity), object : ToponRewardListener {
// override fun onRewardedVideoAdPlayClicked(entity: ATAdInfo) {
// EventUtils.onEvent(
// "ad_click",
// Utils.obj2Str(
// AdEntity(
// entity.networkFirmId,
// AdID.AD_LUCKY_TURNTABLE_VIDEO,
// "幸运转盘激励视频广告"
// )
// )
// )
// }
//
// override fun onRewardedVideoAdClosed(entity: ATAdInfo) {
// reset()
// btnTurntableLottery?.isEnabled = false
// isStartAnim = true
// isUpdate = true
// mPresenter?.getTurntableLotteryResult()
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_REQUEST_TEPORT)
// }
//
// override fun onRewardedVideoAdFailed(errorCode: AdError) {
// reset()
// btnTurntableLottery?.isEnabled = false
// isStartAnim = true
// isUpdate = true
// mPresenter?.getTurntableLotteryResult()
//
// }
//
// override fun onRewardedVideoAdPlayEnd(entity: ATAdInfo) {
// EventUtils.onEvent("ad_ended", Utils.obj2Str(AdEntity("ad_ended", "ad_ended", "幸运转盘激励视频广告")))
// }
//
// override fun onRewardedVideoAdPlayStart(entity: ATAdInfo) {
// EventUtils.onEvent(
// "ad_show",
// Utils.obj2Str(
// AdEntity(
// entity.networkFirmId,
// AdID.AD_LUCKY_TURNTABLE_VIDEO,
// "幸运转盘激励视频广告"
// )
// )
// )
// }
//
// }, AdID.AD_LUCKY_TURNTABLE_VIDEO)
// }
/**
* 获取转盘数据
*/
@SuppressLint()
@Subscribe(code = RxBusConstant.RX_MAIN_TURNTABLE_LOTTERYED, threadMode = ThreadMode.MAIN)
fun updateTurntableLotteryed() {
LogUtils.i(TAG, "获取转盘数据")
mPresenter?.getTurntableList()
}
//转盘结果
override fun turntableLotteryResult(data: TurntableEntity.Turntable) {
mLotteryResult = data
if (isStartAnim) {
if (ivTurntableBg != null) {
startAnim(data.id, ivTurntableBg!!)
}
}
// if (isUpdate) {
// //看视频后刷新状态
// mPresenter?.getTurntableList()
// isUpdate = false
// }
}
//转盘列表
override fun turntableListResult(data: TurntableEntity) {
turntables = data
initView(data)
}
fun initView(data: TurntableEntity) {
tvTurntableCount?.text = "剩余次数: ${data.lotteryNum}"
//免费抽奖
if (data.showVideo == 0 && data.countDownSecond != null && data.countDownSecond!! < 0) {
tvTime?.visibility = View.GONE
btnCountdown?.visibility = View.GONE
btnTurntableLottery?.visibility = View.VISIBLE
btnTurntableLottery?.setBackgroundResource(R.mipmap.icon_main_turntable_free_draw)
} else {
//看视频抽奖
if (data.showVideo == 1) {
tvTime?.visibility = View.GONE
btnCountdown?.visibility = View.GONE
btnTurntableLottery?.visibility = View.VISIBLE
// btnTurntableLottery?.setImageResource(R.drawable.icon_main_turntable_free_draw_ad)
} else if (data.countDownSecond != null && data.countDownSecond!! > 0) {
//倒计时
tvTime?.visibility = View.VISIBLE
btnCountdown?.visibility = View.VISIBLE
btnTurntableLottery?.visibility = View.GONE
timeTask = startTimeTask(data.countDownSecond!!)
}
}
}
//开启计时器
fun startTimeTask(time: Int): CountDownTimer? {
LogUtils.i(TAG, "${time}")
return object : CountDownTimer(time.toLong() * 1000 + 1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
tvTime?.text = formatTime((millisUntilFinished / 1000).toInt())
}
override fun onFinish() {
mPresenter?.getTurntableList()
}
}.start()
}
//动画结束
override fun animEnd() {
LogUtils.i(TAG, "转盘结束" + "剩余次数: ${mLotteryResult?.lotteryNum}")
reset()
mPresenter?.getTurntableList()
isStartAnim = false
btnTurntableLottery?.isEnabled = true
tvTurntableCount?.text = "剩余次数: ${mLotteryResult?.lotteryNum}"
RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_UPDATE_HOME_INFO)
// if (mLotteryResult?.awardType == 1) {
// MainDialog.showgetWaterDrop(
// context, 1,
// "转盘",
// mLotteryResult?.awardNum ?: 0
// )
// } else {
// MainDialog.receiveBox(
// (context as Activity),
// 2,
// mLotteryResult?.awardNum!!,
// View.OnClickListener {
// mDialog?.dismiss()
// RxBusUtil.getDefault().send(RxBusConstant.RX_MAIN_ACTIVITY_TAB, 1)//跳转兑换商店
// })
// }
}
fun formatTime(time: Int): String? {
val hh = time / 3600
val mm = (time - 3600 * hh) / 60
val ss = time - 3600 * hh - 60 * mm
val sb = StringBuilder()
sb.append(hh.toString() + "时")
if (mm < 10) {
sb.append("0" + mm + "分")
} else {
sb.append(mm.toString() + "分")
}
if (ss < 10) {
sb.append("0" + ss + "秒")
} else {
sb.append(ss.toString() + "秒")
}
return sb.toString()
}
//恢复开始的状态
private fun reset() {
ivTurntableBg?.setImageResource(R.mipmap.icon_main_turntable_bg)
}
}
\ No newline at end of file
package com.ym.game.view
import android.animation.Animator
import android.animation.AnimatorSet
import android.animation.ObjectAnimator
import android.util.Log
import android.view.animation.AccelerateDecelerateInterpolator
import android.widget.ImageView
import com.ym.task.module.listener.CustomAnimatiorListener
/**
*Craeted by ${junqi.li}
*Craeted by 2020/9/10
*/
abstract class TurntableUtils {
private var start = 0f
private var end = 1440f
private var single = 1111
private var double = 2222
private var status = double
private var isCancel = false
private var objectAnimator1: ObjectAnimator? = null
private var animatorSet: AnimatorSet? = null
private val TAG = "TurntableUtils"
fun initAnim() {
animatorSet = AnimatorSet()
animatorSet?.interpolator = AccelerateDecelerateInterpolator()
animatorSet?.addListener(object : CustomAnimatiorListener() {
override fun onAnimStart(animation: Animator?) {
}
override fun onAnimationEnd(animation: Animator?) {
super.onAnimationEnd(animation)
Log.d(TAG, "onAnimationEnd")
animEnd()
if (!isCancel) {
// showDialog()
}
isCancel = false
}
override fun onAnimationCancel(animation: Animator?) {
super.onAnimationCancel(animation)
isCancel = true
Log.d(TAG, "onAnimationCancel")
}
})
}
fun startAnim(type: Int, img: ImageView) {
var num = type
if (type == 1) {
num = 0
} else {
if (start >= 60f) {
} else {
num -= 1
}
}
// if (type == 1) {
// if (start >= 60f) {
// num = 0
// } else {
// num = 1
// }
// } else {
// if (start >= 60f) {
// num = 1
// } else {
// num = 0
// }
//
// }
end = (4 * 360f) - (num * 60f)
objectAnimator1 = ObjectAnimator.ofFloat(img, "rotation", start, end).setDuration(3000)
objectAnimator1?.addUpdateListener {
val value = it.getAnimatedValue().toString().toFloat()
val a = (value / 360f).toInt()
val x = value - (a * 360f)
val n = (x / 120f).toInt()
val z = x - (n * 120)
// Log.d(
// TAG,
// "value:" + value + " a:" + a + " x:" + x + " n:" + n + " z:" + z
// )
start = z
}
// Log.d(TAG, " start:" + start + " end:" + end)
animatorSet?.play(objectAnimator1)
animatorSet?.start()
// start = (num * 60f)
if (type == 1) {
status = single
} else {
status = double
}
}
// abstract fun awardVideoClose()
//
// abstract fun showDialog()
//
abstract fun animEnd()
}
\ No newline at end of file
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromYDelta="100%p"
android:toYDelta="0" />
<alpha
android:duration="200"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
\ No newline at end of file
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromYDelta="0"
android:toYDelta="50%p" />
<alpha
android:duration="200"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="359"
android:pivotX="50%"
android:pivotY="50%"
android:duration="5000"
android:interpolator="@android:anim/linear_interpolator"
android:repeatCount="-1"/>
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:ignore="MissingDefaultResource"
android:duration="5000"
android:pivotX="50%"
android:pivotY="50%"
android:fromXScale="0.8"
android:fromYScale="0.8"
android:toXScale="1"
android:toYScale="1"
android:repeatMode="reverse"
android:repeatCount="infinite"/>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="330dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="23dp"
android:layout_marginRight="23dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp">
<ImageView
android:id="@+id/iv_turntable_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@mipmap/icon_main_wheel_of_fortune" />
<ImageView
android:id="@+id/iv_turntable_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_turntable_title"
android:layout_alignParentRight="true"
android:layout_marginTop="12dp"
android:src="@mipmap/icon_main_turntable_close" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="330dp"
android:layout_below="@+id/iv_turntable_title"
android:layout_marginTop="30dp">
<ImageView
android:id="@+id/iv_turntable_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@mipmap/icon_main_turntable_bg" />
<ImageView
android:id="@+id/iv_main_turntable_center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@mipmap/icon_main_turntable_center" />
</RelativeLayout>
</RelativeLayout>
<TextView
android:id="@+id/tv_main_turntable_reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="每日12:00 18:00 00:00重置"
android:textColor="@color/white"
android:textSize="16sp" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="55dp"
android:layout_marginTop="10dp">
<ImageView
android:id="@+id/btn_turntable_lottery_countdown"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:src="@mipmap/icon_main_turntable_free_draw_countdown"
android:visibility="gone" />
<TextView
android:id="@+id/tv_main_turntable_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="2dp"
android:includeFontPadding="true"
android:text="00:00:00"
android:textColor="#FEFFD7"
android:textSize="16sp"
android:visibility="gone" />
<TextView
android:id="@+id/btn_turntable_lottery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/icon_main_turntable_free_draw"
android:gravity="center"
android:text="免费抽奖"
android:textColor="@color/white"
android:textSize="24sp"
android:visibility="visible" />
</RelativeLayout>
<TextView
android:id="@+id/tv_main_turntable_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="剩余次数:10"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="47dp">
<ImageView
android:id="@+id/iv_item_signin_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_main_popup_singnin_received" />
<TextView
android:id="@+id/tv_item_signin_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="2dp"
android:text="60g"
android:textColor="@color/color_ffffff"
android:textSize="10sp" />
</RelativeLayout>
<TextView
android:id="@+id/tv_item_signin_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="第N天"
android:textColor="@color/color_8C551C"
android:textSize="12sp" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/layout_watering_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:background="@mipmap/icon_popup_record_item_bg"
android:paddingLeft="14dp">
<TextView
android:id="@+id/tv_watering_item_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
tools:text="浇水10次"
android:textColor="@color/color_8C551C"
android:textSize="14sp" />
<LinearLayout
android:id="@+id/layout_watering_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_watering_item_title"
android:layout_marginTop="12dp"
android:layout_marginBottom="19dp"
android:gravity="center">
<!-- <com.ym.module.guesssong.widget.ProgressButton
android:id="@+id/progess_watering_item"
style="?android:attr/borderlessButtonStyle"
android:layout_width="150dp"
android:layout_height="14dp"
android:layout_below="@+id/tv_watering_item_title"
android:progressDrawable="@drawable/user_progressbar_bg"
app:cornerRadius="8dp" />-->
<ProgressBar
android:layout_marginRight="4dp"
android:id="@+id/progess_watering_item"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="150dp"
android:layout_height="15dp"
android:layout_below="@+id/tv_watering_item_title"
android:progressDrawable="@drawable/user_progressbar_bg" />
<TextView
android:id="@+id/tv_watering_item_progess"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_watering_item_title"
android:layout_toRightOf="@+id/progess_watering_item"
tools:text="10/10"
android:textColor="@color/color_CDA560"
android:textSize="12sp" />
</LinearLayout>
<TextView
android:id="@+id/tv_watering_item_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:layout_marginRight="14dp"
android:drawableLeft="@mipmap/icon_popupwater_icon"
android:drawablePadding="4dp"
android:text="+0g"
android:textColor="@color/color_EC8D3B" />
<ImageView
android:id="@+id/tv_watering_item_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_watering_item_count"
android:layout_alignParentRight="true"
android:layout_marginTop="8dp"
android:layout_marginRight="10dp"
android:src="@drawable/icon_mian_popup_complete" />
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="fill_parent"
android:layout_height="match_parent"
android:background="#60000000">
<RelativeLayout
android:id="@+id/layout_drops_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center_horizontal"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="550dp"
android:layout_marginTop="80dp"
android:background="@mipmap/icon_main_popup_cooper_record_bg"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_drops_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:layout_marginBottom="20dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/tv_popup_signin_drops"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_8C551C"
android:textSize="18sp"
tools:text="连续签到7天,领惊喜大奖" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_popup_signin_drops"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="21dp"
android:layout_marginTop="12dp"
android:layout_marginRight="21dp" />
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="343dp"
android:layout_below="@+id/layout_drops_title"
android:layout_alignParentBottom="true"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_popup_watering"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</FrameLayout>
</RelativeLayout>
<ImageView
android:id="@+id/iv_popup_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="10dp"
android:paddingRight="@dimen/dp_8"
android:src="@mipmap/icon_main_popup_close" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:src="@mipmap/icon_main_popup_daily_drops" />
</RelativeLayout>
</FrameLayout>
......@@ -4,4 +4,15 @@
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="main_color_bar">#000000</color>
<color name="color_ffffff">#ffffff</color>
<color name="color_8C551C">#8C551C</color>
<color name="color_8B4809">#8B4809</color>
<color name="color_FF5A00">#FF5A00</color>
<color name="color_CDA560">#CDA560</color>
<color name="color_3697E6">#3697E6</color>
<color name="color_7C1714">#7C1714</color>
<color name="color_C48645">#C48645</color>
<color name="color_F35169">#F35169</color>
<color name="color_008EFF">#008EFF</color>
<color name="color_EC8D3B">#EC8D3B</color>
</resources>
......@@ -7,5 +7,8 @@
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="main_photo_anim" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/main_popup_enter_anim</item>
<item name="android:windowExitAnimation">@anim/main_popup_exit_anim</item>
</style>
</resources>
......@@ -244,6 +244,10 @@ public class NetConfig {
public static final String URL_GAME_USE_ACCELERATORS="app/v1/game/farm/use_accelerators";//加速剂加速
public static final String URL_GAME_WAREHOUSE_DATA="app/v1/game/farm/warehouseData";//仓库列表
public static final String URL_GAME_WITHDRAW_LIST="app/v1/game/farm/withdraw_list";//提现列表
public static final String URL_GAME_TURNTABLE_LIST="app/v1/game/farm/turntable_list";//转盘列表
public static final String URL_GAME_FARM_LOTTERY="app/v1/game/farm/lottery";//转盘抽奖
public static final String URL_GAME_FARM_LIST="app/v1/game/farm/sign_list";//签到列表
public static final String URL_GAME_FARM_DAILY_TASK="app/v1/game/farm/daily_task";//每日任务
}
}
......@@ -32,5 +32,10 @@ public class RxBusConstant {
//MainFragment 开始
public final static int RX_MAIN_STATRT_MUSIC = 10003;
//MainFragment 转盘抽奖获取数据
public final static int RX_MAIN_TURNTABLE_LOTTERYED = 10002;
//MainFragment 首页数据刷新
public final static int RX_MAIN_UPDATE_HOME_INFO = 10005;
//MainFragment 每日水滴领取后刷新
public final static int RX_MAIN_WATER_DROP_UPDATE = 10008;
}
......@@ -1024,13 +1024,23 @@ public class Utils {
private static long lastClickTime;
public static boolean isFastClick() {
// boolean flag = false;
// long curClickTime = System.currentTimeMillis();
// Log.d("isFastClick","lastClickTime:" + (curClickTime - lastClickTime));
/*if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
flag = true;
lastClickTime = curClickTime;
}*/
return true;
}
public static boolean isFastClick2() {
boolean flag = false;
long curClickTime = System.currentTimeMillis();
if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
flag = true;
lastClickTime = curClickTime;
}
return flag;
return true;
}
}
......@@ -22,5 +22,5 @@
<color name="color_333333">#333333</color>
<color name="transparent">#00000000</color>
<color name="transparent75">#60000000</color>
</resources>
......@@ -81,5 +81,11 @@
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="UpdateVersionCompatDialogTheme75" parent="@style/Theme.AppCompat.DialogWhenLarge">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@color/transparent75</item>
<item name="android:windowBackground">@color/transparent75</item>
</style>
</resources>
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置背景色 -->
<item
android:id="@android:id/background"
android:drawable="@color/color_FEE097" />
<item android:id="@android:id/background">
<shape>
<corners android:radius="8dp" />
<solid android:color="@color/color_8B4809" />
</shape>
</item>
<!-- 设置进度条颜色 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="3.5dp" />
<corners android:radius="8dp" />
<gradient
android:endColor="@color/color_FF8F2A"
android:startColor="@color/color_FEE097" />
android:endColor="#FF9128"
android:startColor="#FAC550" />
</shape>
</clip>
</item>
......
......@@ -25,5 +25,6 @@
<color name="color_FAB843">#FAB843</color>
<color name="color_C57110">#C57110</color>
<color name="color_E96B00">#E96B00</color>
<color name="color_8B4809">#8B4809</color>
</resources>
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