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()