캐시버튼 실행
준비 사항
"퍼블리셔 캐시버튼"을 사용하기 위해서는 "시작하기" → "퍼블리셔 서비스"의 기본 설정이 완료 되어야 합니다.
연동 순서
1. LaunchButtonBuilder.build를 통해 인스턴스를 생성합니다.
2. build(LaunchButtonBuilder.IBuilderListener) 함수를 통해 인스턴스를 초기화 합니다.
3. 리스너로 전달된 "LaunchButtonBuilder"를 통해 "기본형" 또는 "커스텀" 형식의 버튼을 실행합니다.
3.1. 기본형(launchButton)
3.1.1 LaunchButtonBuilder.launchButton
3.2. 커스텀형(launchCustomView)
3.2.1. LaunchButtonBuilder.launchCustomView
캐시버튼 실행
LaunchButtonBuilder()
val launchButtonBuilder = LaunchButtonBuilder.Builder(context = context)
// LauchButtonBuilder.build
launchButtonBuilder.build(listener = object : LaunchButtonBuilder.IBuilderListener {
override fun onSuccess(builder: LaunchButtonBuilder) {
// 성공
// builder.launchButton or builder.launchCustomView
}
override fun onFailure(reason: String) {
// 실패
// reason: 실패 사유
}
})
기본형
버튼을 터치하면 화면 하단에서 대시보드가 노출 됩니다.
LaunchBuilder.launchButton(...)
fun launchButton(
// Android Activity
ownerActivity: Activity,
// 시작시 버튼 노출 여부(기본값 true)
useStartWithInVisible: Boolean = false,
// 버튼 옵션 정보(overlay 사용 여부 및 버튼 초기 위치)
option: ButtonOption = ButtonOption(),
// 버튼 생성 결과 리스너
listener: ILaunchButtonListener
)
// option(버튼옵션)
class ButtonOption(
// 오버레이 기능 활성화, 유저가 버튼을 원하는 위치로 이동 시킬수 있습니다.
val useOverlay: Boolean = true,
// 버튼의 초기 X축 위치값을 설정합니다.
val startPositionX: Float = AppConstants.Setting.CashButton.DEFAULT_BUTTON_POSITION,
// 버튼의 초기 Y축 위치값을 설정합니다.
val startPositionY: Float = AppConstants.Setting.CashButton.DEFAULT_BUTTON_POSITION
)
// listener(버튼 생성 결과 리스너)
interface ILaunchButtonListener {
// 버튼생성 실패와 함께 이유가 전달됩니다.
fun onFailure(reason: String)
// 버튼생성 성공 이벤트와 함께 캐시버튼 레이아웃이 전달됩니다.
fun onSuccess(view: CashButtonLayout?)
// 캐시버튼 레이아웃의 대시보드 이벤트가 전달됩니다. { EXPANDED / HIDDEN }
fun onDashBoardStateChange(state: CashButtonLayout.State) {}
}
class MainActivity : AppCompatActivity() {
private var cashButtonLayout: CashButtonLayout? = null
private val binding: ActivityMainBinding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContent
setContentView(binding.root)
// create LauchButtonBuilder
val launchButtonBuilder = LaunchButtonBuilder.Builder(context = this@MainActivity)
// LauchButtonBuilder.build
launchButtonBuilder.build(listener = object : LaunchButtonBuilder.IBuilderListener {
override fun onSuccess(builder: LaunchButtonBuilder) {
Log.i("LaunchButtonBuilder", "IBuilderListener::onSuccess")
launchButton(builder = builder)
}
override fun onFailure(reason: String) {
Log.i("LaunchButtonBuilder", "IBuilderListener::onFailure '$reason'")
}
})
}
// launchButton
private fun launchButton(builder: LaunchButtonBuilder) {
builder.launchButton(
ownerActivity = this@MainActivity,
listener = object : ILaunchButtonListener {
override fun onSuccess(view: CashButtonLayout?) {
Log.i("LaunchButtonBuilder", "IBuilderListener::onSuccess")
cashButtonLayout = view
}
override fun onFailure(reason: String) {
Log.i("LaunchButtonBuilder", "ILaunchButtonListener::onFailure '$reason'")
}
override fun onDashBoardStateChange(state: CashButtonLayout.State) {
super.onDashBoardStateChange(state)
// state: EXPANDED, HIDDEN
Log.i("LaunchButtonBuilder", "ILaunchButtonListener::onDashBoardStateChange '$state'")
}
}
)
}
}
커스텀형
커스텀 버튼 적용 디자인 가이드
커스텀 버튼 적용 가이드
기본으로 제공되는 버튼의 형태가 아닌 원하는 형태의 View를 통해 캐시 버튼을 사용할 수 있습니다.
LaunchBuilder.launchCustomView(...)
fun launchCustomView(
// Android Activity
ownerActivity: Activity,
// 커스텀으로 사용되는 View(null 허용)
customView: View?,
// 버튼 생성 결과 리스너
listener: ILaunchCustomViewListener
)
// listener
interface ILaunchCustomViewListener {
// 버튼생성 성공 이벤트와 함께 캐시버튼 레이아웃이 전달됩니다.
fun onSuccess(view: CashButtonLayout?)
// 현재 유저가 적립가능한 버튼의 캐시정보(버튼 터치로 받을 수 있는 캐시물량)
fun onCoinUpdate(coinValue: String)
// 버튼생성 실패와 함께 이유가 전달됩니다.
fun onFailure(reason: String)
// 캐시버튼 레이아웃의 대시보드 이벤트가 전달됩니다. { EXPANDED / HIDDEN }
fun onDashBoardStateChange(state: CashButtonLayout.State) {}
}
class MainActivity : AppCompatActivity() {
private var cashButtonLayout: CashButtonLayout? = null
private val binding: ActivityMainBinding by lazy {
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContent
setContentView(binding.root)
// create LauchButtonBuilder
val launchButtonBuilder = LaunchButtonBuilder.Builder(context = this@MainActivity)
// LauchButtonBuilder.build
launchButtonBuilder.build(listener = object : LaunchButtonBuilder.IBuilderListener {
override fun onSuccess(builder: LaunchButtonBuilder) {
launchCustomView(builder = builder)
Log.i("LaunchButtonBuilder", "IBuilderListener::onSuccess")
}
override fun onFailure(reason: String) {
Log.i("LaunchButtonBuilder", "IBuilderListener::onFailure '$reason'")
}
})
}
// launchCustomView
private fun launchCustomView(builder: LaunchButtonBuilder) {
builder.launchCustomView(
ownerActivity = this@MainActivity,
customView = binding.launchCustom,
listener = object : ILaunchCustomViewListener {
override fun onSuccess(view: CashButtonLayout?) {
cashButtonLayout = view
Log.i("LaunchButtonBuilder", "ILaunchCustomViewListener::onSuccess")
}
override fun onFailure(reason: String) {
Log.i("LaunchButtonBuilder", "ILaunchCustomViewListener::onFailure '$reason'")
}
override fun onCoinUpdate(coinValue: String) {
binding.launchCustom.text = "Coin $coinValue"
}
override fun onDashBoardStateChange(state: CashButtonLayout.State) {
super.onDashBoardStateChange(state)
// state: EXPANDED, HIDDEN
Log.i("LaunchButtonBuilder", "ILaunchButtonListener::onDashBoardStateChange '$state'")
}
}
)
}
}
Last updated