SpinWill
1.0.0
안드로이드 앱에서 스핀 휠 기능을 구현하기위한 최신의 고도로 사용자 정의 가능한 라이브러리로, 보상 항목을 주기적으로 가져오고 캐시 할 수있는 내장 로컬 데이터베이스 지원으로 가득 차 있습니다.

// on jitpack.io
implementation 'com.github.sidsharma2002:SpinWill:[latest_version]'
이 인젝터 인스턴스를 작성하고 저장합니다 (응용 프로그램 범위가 권장)
private val injector by lazy { SpinWillInjector<SpinWillItem>() // We are assuming SpinWillItem is the reward item model class. }
인젝터에 다음의 종속성을 제공합니다.
예 :
injector.init(this, RemoteDatabaseImpl()) // impl of SpinWheelRemoteDatabase
// provide localDatabase
injector.setLocalDatabase(
// predefined impl provided by the library
SpinWillLocalDbImpl(daoActions) // provide daoActions to the local db
)
// provide bitmap load usecase
injector.setBitmapLoadUseCase(
// predefined impl provided by the library
SpinWillBitmapLoadUseCaseImpl(
this.applicationContext,
// provide the ItemAdapter
object : WillItemAdapter<SpinWillItem> {
override fun getRewardImageUrl(item: SpinWillItem): String {
return item.rewardImage
}
override fun setRewardBitmap(item: SpinWillItem, bitmap: Bitmap) {
item.rewardBitmap = bitmap
}
})
)
}
// customise according to your usecase
val workReq = PeriodicWorkRequest = PeriodicWorkRequest.Builder(
SpinWillWorker::class.java, x, TimeUnit.MINUTES
)
Configuration.Builder()
.setMinimumLoggingLevel(Log.DEBUG)
.setWorkerFactory(SpinWillWorkerFactory(injector.getRepository()))
.build()
WorkManager.getInstance(this)
.enqueueUniquePeriodicWork(
"spinwill_item_update",
ExistingPeriodicWorkPolicy.REPLACE,
workReq
)
// add SpinWillView1
val willView = SpinWillView1<SpinWillItem>(this)
someLayout.addView(willView)
// run on background thread
injector.getRepository().fetchAndUpdateWheelItem()
val result = injector.getRepository().loadBitmapAndSave()
if (result is Resource.Success && result.data != null) {
runOnUiThread {
// set data items
willView.setItems(result.data!!)
// provide adapter for the items
willView.setItemAdapter(object : WillItemUiAdapter<SpinWillItem> {
override fun getRewardText(item: SpinWillItem): String {
return item.rewardText
}
override fun getOverlayText(item: SpinWillItem): String {
return item.rewardText
}
override fun getRewardBitmap(item: SpinWillItem): Bitmap? {
return item.rewardBitmap
}
})
// invalidate the view
willView.invalidate()
}
}