Coder Social home page Coder Social logo

starter's Introduction

Starter

δΈ­ζ–‡Readme.md

There are 4 libraries in this project: Starter, Drag-Exit, Permission, Picker, SAFR

Starter Starter

This is a quick start package, including BaseActivity, BaseFragment and utils classes;

implementation 'com.github.boybeak:starter:x.y.z'

Starter structure

package class description
activity BaseActivity,BaseDragExitActivity,DataBindingActivity,DataBindingToolbarActivity,DragExitToolbarActivity, SrlRvActivity, ToolbarActivity,ToolbarViewPagerActivity Some basic activities
adapter DataBindingAdapter,FooterAdapter,BaseLayoutImpl,AbsDataBindingHolder, DataChange Only some main class a presented
broadcast AbsReceiver, BroadcastUtils Add isRegistered state in AbsReceiver.Use this with BroadcastUtils
fragment BaseFragment, BaseDialogFragment, BaseBottomDialogFragment, RefreshListFragment, PaginationFragment
mvc It's not too useful
retrofit SimpleCallback, SimpleListCallback, SafeCallback, SafeListCallback Some quick retrofit callback
utils AssetUtil, Connectivity, FileUtil, ImeUtil Some useful utils
widget BottomHideBehavior, Chip, EmptyView, OnScrollBottomListener, PagerStateAdapter, ProgressBar, RatioCardView, RatioImageView,RatioViewPager, SearchBar, SimpleViewPagerFragmentAdapter
Others CrashHandler, GetNothingImpl, ILife, Intents, Memory, Router, SafeHandler

See full wiki document

Drag-Exit Download

implementation 'com.github.boybeak:drag-exit:x.y.z'

demo gif

There's only one FrameLayout's sub class DragExitLayout. Use the layout like this:

<?xml version="1.0" encoding="utf-8"?>
<com.github.boybeak.de.DragExitLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drag_exit_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:lazy="0.25"
    app:stuckEffect="true"
    app:activeEdges="left">
	<WebView 
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </WebView>
</com.github.boybeak.de.DragExitLayout>
class DragExitActivity : AppCompatActivity() {
    
    private val dragListener = object : DragExitLayout.OnExitListener {
        override fun onExit() {
			finish()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        super.setContentView(R.layout.activity_drag_exit)
        
        drag_exit_layout.setOnExitListener(dragListener)
        
        web_view.webViewClient = WebViewClient()
        web_view.webChromeClient = WebChromeClient()
        web_view.loadUrl("https://github.com/boybeak/Starter")
    }
}

Some attributes as below:

  • activeEdges - enum: 3 values are available, left, right and both, which edge can active the drag gesture.
  • exitLineRatio - float: Available values in range (0, 1), the exit action trigger ratio of layout width.
  • stuckEffect - boolean: Whether should the child view stuck at exitLineRation position or not.
  • lazy - float: Available values in range (0, 1). If set to 0.5, your finger move 100 pixels, the child view actually move 50 pixels.
  • alphaEffect - boolean: Whether the child view change its alpha when moving.
  • alphaMin - float: The minimum value of the child view can be. Once the child view moves to exitLineRation position, the alpha will be alphaMin.
  • scaleEffect - boolean, same as alphaEffect
  • scaleMin - float: same as alphaMin

More about exitLineRatio see the image below:

If set exitLineRation to 0.25.

exitLineRation

Don't forget use a transparent theme to your activity if you want a drag-exit activity. Or you can use BaseDragExitActivity or DragExitToolbarActivity in the Starter library.

Permission Download

This is a permission helper. Quickly grant permissions.

implementation 'com.github.boybeak:permission:x.y.z'
PH.ask(Manifest.permission.WRITE_EXTERNAL_STORAGE, 
	Manifest.permission.CAMERA, 
	Manifest.permission.RECORD_AUDIO).go(this, object : Callback {
            override fun onGranted(permissions: MutableList<String>) {
				//TODO do what you want
            }

            override fun onDenied(permission: String) {
				//TODO do what you want
            }

        })

PH is short for Permission Helper.

Picker Picker

A helper library for getting images and videos quickly.

implementation 'com.github.boybeak:picker:x.y.z'
// Get multiple images from gallery
Picker.gallery().image().multiple(true)
	.go(this@PickerActivity, object : MultipleCallback {
		override fun onGet(id: String, uris: MutableList<Uri>, files: MutableList<File>) {
		    adapter!!.addAll(files, Converter<File, FileImpl> { data, _ -> FileImpl(data) }).autoNotify()
		}

		override fun onCancel(id: String) {

		}

	    })
// Get one image from camera
val dir = File(externalCacheDir, "images")
if (!dir.exists()) {
    dir.mkdirs()
}

val cameraTempFile = File(dir, System.currentTimeMillis().toString() + ".jpg")
val uri = FileProvider.getUriForFile(this@PickerActivity, "$packageName.provider", cameraTempFile)
Picker.camera().image().output(uri, cameraTempFile)
	.go(this@PickerActivity, object : SingleCallback {
		override fun onGet(id: String, uri: Uri, file: File) {
		    adapter!!.add(FileImpl(file)).autoNotify()
		}

		override fun onCancel(id: String) {

		}

	    })

With this library, you can get images easily from gallery and camera. Support getting multiple images and videos from gallery, and getting one image or video from camera.

SAFR Download

implementation 'com.github.boybeak:safr:x.y.z'

SAFR is short for startActivityForResult.

SAFR.newInstance().extras {
            //fill data here
        }.byAction(Intent.ACTION_GET_CONTENT)
	.startActivityForResult(this, 100, object : Callback {
            override fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {

            }

        })

starter's People

Contributors

boybeak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.