Repository: ValuesFeng/AndroidPicturePicker Branch: master Commit: 56144fcb4db6 Files: 70 Total size: 127.1 KB Directory structure: gitextract_fhdrwt_g/ ├── .gitignore ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── io/ │ │ └── valuesfeng/ │ │ └── demo/ │ │ ├── MainActivity.java │ │ └── MainApp.java │ └── res/ │ ├── layout/ │ │ └── activity_main.xml │ ├── menu/ │ │ └── menu_main.xml │ ├── values/ │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── values-w820dp/ │ └── dimens.xml ├── build.gradle ├── gallery/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── io/ │ │ └── valuesfeng/ │ │ └── picker/ │ │ ├── ImageSelectActivity.java │ │ ├── MimeType.java │ │ ├── Picker.java │ │ ├── adapter/ │ │ │ ├── AlbumAdapter.java │ │ │ └── PictureAdapter.java │ │ ├── control/ │ │ │ ├── AlbumCollection.java │ │ │ ├── PictureCollection.java │ │ │ └── SelectedUriCollection.java │ │ ├── engine/ │ │ │ ├── GlideEngine.java │ │ │ ├── ImageLoaderEngine.java │ │ │ ├── LoadEngine.java │ │ │ └── PicassoEngine.java │ │ ├── loader/ │ │ │ ├── AlbumLoader.java │ │ │ └── PictureLoader.java │ │ ├── model/ │ │ │ ├── Album.java │ │ │ ├── Picture.java │ │ │ └── SelectionSpec.java │ │ ├── utils/ │ │ │ ├── BundleUtils.java │ │ │ ├── CloseableUtils.java │ │ │ ├── ExifInterfaceCompat.java │ │ │ ├── HandlerUtils.java │ │ │ ├── MediaStoreCompat.java │ │ │ ├── ParcelUtils.java │ │ │ ├── PhotoMetadataUtils.java │ │ │ └── PicturePickerUtils.java │ │ └── widget/ │ │ └── GridViewItemRelativeLayout.java │ └── res/ │ ├── anim/ │ │ ├── listview_down.xml │ │ ├── listview_fade_in.xml │ │ ├── listview_fade_out.xml │ │ └── listview_up.xml │ ├── drawable/ │ │ └── pick_photo_checkbox.xml │ ├── layout/ │ │ ├── activity_image_select.xml │ │ ├── activity_main.xml │ │ ├── include_select_image_top.xml │ │ ├── photopick_gridlist_item.xml │ │ └── photopick_list_item.xml │ ├── menu/ │ │ └── menu_main.xml │ ├── values/ │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ ├── values-en/ │ │ └── strings.xml │ ├── values-ja/ │ │ └── strings.xml │ ├── values-pt/ │ │ └── strings.xml │ └── values-w820dp/ │ └── dimens.xml ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat └── settings.gradle ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ #built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files bin/ gen/ # Local configuration file (sdk path, etc) local.properties # Windows thumbnail db Thumbs.db # OSX files .DS_Store # Eclipse project files .classpath .project # Android Studio .idea #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. .gradle build/ /*/out /*/build /*/*/build /*/*/production *.iws *.ipr *~ *.swp *.iml # gradle.properties app/mapping.txt proguard/lib/proguard.jar ================================================ FILE: README.md ================================================ # AndroidPicturePicker ##Thanks for : [Laevatein](https://github.com/nohana/Laevatein):Photo image selection activity set library. Currently under development. [Picasso](https://github.com/square/picasso):A powerful image downloading and caching library for Android [Glide](https://github.com/bumptech/glide):An image loading and caching library for Android focused on smooth scrolling [Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader):Powerful and flexible library for loading, caching and displaying images on Android. ##Screen Shot ![gallery](http://7sby47.com5.z0.glb.clouddn.com/screenshot1.jpg-hdpi) ![gallery2](http://7sby47.com5.z0.glb.clouddn.com/screenshot2.jpg-hdpi) ## Usage Call photo image selection activity by the following code snipet. ```java public void onClickButton(View view) { Picker.from(this) .count(3) .enableCamera(true) .setEngine(new GlideEngine()) .forResult(REQUEST_CODE_CHOOSE); } ``` You can use different Image Loader, Picker provide 3 default Loader Engine: 1.GlideEngine 2.PicassoEngine 3.ImageLoaderEngine or you can use custom engine , just like ```java public static class CustomEngine implements LoadEngine { @Override public void displayImage(String path, ImageView imageView) { Log.i("picture", path); } @Override public void displayCameraItem(ImageView imageView) { } @Override public void scrolling(GridView view) { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { } public CustomEngine() { } protected CustomEngine(Parcel in) { } public static final Creator CREATOR = new Creator() { public CustomEngine createFromParcel(Parcel source) { return new CustomEngine(source); } public CustomEngine[] newArray(int size) { return new CustomEngine[size]; } }; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) { mSelected = PicturePickerUtils.obtainResult(data); for (Uri u : mSelected) { Log.i("picture", u.getPath()); } } } ``` Please note that LoadEngine is extends Parcelable. ##Download Gradle ```gradle repositories { maven { url "https://jitpack.io" } } dependencies { compile 'com.github.valuesfeng:androidpicturepicker:1.0.0' } ``` ##wait achieve 1. Iamge quality ([quality](https://github.com/ValuesFeng/AndroidPicturePicker/blob/master/gallery%2Fsrc%2Fmain%2Fjava%2Fio%2Fvaluesfeng%2Fpicker%2FPicker.java)); 2. Select Type ([MimeType](https://github.com/ValuesFeng/AndroidPicturePicker/blob/master/gallery%2Fsrc%2Fmain%2Fjava%2Fio%2Fvaluesfeng%2Fpicker%2FMimeType.java)); help me…… ##License Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: app/.gitignore ================================================ /build ================================================ FILE: app/build.gradle ================================================ apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "io.valuesfeng.demo" minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } repositories { flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3' compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.squareup.picasso:picasso:2.5.2' // compile(name: 'gallery-release', ext: 'aar') compile project(':gallery') } ================================================ FILE: app/proguard-rules.pro ================================================ # Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in D:\DevelopmentTools\Android\sdk/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} ================================================ FILE: app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: app/src/main/java/io/valuesfeng/demo/MainActivity.java ================================================ package io.valuesfeng.demo; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Parcel; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.View; import android.widget.GridView; import android.widget.ImageView; import java.util.List; import io.valuesfeng.picker.MimeType; import io.valuesfeng.picker.Picker; import io.valuesfeng.picker.engine.LoadEngine; import io.valuesfeng.picker.engine.GlideEngine; import io.valuesfeng.picker.utils.PicturePickerUtils; public class MainActivity extends FragmentActivity { public static final int REQUEST_CODE_CHOOSE = 1; private List mSelected; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_CHOOSE && resultCode == RESULT_OK) { mSelected = PicturePickerUtils.obtainResult(data); for (Uri u : mSelected) { Log.i("picture", u.getPath()); } } } public void onClickButton(View view) { Picker.from(this) .count(3) .enableCamera(true) .setEngine(new GlideEngine()) // .setEngine(new PicassoEngine()) // .setEngine(new ImageLoaderEngine()) // .setEngine(new CustomEngine()) .forResult(REQUEST_CODE_CHOOSE); } static class CustomEngine implements LoadEngine { @Override public void displayImage(String path, ImageView imageView) { Log.i("picture", path); } @Override public void displayCameraItem(ImageView imageView) { } @Override public void scrolling(GridView view) { } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { } public CustomEngine() { } protected CustomEngine(Parcel in) { } public static final Creator CREATOR = new Creator() { public CustomEngine createFromParcel(Parcel source) { return new CustomEngine(source); } public CustomEngine[] newArray(int size) { return new CustomEngine[size]; } }; } } ================================================ FILE: app/src/main/java/io/valuesfeng/demo/MainApp.java ================================================ package io.valuesfeng.demo; import android.app.Application; import android.graphics.Bitmap; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; /** * Created by laputan on 15-6-8. */ public class MainApp extends Application { @Override public void onCreate() { super.onCreate(); DisplayImageOptions userOptions = new DisplayImageOptions.Builder() .cacheInMemory(true).cacheOnDisk(true). showImageForEmptyUri(R.drawable.image_not_exist). showImageOnLoading(R.drawable.image_not_exist). showImageOnFail(R.drawable.image_not_exist). imageScaleType(ImageScaleType.EXACTLY). bitmapConfig(Bitmap.Config.RGB_565). considerExifParams(true) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(getApplicationContext()) .diskCacheFileCount(200) .threadPoolSize(Thread.NORM_PRIORITY) // .denyCacheImageMultipleSizesInMemory() // .memoryCacheSize(10 * 1024 * 1024) .defaultDisplayImageOptions(userOptions) .build(); ImageLoader.getInstance().init(config); } } ================================================ FILE: app/src/main/res/layout/activity_main.xml ================================================