Integrated RxJava, RxAndroid, Kotlin, Some Application manager utils. 1 Demo
Import libs.
Module/build.gradle
dependencies {
...
implementation 'com.chansos.libs:rxkotlin:0.3.0'
...
}
AppManager : Manager all activity and application.
BaseActivity : Extend BaseActivity and implement its methods to let you focus on developing your Activity.
BaseFragment : Extend BaseFragment and implement its methods to let you focus on developing your Fragment.
BaseViewPagerFragment : Extend BaseFragment and implement its methods to let you focus on developing your ViewPager.
BaseRecyclerViewAdapter : Quickly create an Adapter instance of RecyclerView.
MVP-Struct : Implement MVP programing.
Http-Request : Make a quick Http request.
BroadcastHelper : Easily manage your broadcasts.
HandlerHelper : Easily manage your handlers.
PermissionHelper : Easily manage your permissions.
SharedPreferencesHelper : Easily manage your shared preferences.
UIHelper : Quickly manipulate your UI.
ImageLoader : Easily load image into ImageView.
Manager all activity and application.
./Application.kt
override fun onCreate() {
super.onCreate()
Kt.App.init(this.applicationContext)
}
./Other.kt
// Get application context instance.
Kt.App.getContext(): Context
// Get application resources instance.
Kt.App.getResources(): Resources
// Get last activity instance of activity stack.
Kt.App.last(): Activity
// Exit application.
Kt.App.exit()
Extend BaseActivity and implement its methods to let you focus on developing your Activity.
@PageLayoutId(R.layout.activity_first)
@PageOptions(title = "FirstActivity")
class FirstActivity : BaseActivity() {}
Extend BaseFragment and implement its methods to let you focus on developing your Fragment.
@PageLayoutId(R.layout.fragment_first)
class FirstFragment : BaseFragment() {}
Extend BaseFragment and implement its methods to let you focus on developing your ViewPager.
@PageLayoutId(R.layout.fragment_first)
class FirstFragment : BaseViewPagerFragment(){
override fun onInitialize() {
// Initialize instance.
}
override fun onFirstTime() {
// On this page first time resume.
}
override fun onSecondTime() {
// On this page second time resume.
}
}
Quickly create an Adapter instance of RecyclerView.
Extends
class ImageListAdapter : BaseRecyclerViewAdapter<String>() {
override fun getRootLayoutResId(): Int {
// Return content view layout resources id.
return R.layout.item_image
}
override fun onViewCreate(view: View) {
// Set content view attributes.
}
override fun onBind(viewHolder: BaseRecyclerViewHolder, data: String, position: Int) {
// Set content view informations.
viewHolder.setImage(R.id.image_view, data)
}
}
Instance
// implements BaseRecyclerViewAdapter.OnItemClickListener,BaseRecyclerViewAdapter.OnItemLongClickListener
val adapter = ImageListAdapter()
adapter.onItemClickListener = this
adapter.onItemLongClickListener = this
adapter.setDataList(imageList)
Implement MVP programing.
Contract
interface Contract : BaseContract {
interface View : BaseContract.BaseView{}
interface Presenter : BaseContract.BasePresenter {}
}
View
import com.chansos.rxandroid.kotlin.module.first.Presenter;
@PageLayoutId(R.layout.fragment_first)
class FirstFragment : BaseViewPagerFragment(), Contract.View {
@Autowire
private lateinit var presenter: Presenter
}
Presenter
class Presenter : Contract.Presenter {
private lateinit var view: Contract.View
}
Make a quick Http request. Integrated RxJava, RxAndroid, OkHttp, FastJSON
Api Config
@Domain("https://www.chansos.com/api/")
@BaseUrl("article/")
interface Test {
@GET("project")
fun projectList(@Query("page") page: Int, @Query("size") size: Int, @Query("query") query: String?=""): Observable<ProjectModel>
}
Response Model
class ProjectModel() : Parcelable {
...
}
Request
Kt.Request
.create<ProjectModel>(view as BaseActivity)
.api(Kt.Request.api(Test::class.java).projectList(1, 2))
.obs(Obs(view as BaseActivity))
Response Callback
class Obs(activity: BaseActivity) : Kt.Observer<ProjectModel>(activity) {
override fun onNext(t: ProjectModel) {
LogUtils.d(JSON.toJSONString(t))
}
override fun onError(e: Throwable) {
super.onError(e)
LogUtils.e(e)
}
}
Easily manage your broadcasts.
// Register
Kt.Broadcast.register(): Boolean
// Unregister
Kt.Broadcast.unregister(): Boolean
// Send Broadcast
Kt.Broadcast.send()
// Send Broadcast Synchronized
Kt.Broadcast.sendSync()
Easily manage your handlers.
// Create
Kt.Handler.create(): Handler?
// Send Empty Message
Kt.Handler.what(): Boolean
// Send Message Instance.
Kt.Handler.send(): Boolean
// Send Config
Kt.Handler.sendMessage(): Boolean
// Remove Message
Kt.Handler.remove()
// Obtain Message
Kt.Handler.obtainMessage(): Message
Easily manage your permissions.
// Check
Kt.Permission.check(): Boolean
// Request Permission
Kt.Permission.request()
Easily manage your shared preferences.
// Set
Kt.SharedPreferences.set(key, value)
// Get
Kt.SharedPreferences.get(key, <T>, default): T?
Quickly manipulate your UI.
// Show toast layout.
Kt.UI.showToast()
// Show loading dialog.
Kt.UI.showLoading()
// Hide loading dialog.
Kt.UI.hideLoading()
// Bind click listener.
Kt.UI.bindClick()
// Bind long click listener.
Kt.UI.bindLongClick()
// Quick navigation to another activity.
Kt.UI.quickTo()
// Navigation to another activity for result.
Kt.UI.quickToForResult()
// Find view by id of layout.
Kt.UI.get()
Easy to load image into ImageView.
// Load image.
Kt.Image.load()
// Load image of no cache.
Kt.Image.noCacheLoad()