SpinWill
1.0.0
Uma biblioteca moderna e altamente personalizável para implementar o recurso Spinwheel no seu aplicativo Android, que vem com suporte ao banco de dados local embutido que permite buscar e abastecer periodicamente os itens de recompensa?.

// on jitpack.io
implementation 'com.github.sidsharma2002:SpinWill:[latest_version]'
Crie e salve esta instância do injetor (recomendado para ser escopo de aplicação)
private val injector by lazy { SpinWillInjector<SpinWillItem>() // We are assuming SpinWillItem is the reward item model class. }
Forneça as seguintes dependências ao injetor:
exemplo :
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()
}
}