In order to modularize the ViSearch Android SDK that I was working with previously, I developed my very first UI lib - image-crop-layout . This is a light-weight image cropping module that supports UI customization and box update listener.
Here is a very good tutorial on how to upload a library to jCenter by Brian Attwell .
Submit library to jCenter via Bintray
Step 0
Register a Bintray account and create a new package for the library using a proper Bintray repo name.
Step 1
Add bintray plug-in and maven plug-in under the project’s build.gradle
file
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
Step 2
Config the metadata by adding the script to build.gradle
file under the library module
ext {
// Where you will see your artifact in Bintray's web interface
// The "bintrayName" should match the name of the Bintray repro.
bintrayRepo = "maven"
bintrayName = "crop-image-layout"
// Maven metadata
publishedGroupId = "me.littlecheesecake"
libraryName = "CropImageLayout"
// Save yourself a head ache, and set this equal to the name of the Android Studio library
// module. The artifact name needs to match the name of the library.
artifact = "croplayout"
libraryDescription = "Crop image view layout"
libraryVersion = "${versionMajor}.${versionMinor}.${versionPatch}"
developerId = "yulu"
developerName = "Yu Lu"
developerEmail = "yulu8798@gmail.com"
}
Step 3
apply the bintray plug-in by including the script from other’s gist:
apply from : 'https://raw.githubusercontent.com/attwellBrian/JCenter/master/installv1.gradle'
apply from : 'https://raw.githubusercontent.com/attwellBrian/JCenter/master/bintrayv1.gradle'
or download the scripts and apply from local path:
apply from : '../tools/bintray.gradle'
Then update the local.properties
file in the project by including the bintray user name and password:
bintray . user = ( BINTRAY_USERNAME )
bintray . apikey = ( BINTRAY_API_KEY )
Step 4
Run gradle command to upload the library after implementation and testing:
> . / gradlew bintrayUpload
After successfully upload, you can include the library in the dependencies but need to include the repo
repositories {
maven {
url 'https://dl.bintray.com/yulu/maven/'
}
}
dependencies {
compile 'me.littlecheesecake:crop-image-layout:1.0.5'
}
By add the package to jCenter using the option provided on bintray website, the step of including the maven repo could be eliminated.
Use the crop-image-layout library
Import
dependencies {
compile 'me.littlecheesecake:croplayout:1.0.5'
...
}
Usage
EditPhotoView imageView = ( EditPhotoView ) findViewById ( R . id . editable_image );
EditableImage image = new EditableImage ( this , R . drawable . photo2 );
image . setBox ( new ScalableBox ( 25 , 180 , 640 , 880 ));
imageView . initView ( this , image );
imageView . setOnBoxChangedListener ( new OnBoxChangedListener () {
@Override
public void onChanged ( int x1 , int y1 , int x2 , int y2 ) {
//TODO: cropping box updated
}
});
UI Customization
<me.littlecheesecake.croplayout.EditPhotoView
android:id= "@+id/editable_image"
android:layout_width= "300dp"
android:layout_height= "200dp"
android:layout_margin= "20dp"
android:background= "#fff"
crop:crop_corner_color= "#45B4CA"
crop:crop_line_color= "#d7af55"
crop:crop_shadow_color= "#77ffffff" />
Known Issue
actual cropping of the image is not implemented, but only update the selected area (cropping box)
crop box will be reset to the full image after rotation
image zoom-in is not supported
Please enable JavaScript to view the comments powered by Disqus.