├── README.md
├── androidstudio_version
├── .gitignore
├── .idea
│ ├── .name
│ ├── compiler.xml
│ ├── copyright
│ │ └── profiles_settings.xml
│ ├── encodings.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── runConfigurations.xml
│ └── vcs.xml
├── app
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── qiao
│ │ │ └── imageselector
│ │ │ ├── ImageAdapter.java
│ │ │ ├── MainActivity.java
│ │ │ └── old
│ │ │ ├── DemoActivity.java
│ │ │ └── ImageBrowserActivity.java
│ │ └── res
│ │ ├── layout
│ │ └── activity_main.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values-v19
│ │ └── styles.xml
│ │ ├── values-v21
│ │ └── styles.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── library
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── qiao
│ │ │ ├── activity
│ │ │ └── ContainerActivity.java
│ │ │ ├── adapter
│ │ │ ├── BaseAdapter.java
│ │ │ ├── ImageCursorAdapter.java
│ │ │ └── RecyclerViewCursorAdapter.java
│ │ │ ├── bean
│ │ │ ├── Bucket.java
│ │ │ └── SelectorParamContext.java
│ │ │ ├── fragment
│ │ │ ├── ImageBrowserFragment.java
│ │ │ └── ImageSelectorFragment.java
│ │ │ ├── photoview
│ │ │ ├── ImageOption.java
│ │ │ ├── PhotoView.java
│ │ │ └── RotateGestureDetector.java
│ │ │ ├── util
│ │ │ ├── AnimUtil.java
│ │ │ ├── ImageLoadUtil.java
│ │ │ ├── MediaHelper.java
│ │ │ └── Util.java
│ │ │ └── view
│ │ │ ├── ActionSheet.java
│ │ │ ├── BucketView.java
│ │ │ ├── ImageItemView.java
│ │ │ ├── MaskView.java
│ │ │ └── PageImageView.java
│ │ └── res
│ │ ├── anim
│ │ ├── translate_down.xml
│ │ └── translate_up_current.xml
│ │ ├── drawable-hdpi
│ │ ├── actionsheet_button1_normal.9.png
│ │ ├── actionsheet_button1_press.9.png
│ │ ├── arrow_down.png
│ │ ├── bucket_border_bg.png
│ │ ├── ic_launcher.png
│ │ └── pic_default.png
│ │ ├── drawable-xhdpi
│ │ ├── actionsheet_button_bottom_n.9.png
│ │ ├── actionsheet_button_bottom_p.9.png
│ │ ├── actionsheet_button_center_n.9.png
│ │ ├── actionsheet_button_center_p.9.png
│ │ ├── actionsheet_button_single_n.9.png
│ │ ├── actionsheet_button_single_p.9.png
│ │ ├── actionsheet_button_top_n.9.png
│ │ ├── actionsheet_button_top_p.9.png
│ │ ├── arrow_up.png
│ │ ├── btn_back_nor.png
│ │ ├── btn_back_sel.png
│ │ ├── ic_launcher.png
│ │ ├── image_checked.png
│ │ ├── next_indicator.png
│ │ ├── picker_browser_n.9.png
│ │ └── picker_browser_p.9.png
│ │ ├── drawable
│ │ ├── actionsheet_button1.xml
│ │ ├── actionsheet_button_bottom.xml
│ │ ├── actionsheet_button_center.xml
│ │ ├── actionsheet_button_single.xml
│ │ ├── actionsheet_button_top.xml
│ │ ├── btn_back_selector.xml
│ │ ├── btn_green_shape_selector.xml
│ │ └── picker_browser.xml
│ │ ├── layout
│ │ ├── activity_image_browser.xml
│ │ ├── bucket_item.xml
│ │ ├── checked_image_item.xml
│ │ ├── empty_linear_layout.xml
│ │ └── fragment_image_selector.xml
│ │ └── values
│ │ ├── strings.xml
│ │ └── styles.xml
├── pre-lollipop-activity-transition
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── kogitune
│ │ │ └── pre_lollipop_activity_transition
│ │ │ └── ApplicationTest.java
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── kogitune
│ │ └── activity_transition
│ │ ├── ActivityTransition.java
│ │ ├── ActivityTransitionLauncher.java
│ │ ├── BuildConfigUtils.java
│ │ ├── ExitActivityTransition.java
│ │ ├── core
│ │ ├── MoveData.java
│ │ ├── TransitionAnimation.java
│ │ ├── TransitionBundleFactory.java
│ │ └── TransitionData.java
│ │ └── fragment
│ │ ├── ExitFragmentTransition.java
│ │ ├── FragmentTransition.java
│ │ └── FragmentTransitionLauncher.java
└── settings.gradle
├── eclipse_version_1.0
├── .classpath
├── .project
├── .settings
│ └── org.eclipse.jdt.core.prefs
├── AndroidManifest.xml
├── README.md
├── bin
│ ├── AndroidManifest.xml
│ ├── ImageSelector.apk
│ ├── classes.dex
│ ├── classes
│ │ └── com
│ │ │ └── qiao
│ │ │ ├── activity
│ │ │ ├── DemoActivity.class
│ │ │ ├── ImageBrowserActivity$1.class
│ │ │ ├── ImageBrowserActivity$ImagePagerAdapter$1.class
│ │ │ ├── ImageBrowserActivity$ImagePagerAdapter.class
│ │ │ ├── ImageBrowserActivity.class
│ │ │ ├── ImageSelectorActivty$1.class
│ │ │ ├── ImageSelectorActivty$2.class
│ │ │ ├── ImageSelectorActivty$3.class
│ │ │ ├── ImageSelectorActivty$4.class
│ │ │ ├── ImageSelectorActivty$5.class
│ │ │ ├── ImageSelectorActivty$6$1.class
│ │ │ ├── ImageSelectorActivty$6.class
│ │ │ ├── ImageSelectorActivty$7.class
│ │ │ ├── ImageSelectorActivty$8$1.class
│ │ │ ├── ImageSelectorActivty$8.class
│ │ │ ├── ImageSelectorActivty$9.class
│ │ │ └── ImageSelectorActivty.class
│ │ │ ├── adapter
│ │ │ ├── BaseAdapter.class
│ │ │ ├── ImageCursorAdapter$1.class
│ │ │ └── ImageCursorAdapter.class
│ │ │ ├── bean
│ │ │ ├── Bucket.class
│ │ │ └── SelectorParamContext.class
│ │ │ ├── fragment
│ │ │ ├── ImageBrowserFragment$1.class
│ │ │ ├── ImageBrowserFragment$ImagePagerAdapter$1.class
│ │ │ ├── ImageBrowserFragment$ImagePagerAdapter.class
│ │ │ ├── ImageBrowserFragment.class
│ │ │ ├── ImageSelectorFragment$1.class
│ │ │ ├── ImageSelectorFragment$2.class
│ │ │ ├── ImageSelectorFragment$3.class
│ │ │ ├── ImageSelectorFragment$4.class
│ │ │ ├── ImageSelectorFragment$5.class
│ │ │ ├── ImageSelectorFragment$6$1.class
│ │ │ ├── ImageSelectorFragment$6.class
│ │ │ ├── ImageSelectorFragment$7.class
│ │ │ ├── ImageSelectorFragment$8$1.class
│ │ │ ├── ImageSelectorFragment$8.class
│ │ │ ├── ImageSelectorFragment$9.class
│ │ │ └── ImageSelectorFragment.class
│ │ │ ├── imageselector
│ │ │ ├── BuildConfig.class
│ │ │ ├── R$anim.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$string.class
│ │ │ ├── R$style.class
│ │ │ └── R.class
│ │ │ ├── util
│ │ │ ├── AnimUtil$OnAnimationEndListener.class
│ │ │ ├── AnimUtil$OnAnimationRepeatListener.class
│ │ │ ├── AnimUtil$OnAnimationStartListener.class
│ │ │ ├── AnimUtil.class
│ │ │ ├── ImageLoadUtil$1$1.class
│ │ │ ├── ImageLoadUtil$1.class
│ │ │ ├── ImageLoadUtil$2.class
│ │ │ ├── ImageLoadUtil$3.class
│ │ │ ├── ImageLoadUtil$4.class
│ │ │ ├── ImageLoadUtil$ImageLoadListener.class
│ │ │ ├── ImageLoadUtil$ImageSize.class
│ │ │ ├── ImageLoadUtil$ImgBeanHolder.class
│ │ │ ├── ImageLoadUtil$Type.class
│ │ │ ├── ImageLoadUtil.class
│ │ │ ├── MediaHelper.class
│ │ │ └── Util.class
│ │ │ └── view
│ │ │ ├── ActionSheet$1.class
│ │ │ ├── ActionSheet$2.class
│ │ │ ├── ActionSheet$3.class
│ │ │ ├── ActionSheet$4.class
│ │ │ ├── ActionSheet$5.class
│ │ │ ├── ActionSheet$6.class
│ │ │ ├── ActionSheet$Action1.class
│ │ │ ├── ActionSheet$Func.class
│ │ │ ├── ActionSheet.class
│ │ │ ├── BucketView.class
│ │ │ ├── CheckedImageView.class
│ │ │ ├── MaskView$1.class
│ │ │ ├── MaskView$2.class
│ │ │ ├── MaskView$MaskListener.class
│ │ │ ├── MaskView.class
│ │ │ └── PageImageView.class
│ ├── dexedLibs
│ │ ├── android-support-v4-5312ceeeac931ab61a0b0bfddd54180e.jar
│ │ ├── android-support-v4-bc12fc50ee1df56c4b748bd198ebe9f0.jar
│ │ ├── photoview-0d4f067b5a018540d959e0cb20817194.jar
│ │ └── photoview-36c07f5315d83923e4b8d17ea1f113e1.jar
│ ├── jarlist.cache
│ ├── res
│ │ └── crunch
│ │ │ ├── drawable-hdpi
│ │ │ ├── actionsheet_button1_normal.9.png
│ │ │ ├── actionsheet_button1_press.9.png
│ │ │ ├── arrow_down.png
│ │ │ ├── bucket_border_bg.png
│ │ │ ├── ic_launcher.png
│ │ │ └── pic_default.png
│ │ │ └── drawable-xhdpi
│ │ │ ├── actionsheet_button_bottom_n.9.png
│ │ │ ├── actionsheet_button_bottom_p.9.png
│ │ │ ├── actionsheet_button_center_n.9.png
│ │ │ ├── actionsheet_button_center_p.9.png
│ │ │ ├── actionsheet_button_single_n.9.png
│ │ │ ├── actionsheet_button_single_p.9.png
│ │ │ ├── actionsheet_button_top_n.9.png
│ │ │ ├── actionsheet_button_top_p.9.png
│ │ │ ├── arrow_up.png
│ │ │ ├── btn_back_nor.png
│ │ │ ├── btn_back_sel.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── image_checked.png
│ │ │ ├── next_indicator.png
│ │ │ ├── picker_browser_n.9.png
│ │ │ └── picker_browser_p.9.png
│ └── resources.ap_
├── gen
│ └── com
│ │ └── qiao
│ │ └── imageselector
│ │ ├── BuildConfig.java
│ │ └── R.java
├── ic_launcher-web.png
├── libs
│ ├── android-support-v4.jar
│ └── photoview.jar
├── lint.xml
├── proguard-project.txt
├── project.properties
├── res
│ ├── anim
│ │ ├── translate_down.xml
│ │ └── translate_up_current.xml
│ ├── drawable-hdpi
│ │ ├── actionsheet_button1_normal.9.png
│ │ ├── actionsheet_button1_press.9.png
│ │ ├── arrow_down.png
│ │ ├── bucket_border_bg.png
│ │ ├── ic_launcher.png
│ │ └── pic_default.png
│ ├── drawable-xhdpi
│ │ ├── actionsheet_button_bottom_n.9.png
│ │ ├── actionsheet_button_bottom_p.9.png
│ │ ├── actionsheet_button_center_n.9.png
│ │ ├── actionsheet_button_center_p.9.png
│ │ ├── actionsheet_button_single_n.9.png
│ │ ├── actionsheet_button_single_p.9.png
│ │ ├── actionsheet_button_top_n.9.png
│ │ ├── actionsheet_button_top_p.9.png
│ │ ├── arrow_up.png
│ │ ├── btn_back_nor.png
│ │ ├── btn_back_sel.png
│ │ ├── ic_launcher.png
│ │ ├── image_checked.png
│ │ ├── next_indicator.png
│ │ ├── picker_browser_n.9.png
│ │ └── picker_browser_p.9.png
│ ├── drawable
│ │ ├── actionsheet_button1.xml
│ │ ├── actionsheet_button_bottom.xml
│ │ ├── actionsheet_button_center.xml
│ │ ├── actionsheet_button_single.xml
│ │ ├── actionsheet_button_top.xml
│ │ ├── btn_back_selector.xml
│ │ ├── btn_green_shape_selector.xml
│ │ └── picker_browser.xml
│ ├── layout
│ │ ├── activity_image_browser.xml
│ │ ├── activity_image_selector.xml
│ │ ├── bucket_item.xml
│ │ └── checked_image_item.xml
│ └── values
│ │ ├── strings.xml
│ │ └── styles.xml
└── src
│ └── com
│ └── qiao
│ ├── activity
│ ├── DemoActivity.java
│ ├── ImageBrowserActivity.java
│ └── ImageSelectorActivty.java
│ ├── adapter
│ ├── BaseAdapter.java
│ └── ImageCursorAdapter.java
│ ├── bean
│ ├── Bucket.java
│ └── SelectorParamContext.java
│ ├── fragment
│ ├── ImageBrowserFragment.java
│ └── ImageSelectorFragment.java
│ ├── util
│ ├── AnimUtil.java
│ ├── ImageLoadUtil.java
│ ├── MediaHelper.java
│ └── Util.java
│ └── view
│ ├── ActionSheet.java
│ ├── BucketView.java
│ ├── CheckedImageView.java
│ ├── MaskView.java
│ └── PageImageView.java
└── screenShot
├── ImageDemo.gif
├── device-1.png
├── device-2.png
└── device-3.png
/README.md:
--------------------------------------------------------------------------------
1 | # ImageSelector
2 | 本地选图控件,支持单选、多选和预览。注:实例中提供的图片质量(这里只提供选项,并没有实际压缩操作)
3 |
4 | ``v2.0`` **android studio**
5 |
6 | 
7 |
8 | - 1.修改AsyncTask查询图库为 CurSorLoader;
9 | - 2.更改ImageView显示方式,支持缩放、旋转;
10 | - 3.使用AppCompact、RecyclerView替换GridView;
11 | - 4.变更大图打开方式,添加过渡动画;
12 |
13 |
14 | ``1.0`` eclipse
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | # 如何使用
25 | ## 一、使用Activity方式
26 | ### 导入
27 | 1. 可以单独将此项目作为库(isLibrary)或者直接将java src和res文件拷贝至项目中,在 AndroidManifest.xml 中配置
28 |
29 | ```
30 |
31 |
32 | ```
33 |
34 | ### 使用
35 | 2. 使用指向ImageSelectorActivity的Intent ,传入参数为 SelectorParamContext
36 |
37 | ```
38 | public class SelectorParamContext implements Serializable{
39 |
40 | protected int maxCount;//最大选图数量
41 | protected boolean hasQulityMenu;//是否有图片清晰度选项
42 | protected boolean isHighQulity;//是否高清
43 | protected boolean isMult;//是否多选
44 | protected ArrayList selectedFile; //选中图片path
45 | ```
46 |
47 | ## 二、使用Fragment方式
48 | 1. 在你的页面添加Fragment,详情参见DemoActivity。用法同上。只是不用再AndroidManifest.xml 中配置
49 |
50 |
51 | ## 示例:
52 |
53 | ```
54 | /**
55 | *选图时调用
56 | **/
57 | public void startImageSelector(){
58 | Intent intent = new Intent(YourActivity , ImageSelectorActivity.class);
59 | SelectorParamContext params = new SelectorParamContext();
60 | params.setMult(true);
61 | params.setMaxCount(9);
62 | params.setHasQulityMenu(true);
63 | startActivityForResult(intent, requestCode);
64 | }
65 |
66 | /**
67 | *返回对象也为 SelectorParamContext
68 | **/
69 | @Override
70 | protected void onActivityResult(int requestCode, int resultCode, Intent data) {
71 |
72 | if (resultCode == Activity.RESULT_OK) {
73 | SelectorParamContext params = (SelectorParamContext)data.getSerializableExtra(SelectorParamContext.TAG_SELECTOR);
74 | //你的处理逻辑
75 | }
76 | }
77 | ```
78 |
--------------------------------------------------------------------------------
/androidstudio_version/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/.name:
--------------------------------------------------------------------------------
1 | androidstudio_version
--------------------------------------------------------------------------------
/androidstudio_version/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
20 |
21 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/androidstudio_version/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/androidstudio_version/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/androidstudio_version/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 23
5 | buildToolsVersion "23.0.2"
6 |
7 | defaultConfig {
8 | applicationId "com.qiao.imageselector"
9 | minSdkVersion 9
10 | targetSdkVersion 23
11 | versionCode 1
12 | versionName "1.0"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | }
21 |
22 | dependencies {
23 | compile fileTree(include: ['*.jar'], dir: 'libs')
24 | compile project(':library')
25 | compile 'com.android.support:recyclerview-v7:23.1.1'
26 | compile project(':pre-lollipop-activity-transition')
27 | }
28 |
--------------------------------------------------------------------------------
/androidstudio_version/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\AndroidSDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
12 |
13 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/java/com/qiao/imageselector/ImageAdapter.java:
--------------------------------------------------------------------------------
1 | package com.qiao.imageselector;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.FrameLayout;
10 | import android.widget.ImageView;
11 |
12 | import com.kogitune.activity_transition.ActivityTransitionLauncher;
13 | import com.qiao.activity.ContainerActivity;
14 | import com.qiao.fragment.ImageBrowserFragment;
15 | import com.qiao.util.ImageLoadUtil;
16 |
17 | import java.util.ArrayList;
18 |
19 | /**
20 | * Created by yuweichen on 15/12/10.
21 | */
22 | public class ImageAdapter extends RecyclerView.Adapter{
23 | private Context context;
24 | private ArrayList images = new ArrayList<>();
25 | private int widget;
26 | public ImageAdapter(Context context){
27 | this.context = context;
28 | widget = context.getResources().getDisplayMetrics().widthPixels / 3;
29 | }
30 |
31 | @Override
32 | public ImageHolder onCreateViewHolder(ViewGroup parent, int viewType) {
33 | return new ImageHolder(new ImageView(context));
34 | }
35 |
36 | @Override
37 | public void onBindViewHolder(ImageHolder holder, int position) {
38 | holder.setData(getItem(position));
39 | }
40 |
41 | public void addData(ArrayList images){
42 | this.images.addAll(images);
43 | notifyDataSetChanged();
44 | }
45 |
46 | public void clearAdapter(){
47 | this.images.clear();
48 | notifyDataSetChanged();
49 | }
50 |
51 | public String getItem(int position){
52 | return this.images.get(position);
53 | }
54 |
55 | @Override
56 | public int getItemCount() {
57 | return images.size();
58 | }
59 |
60 | class ImageHolder extends RecyclerView.ViewHolder{
61 | private ImageView imageView;
62 | public ImageHolder(View itemView) {
63 | super(itemView);
64 | imageView = (ImageView) itemView;
65 | FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(widget, ViewGroup.LayoutParams.WRAP_CONTENT);
66 | params.setMargins(3,3,3,3);
67 | imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
68 | imageView.setLayoutParams(params);
69 | }
70 |
71 | public void setData(final String imagePath){
72 | ImageLoadUtil.getInstance().loadImage(imagePath, imageView);
73 | imageView.setOnClickListener(new View.OnClickListener() {
74 | @Override
75 | public void onClick(View v) {
76 | // final Intent intent = new Intent(context, ImageBrowserActivity.class);
77 | final Intent intent = ContainerActivity.makeIntent(context, ImageBrowserFragment.class);
78 | intent.putExtra("currIndex",images.indexOf(imagePath));
79 | intent.putStringArrayListExtra("dataList",images);
80 | ActivityTransitionLauncher
81 | .with((Activity) context)
82 | .from(v)
83 | .launch(intent);
84 | }
85 | });
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/java/com/qiao/imageselector/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.qiao.imageselector;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.support.v7.widget.StaggeredGridLayoutManager;
8 | import android.view.View;
9 | import android.widget.Toast;
10 |
11 | import com.qiao.activity.ContainerActivity;
12 | import com.qiao.bean.SelectorParamContext;
13 | import com.qiao.fragment.ImageSelectorFragment;
14 | import com.qiao.imageselector.demo.R;
15 |
16 | import java.util.ArrayList;
17 |
18 | public class MainActivity extends AppCompatActivity {
19 | public static final int PICK_REQUEST_CODE = 10086;
20 |
21 | RecyclerView recyclerView;
22 | ImageAdapter imageAdapter;
23 | @Override
24 | protected void onCreate(Bundle savedInstanceState) {
25 | super.onCreate(savedInstanceState);
26 | setContentView(R.layout.activity_main);
27 |
28 | recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
29 | recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));
30 |
31 | imageAdapter = new ImageAdapter(this);
32 | recyclerView.setAdapter(imageAdapter);
33 | }
34 |
35 | public void clickPick(View view){
36 | /**
37 | *选图时调用
38 | **/
39 | Intent intent = ContainerActivity.makeIntent(this, ImageSelectorFragment.class);
40 | SelectorParamContext params = new SelectorParamContext();
41 | params.setMult(true);
42 | params.setMaxCount(9);
43 | params.setHasQulityMenu(true);
44 | startActivityForResult(intent, PICK_REQUEST_CODE);
45 | }
46 |
47 | @Override
48 | protected void onActivityResult(int requestCode, int resultCode, Intent data) {
49 | super.onActivityResult(requestCode, resultCode, data);
50 | if(resultCode!=RESULT_OK){
51 | return;
52 | }
53 |
54 | if(requestCode==PICK_REQUEST_CODE){
55 | SelectorParamContext params = (SelectorParamContext)data.getParcelableExtra(SelectorParamContext.TAG_SELECTOR);
56 | //你的处理逻辑
57 | ArrayList pick = params.getSelectedFile();
58 | Toast.makeText(this,"pick size:"+pick.size(),Toast.LENGTH_SHORT).show();
59 | imageAdapter.clearAdapter();
60 | imageAdapter.addData(pick);
61 | }
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/java/com/qiao/imageselector/old/DemoActivity.java:
--------------------------------------------------------------------------------
1 | package com.qiao.imageselector.old;
2 |
3 | import android.os.Bundle;
4 | import android.support.v4.app.Fragment;
5 | import android.support.v4.app.FragmentActivity;
6 | import android.support.v4.app.FragmentManager;
7 | import android.support.v4.app.FragmentTransaction;
8 | import android.view.View;
9 | import android.widget.FrameLayout;
10 |
11 | import com.qiao.fragment.ImageSelectorFragment;
12 |
13 | public class DemoActivity extends FragmentActivity{
14 | protected View containerView;
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | containerView = new FrameLayout(this);
20 | containerView.setId(android.R.id.content);
21 | setContentView(containerView);
22 |
23 | initFragment();
24 | }
25 |
26 | private void initFragment() {
27 | Fragment fragment = new ImageSelectorFragment();
28 | FragmentManager fm = getSupportFragmentManager();
29 | FragmentTransaction ft = fm.beginTransaction();
30 | ft.add(android.R.id.content, fragment);
31 | ft.commitAllowingStateLoss();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/values-v19/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #0072c6
4 | #0072c6
5 | #0288D1
6 |
7 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | ImageSelector
3 |
4 |
--------------------------------------------------------------------------------
/androidstudio_version/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
13 |
14 |
--------------------------------------------------------------------------------
/androidstudio_version/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:1.5.0'
9 |
10 | // NOTE: Do not place your application dependencies here; they belong
11 | // in the individual module build.gradle files
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | jcenter()
18 | }
19 | }
20 |
21 | task clean(type: Delete) {
22 | delete rootProject.buildDir
23 | }
24 |
--------------------------------------------------------------------------------
/androidstudio_version/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/androidstudio_version/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/androidstudio_version/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Oct 21 11:34:03 PDT 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
7 |
--------------------------------------------------------------------------------
/androidstudio_version/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/androidstudio_version/library/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/androidstudio_version/library/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 23
5 | buildToolsVersion "23.0.2"
6 |
7 | defaultConfig {
8 | minSdkVersion 9
9 | targetSdkVersion 23
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | compile fileTree(include: ['*.jar'], dir: 'libs')
23 | compile 'com.android.support:appcompat-v7:23.1.1'
24 | compile 'com.android.support:recyclerview-v7:23.1.1'
25 | compile project(':pre-lollipop-activity-transition')
26 | }
27 |
--------------------------------------------------------------------------------
/androidstudio_version/library/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in D:\AndroidSDK/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/activity/ContainerActivity.java:
--------------------------------------------------------------------------------
1 | package com.qiao.activity;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 | import android.support.v4.app.Fragment;
7 | import android.support.v4.app.FragmentManager;
8 | import android.support.v4.app.FragmentTransaction;
9 | import android.support.v7.app.AppCompatActivity;
10 | import android.view.View;
11 | import android.widget.FrameLayout;
12 |
13 | import com.qiao.fragment.ImageSelectorFragment;
14 |
15 | public class ContainerActivity extends AppCompatActivity{
16 | protected View containerView;
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | containerView = new FrameLayout(this);
22 | containerView.setId(android.R.id.content);
23 | setContentView(containerView);
24 |
25 | initFragment();
26 | }
27 |
28 | private void initFragment() {
29 | Intent intent = getIntent();
30 | Class> fragmentClass = (Class>) intent.getSerializableExtra("class");
31 | if(fragmentClass == null){
32 | fragmentClass = ImageSelectorFragment.class;
33 | }
34 | try {
35 | Fragment fragment = (Fragment) fragmentClass.newInstance();
36 | FragmentManager fm = getSupportFragmentManager();
37 | FragmentTransaction ft = fm.beginTransaction();
38 | ft.add(android.R.id.content, fragment);
39 | ft.commitAllowingStateLoss();
40 | }catch (Exception e) {
41 | e.printStackTrace();
42 | }
43 | }
44 |
45 | public static Intent makeIntent(Context context, Class extends Fragment> clazz) {
46 | Intent intent = new Intent(context, ContainerActivity.class);
47 | intent.putExtra("class", clazz);
48 | return intent;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/adapter/BaseAdapter.java:
--------------------------------------------------------------------------------
1 | package com.qiao.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 |
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | public abstract class BaseAdapter extends android.widget.BaseAdapter {
11 |
12 | protected Context context;
13 | protected ArrayList dataList;
14 |
15 | public BaseAdapter(Context context, ArrayList models) {
16 | this.context = context;
17 | if (models == null)
18 | this.dataList = new ArrayList();
19 | else
20 | this.dataList = models;
21 | }
22 |
23 | @Override
24 | public int getCount() {
25 | if (dataList != null) {
26 | return dataList.size();
27 | }
28 | return 0;
29 | }
30 |
31 | @Override
32 | public Object getItem(int position) {
33 | return dataList.get(position);
34 | }
35 |
36 | @Override
37 | public long getItemId(int position) {
38 | return position;
39 | }
40 |
41 | @Override
42 | public abstract View getView(int position, View convertView, ViewGroup parent);
43 |
44 | /** 更新数据 */
45 | public void update(List models) {
46 | if (models == null)
47 | return;
48 | this.dataList.clear();
49 | dataList.addAll(models);
50 | notifyDataSetChanged();
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/adapter/ImageCursorAdapter.java:
--------------------------------------------------------------------------------
1 | package com.qiao.adapter;
2 |
3 | import android.content.Context;
4 | import android.database.Cursor;
5 | import android.view.View;
6 | import android.view.View.OnClickListener;
7 | import android.view.ViewGroup;
8 |
9 | import com.qiao.util.MediaHelper;
10 | import com.qiao.view.ImageItemView;
11 |
12 | import java.util.ArrayList;
13 | import java.util.List;
14 |
15 | /**
16 | * 加载图盘的游标适配器
17 | * @author Qiao
18 | * 2015-3-18
19 | */
20 | public class ImageCursorAdapter extends android.support.v4.widget.CursorAdapter{
21 | private List selectedLsit;
22 |
23 | public ImageCursorAdapter(Context context, Cursor c) {
24 | super(context, c);
25 | selectedLsit = new ArrayList();
26 | }
27 |
28 | public ImageCursorAdapter(Context context, Cursor c,ArrayList list) {
29 | super(context, c);
30 | selectedLsit = list;
31 | }
32 |
33 | @Override
34 | public void bindView(final View view, Context context, Cursor cursor) {
35 | final String path = cursor.getString(MediaHelper.DATA_URL);
36 | ((ImageItemView)view).setView(path, selectedLsit.contains(path));
37 | view.setOnClickListener(new OnClickListener() {
38 | @Override
39 | public void onClick(View v) {
40 | onItemClick((ImageItemView)view,path);
41 | }
42 | });
43 | }
44 |
45 | @Override
46 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
47 | return new ImageItemView(context) ;
48 | }
49 |
50 | @Override
51 | public String getItem(int position) {
52 | Cursor cursor = (Cursor)super.getItem(position);
53 | if(cursor!=null)
54 | return cursor.getString(MediaHelper.DATA_URL);
55 | return null;
56 | }
57 |
58 | public void onItemClick(ImageItemView item, String path){
59 |
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/adapter/RecyclerViewCursorAdapter.java:
--------------------------------------------------------------------------------
1 | package com.qiao.adapter;
2 |
3 | import android.database.Cursor;
4 | import android.support.v7.widget.RecyclerView;
5 |
6 | public abstract class RecyclerViewCursorAdapter
7 | extends RecyclerView.Adapter
8 | {
9 | private Cursor cursor;
10 |
11 | public void swapCursor(final Cursor cursor)
12 | {
13 | this.cursor = cursor;
14 | this.notifyDataSetChanged();
15 | }
16 |
17 | @Override
18 | public int getItemCount()
19 | {
20 | return this.cursor != null
21 | ? this.cursor.getCount()
22 | : 0;
23 | }
24 |
25 | public Cursor getItem(final int position)
26 | {
27 | if (this.cursor != null && !this.cursor.isClosed())
28 | {
29 | this.cursor.moveToPosition(position);
30 | }
31 |
32 | return this.cursor;
33 | }
34 |
35 | public Cursor getCursor()
36 | {
37 | return this.cursor;
38 | }
39 |
40 | @Override
41 | public final void onBindViewHolder(final VH holder, final int position)
42 | {
43 | final Cursor cursor = this.getItem(position);
44 | this.onBindViewHolder(holder, cursor);
45 | }
46 |
47 | public abstract void onBindViewHolder(final VH holder, final Cursor cursor);
48 | }
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/bean/Bucket.java:
--------------------------------------------------------------------------------
1 | package com.qiao.bean;
2 |
3 | /**
4 | * 相册
5 | * @author qiao
6 | * 2015-3-18
7 | */
8 | public class Bucket {
9 | public int bucketId;
10 | public String bucketName;
11 | public String bucketUrl = null;
12 | public int count;
13 |
14 | public Bucket(int id, String name, String url) {
15 | bucketId = id;
16 | bucketName = ensureNotNull(name);
17 | bucketUrl = url;
18 | count = 0;
19 | }
20 |
21 | @Override
22 | public int hashCode() {
23 | return bucketId;
24 | }
25 |
26 | @Override
27 | public boolean equals(Object object) {
28 | if (!(object instanceof Bucket)) return false;
29 | Bucket entry = (Bucket) object;
30 | return bucketId == entry.bucketId;
31 | }
32 |
33 | public String ensureNotNull(String value) {
34 | return value == null ? "" : value;
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/bean/SelectorParamContext.java:
--------------------------------------------------------------------------------
1 | package com.qiao.bean;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 |
6 | import java.util.ArrayList;
7 |
8 | /**
9 | * 图片基础数据选项
10 | * @author qiao
11 | * 2015-3-20
12 | */
13 | public class SelectorParamContext implements Parcelable {
14 |
15 | protected int maxCount;//最大选图数量
16 | protected boolean hasQulityMenu;//是否有图片清晰度选项
17 | protected boolean isHighQulity;//是否高清
18 | protected boolean isMult;//是否多选
19 | protected ArrayList selectedFile; //选中图片path
20 |
21 | /**
22 | * 通用常量
23 | */
24 | public static final String TAG_SELECTOR = "SelectorParamContext";
25 | private static final long serialVersionUID = 1L;
26 | public static final int MAXCOUNT = 9;
27 | public static final int mcolor = 0xff0072c6;
28 | public static final int gcolor = 0xffcccccc;
29 | public static final String []menuItems = new String[] {"标清","原图"};
30 |
31 | public SelectorParamContext() {
32 | maxCount = MAXCOUNT;
33 | isMult = true;
34 | hasQulityMenu = true;
35 | isHighQulity = false;
36 | selectedFile = new ArrayList();
37 | }
38 |
39 | public int getMaxCount() {
40 | return maxCount;
41 | }
42 |
43 | public void setMaxCount(int maxCount) {
44 | this.maxCount = maxCount;
45 | }
46 |
47 | public boolean isMult() {
48 | return isMult;
49 | }
50 |
51 | public void setMult(boolean isMult) {
52 | this.isMult = isMult;
53 | }
54 |
55 | public boolean hasQulityMenu() {
56 | return hasQulityMenu;
57 | }
58 |
59 | public void setHasQulityMenu(boolean hasQulityMenu) {
60 | this.hasQulityMenu = hasQulityMenu;
61 | }
62 |
63 | public boolean isHighQulity() {
64 | return isHighQulity;
65 | }
66 |
67 | public void setHighQulity(boolean isHighQulity) {
68 | this.isHighQulity = isHighQulity;
69 | }
70 |
71 | public ArrayList getSelectedFile() {
72 | return selectedFile;
73 | }
74 |
75 | public void setSelectedFile(ArrayList selectedFile) {
76 | this.selectedFile = selectedFile;
77 | }
78 |
79 | public String getPercent(){
80 | return selectedFile.size()+"/"+getMaxCount();
81 | }
82 |
83 | public String getQuality(){
84 | return menuItems[isHighQulity?1:0];
85 | }
86 |
87 | public boolean isAvaliable(){
88 | return selectedFile.size() CREATOR = new Parcelable.Creator() {
126 | public SelectorParamContext createFromParcel(Parcel source) {
127 | return new SelectorParamContext(source);
128 | }
129 |
130 | public SelectorParamContext[] newArray(int size) {
131 | return new SelectorParamContext[size];
132 | }
133 | };
134 | }
135 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/photoview/ImageOption.java:
--------------------------------------------------------------------------------
1 | package com.qiao.photoview;
2 |
3 | import android.graphics.RectF;
4 | import android.widget.ImageView;
5 |
6 | /**
7 | * Created by liuheng on 2015/8/19.
8 | */
9 | public class ImageOption {
10 | // 内部图片在整个窗口的位置
11 | RectF mRect = new RectF();
12 | // 控件在窗口的位置
13 | RectF mLocalRect = new RectF();
14 | RectF mImgRect = new RectF();
15 | RectF mWidgetRect = new RectF();
16 | float mScale;
17 | float mDegrees;
18 | ImageView.ScaleType mScaleType;
19 |
20 | public ImageOption(RectF rect, RectF local, RectF img, RectF widget, float scale, float degrees, ImageView.ScaleType scaleType) {
21 | mRect.set(rect);
22 | mLocalRect.set(local);
23 | mImgRect.set(img);
24 | mWidgetRect.set(widget);
25 | mScale = scale;
26 | mScaleType = scaleType;
27 | mDegrees = degrees;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/photoview/RotateGestureDetector.java:
--------------------------------------------------------------------------------
1 | package com.qiao.photoview;
2 |
3 | import android.view.MotionEvent;
4 |
5 | /**
6 | * Created by q2366 on 2015/10/12.
7 | */
8 | public class RotateGestureDetector {
9 |
10 | private static final int MAX_DEGREES_STEP = 120;
11 |
12 | private OnRotateListener mListener;
13 |
14 | private float mPrevSlope;
15 | private float mCurrSlope;
16 |
17 | private float x1;
18 | private float y1;
19 | private float x2;
20 | private float y2;
21 |
22 | public RotateGestureDetector(OnRotateListener l) {
23 | mListener = l;
24 | }
25 |
26 | public void onTouchEvent(MotionEvent event) {
27 |
28 | final int Action = event.getActionMasked();
29 |
30 | switch (Action) {
31 | case MotionEvent.ACTION_POINTER_DOWN:
32 | case MotionEvent.ACTION_POINTER_UP:
33 | if (event.getPointerCount() == 2) mPrevSlope = caculateSlope(event);
34 | break;
35 | case MotionEvent.ACTION_MOVE:
36 | if (event.getPointerCount() > 1) {
37 | mCurrSlope = caculateSlope(event);
38 |
39 | double currDegrees = Math.toDegrees(Math.atan(mCurrSlope));
40 | double prevDegrees = Math.toDegrees(Math.atan(mPrevSlope));
41 |
42 | double deltaSlope = currDegrees - prevDegrees;
43 |
44 | if (Math.abs(deltaSlope) <= MAX_DEGREES_STEP) {
45 | if (mListener != null)
46 | mListener.onRotate((float) deltaSlope, (x2 + x1) / 2, (y2 + y1) / 2);
47 | }
48 | mPrevSlope = mCurrSlope;
49 | }
50 | break;
51 | default:
52 | break;
53 | }
54 | }
55 |
56 | private float caculateSlope(MotionEvent event) {
57 | x1 = event.getX(0);
58 | y1 = event.getY(0);
59 | x2 = event.getX(1);
60 | y2 = event.getY(1);
61 | return (y2 - y1) / (x2 - x1);
62 | }
63 | }
64 |
65 | interface OnRotateListener {
66 | void onRotate(float degrees, float focusX, float focusY);
67 | }
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/util/AnimUtil.java:
--------------------------------------------------------------------------------
1 | package com.qiao.util;
2 |
3 | import android.content.Context;
4 | import android.graphics.drawable.AnimationDrawable;
5 | import android.view.View;
6 | import android.view.animation.Animation;
7 | import android.view.animation.Animation.AnimationListener;
8 | import android.view.animation.AnimationUtils;
9 | import android.view.animation.Interpolator;
10 | import android.view.animation.LinearInterpolator;
11 | import android.view.animation.TranslateAnimation;
12 |
13 | /**
14 | * 动画工具类
15 | *
16 | */
17 | public class AnimUtil implements AnimationListener {
18 |
19 | private Animation animation;
20 | private OnAnimationEndListener animationEndListener; // 动画完成监听器
21 | private OnAnimationStartListener animationStartListener; // 动画开始监听器
22 | private OnAnimationRepeatListener animationRepeatListener; // 动画重复时的监听器
23 |
24 | public AnimUtil(Context context, int resId) {
25 | this.animation = AnimationUtils.loadAnimation(context, resId);
26 | this.animation.setAnimationListener(this);
27 | }
28 |
29 | /** 自定义一个Translate类型的Animation */
30 | public AnimUtil(float fromXDelta, float toXDelta, float fromYDelta,
31 | float toYDelta) {
32 | animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta,
33 | toYDelta);
34 | }
35 |
36 | /** 两个动画之间的时间间隔 */
37 | public AnimUtil setStartOffSet(long startOffset) {
38 | animation.setStartOffset(startOffset);
39 | return this;
40 | }
41 |
42 | /** 设置一个动画的插入器 */
43 | public AnimUtil setInterpolator(Interpolator i) {
44 | animation.setInterpolator(i);
45 | return this;
46 | }
47 |
48 | public AnimUtil setLinearInterpolator() {
49 | animation.setInterpolator(new LinearInterpolator());
50 | return this;
51 | }
52 |
53 | /** 开始动画 */
54 | public void startAnimation(View view) {
55 | view.startAnimation(animation);
56 | }
57 |
58 | /** 开启一个帧动画 */
59 | public static void startAnimation(int resId, View view) {
60 | view.setBackgroundResource(resId);
61 | ((AnimationDrawable) view.getBackground()).start();
62 | }
63 |
64 | public AnimUtil setDuration(long durationMillis) {
65 | animation.setDuration(durationMillis);
66 | return this;
67 | }
68 |
69 | public AnimUtil setFillAfter(boolean fillAfter) {
70 | animation.setFillAfter(fillAfter);
71 | return this;
72 | }
73 |
74 | public interface OnAnimationEndListener {
75 | void onAnimationEnd(Animation animation);
76 | }
77 |
78 | public interface OnAnimationStartListener {
79 | void onAnimationStart(Animation animation);
80 | }
81 |
82 | public interface OnAnimationRepeatListener {
83 | void onAnimationRepeat(Animation animation);
84 | }
85 |
86 | public AnimUtil setOnAnimationEndLinstener(
87 | OnAnimationEndListener listener) {
88 | this.animationEndListener = listener;
89 | return this;
90 | }
91 |
92 | public AnimUtil setOnAnimationStartLinstener(
93 | OnAnimationStartListener listener) {
94 | this.animationStartListener = listener;
95 | return this;
96 | }
97 |
98 | public AnimUtil setOnAnimationRepeatLinstener(
99 | OnAnimationRepeatListener listener) {
100 | this.animationRepeatListener = listener;
101 | return this;
102 | }
103 |
104 | public void setAnimationListener(AnimationListener animationListener) {
105 | animation.setAnimationListener(animationListener);
106 | }
107 |
108 | @Override
109 | public void onAnimationStart(Animation animation) {
110 | if (this.animationStartListener != null) {
111 | this.animationStartListener.onAnimationStart(animation);
112 | }
113 | }
114 |
115 | @Override
116 | public void onAnimationEnd(Animation animation) {
117 | if (this.animationEndListener != null) {
118 | this.animationEndListener.onAnimationEnd(animation);
119 | }
120 | }
121 |
122 | @Override
123 | public void onAnimationRepeat(Animation animation) {
124 | if (this.animationRepeatListener != null) {
125 | this.animationRepeatListener.onAnimationRepeat(animation);
126 | }
127 | }
128 |
129 | }
130 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/util/Util.java:
--------------------------------------------------------------------------------
1 | package com.qiao.util;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 | import android.widget.ListView;
7 |
8 | import com.qiao.imageselector.R;
9 |
10 | import java.util.ArrayList;
11 | import java.util.List;
12 |
13 | public class Util {
14 | public static boolean isNullOrWhiteSpace(String text) {
15 | if (text == null)
16 | return true;
17 | return text.matches("^\\s*$");
18 | }
19 |
20 | public static void initListViewStyle(ListView listView) {
21 | listView.setDividerHeight(0);
22 | listView.setFadingEdgeLength(0);
23 | }
24 |
25 | public static void setItemStyle(ViewGroup viewGroup, int[] bgRes) {
26 | setItemStyle(viewGroup, bgRes, false);
27 | }
28 |
29 | public static void setItemStyle(ViewGroup viewGroup, int[] bgRes, boolean keepPadding) {
30 | boolean isVisible = false;
31 | View[] viewArray = new View[viewGroup.getChildCount()];
32 | for (int i = 0; i < viewArray.length; i++) {
33 | View child = viewArray[i] = viewGroup.getChildAt(i);
34 | isVisible |= child.getVisibility() == View.VISIBLE;
35 | }
36 | setItemStyle(viewArray, bgRes, keepPadding);
37 | viewGroup.setVisibility(isVisible ? View.VISIBLE : View.GONE);
38 | }
39 |
40 | public static void setItemStyle(View[] viewArray, int[] bgRes) {
41 | setItemStyle(viewArray, bgRes, false);
42 | }
43 |
44 | public static void setItemStyle(View[] viewArray, int[] bgRes, boolean keepPadding) {
45 | List layout = new ArrayList();
46 | for (int i = 0; i < viewArray.length; i++) {
47 | View v = viewArray[i];
48 | if (v.getVisibility() == View.VISIBLE) {
49 | layout.add(v);
50 | }
51 | }
52 | for (int i = 0, count = layout.size(); i < count; i++) {
53 | View view = layout.get(i);
54 | int l = view.getPaddingLeft();
55 | int t = view.getPaddingTop();
56 | int r = view.getPaddingRight();
57 | int b = view.getPaddingBottom();
58 | if (count == 1) {
59 | view.setBackgroundResource(bgRes[0]);
60 | } else if (count >= 2 && i == 0) {
61 | view.setBackgroundResource(bgRes[1]);
62 | } else if (count >= 2 && i == (count - 1)) {
63 | view.setBackgroundResource(bgRes[3]);
64 | } else {
65 | view.setBackgroundResource(bgRes[2]);
66 | }
67 | if (keepPadding) {
68 | view.setPadding(l, t, r, b);
69 | }
70 | }
71 | }
72 |
73 | public static int dp2px(Context context,int size){
74 | final float scale = context.getResources().getDisplayMetrics().density;
75 | return (int) (size * scale + 0.5f);
76 | }
77 |
78 | public static void showFromBottom(View view){
79 | view.setVisibility(View.VISIBLE);
80 | new AnimUtil(view.getContext(), R.anim.translate_up_current).setLinearInterpolator().startAnimation(
81 | view);
82 | }
83 |
84 | public static void hideInBottom(View view){
85 | new AnimUtil(view.getContext(), R.anim.translate_down).setLinearInterpolator().startAnimation(
86 | view);
87 | view.setVisibility(View.INVISIBLE);
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/view/BucketView.java:
--------------------------------------------------------------------------------
1 | package com.qiao.view;
2 |
3 |
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.view.LayoutInflater;
7 | import android.widget.FrameLayout;
8 | import android.widget.ImageView;
9 | import android.widget.TextView;
10 |
11 | import com.qiao.bean.Bucket;
12 | import com.qiao.imageselector.R;
13 | import com.qiao.util.ImageLoadUtil;
14 |
15 | /**
16 | * 相册列表
17 | * @author Qiao
18 | * 2015-3-18
19 | */
20 | public class BucketView extends FrameLayout{
21 |
22 | private ImageView imageView;
23 | private TextView nameTextView, countTextView;
24 | private Bucket bucket;
25 |
26 | public BucketView(Context context) {
27 | super(context);
28 | initialize();
29 | }
30 |
31 | public BucketView(Context context, AttributeSet attrs) {
32 | super(context, attrs);
33 | initialize();
34 | }
35 |
36 | private void initialize() {
37 | LayoutInflater.from(getContext()).inflate(R.layout.bucket_item, this);
38 | imageView = (ImageView) findViewById(R.id.iv_album_la);
39 | nameTextView = (TextView) findViewById(R.id.tv_name_la);
40 | countTextView = (TextView) findViewById(R.id.tv_count_la);
41 | }
42 |
43 | public void setView(Bucket bucket){
44 | this.bucket = bucket;
45 | ImageLoadUtil.getInstance(3,ImageLoadUtil.Type.LIFO).loadImage(bucket.bucketUrl, imageView);
46 | nameTextView.setText(bucket.bucketName);
47 | countTextView.setText(""+bucket.count);
48 | }
49 |
50 | public Bucket getBucket(){
51 | return bucket;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/view/ImageItemView.java:
--------------------------------------------------------------------------------
1 | package com.qiao.view;
2 |
3 | import android.content.Context;
4 | import android.graphics.Bitmap;
5 | import android.graphics.BitmapFactory;
6 | import android.graphics.Canvas;
7 | import android.graphics.Color;
8 | import android.graphics.Paint;
9 | import android.graphics.PorterDuff;
10 | import android.graphics.PorterDuffXfermode;
11 | import android.graphics.Xfermode;
12 | import android.util.AttributeSet;
13 | import android.util.Log;
14 | import android.view.ViewGroup;
15 | import android.widget.AbsListView;
16 | import android.widget.Checkable;
17 | import android.widget.ImageView;
18 |
19 | import com.qiao.imageselector.R;
20 | import com.qiao.util.ImageLoadUtil;
21 | import com.qiao.util.Util;
22 |
23 | /**
24 | * Created by Qiao on 2016/2/16.
25 | */
26 | public class ImageItemView extends ImageView implements Checkable {
27 | public final static String TAG = "ImageItemView:";
28 | private boolean isChecked;
29 | private Paint mPaint;
30 | private Xfermode mXfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER);
31 |
32 | private String path;
33 |
34 | public ImageItemView(Context context){
35 | super(context);
36 | initalize();
37 | }
38 |
39 | public ImageItemView(Context context, AttributeSet attrs) {
40 | super(context, attrs);
41 | initalize();
42 | }
43 |
44 | protected void initalize(){
45 | mPaint = new Paint();
46 | mPaint.setAntiAlias(true);
47 | setScaleType(ScaleType.CENTER_CROP);
48 | // setMaxHeight(Util.dp2px(getContext(),200));
49 | // setAdjustViewBounds(true);
50 | ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT,Util.dp2px(getContext(),100));
51 | setLayoutParams(lp);
52 | }
53 |
54 | @Override
55 | public void setChecked(boolean checked) {
56 | isChecked = checked;
57 | invalidate();
58 | }
59 |
60 | @Override
61 | public boolean isChecked() {
62 | return isChecked;
63 | }
64 |
65 | @Override
66 | public void toggle() {
67 | setChecked(!isChecked());
68 | }
69 |
70 | @Override
71 | protected void onDraw(Canvas canvas) {
72 | super.onDraw(canvas);
73 | if(isChecked){
74 | setColorFilter(0xcc0081e4);
75 | // Draw CheckedBitmap.
76 | mPaint.reset();
77 | mPaint.setFilterBitmap(false);
78 | mPaint.setXfermode(mXfermode);
79 |
80 | Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image_checked);
81 | float pad = bm.getWidth()/3;
82 | canvas.drawBitmap(bm,getWidth()-bm.getWidth()-pad,pad,mPaint);
83 | }else{
84 | setColorFilter(Color.TRANSPARENT);
85 | }
86 | }
87 |
88 | public void setView(String path,boolean isChecked){
89 | if (!Util.isNullOrWhiteSpace(path)) {
90 | this.path = path;
91 | setTag(TAG + path);
92 | Bitmap bm = ImageLoadUtil.getInstance().getBitmapFromLruCache(this,path);
93 | if(bm!=null){
94 | setImageBitmap(bm);
95 | Log.e("founded........","image bm"+path);
96 | }else{
97 | setImageResource(R.drawable.pic_default);
98 | }
99 | }else{
100 | setImageResource(R.drawable.pic_default);
101 | }
102 | setChecked(isChecked);
103 | }
104 |
105 | public void loadImage(){
106 | if (!Util.isNullOrWhiteSpace(path)) {
107 | ImageLoadUtil.getInstance(3,ImageLoadUtil.Type.LIFO).loadImage(path, this);
108 | }
109 | }
110 |
111 | public String getPath(){
112 | return path;
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/view/MaskView.java:
--------------------------------------------------------------------------------
1 |
2 | package com.qiao.view;
3 |
4 | import android.content.Context;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.view.animation.AlphaAnimation;
8 | import android.view.animation.Animation;
9 | import android.view.animation.Animation.AnimationListener;
10 | import android.widget.FrameLayout;
11 |
12 | public class MaskView extends FrameLayout {
13 |
14 | protected ViewGroup targetView;
15 | protected boolean isShowing;
16 | protected long durationMillis;
17 | protected boolean canCancel;
18 | protected MaskListener maskListener;
19 |
20 | public MaskView(Context context, ViewGroup targetView) {
21 | super(context);
22 | this.targetView = targetView;
23 | initialize();
24 | }
25 |
26 | protected void initialize() {
27 | setBackgroundColor(0x88000000);
28 | setVisibility(View.GONE);
29 | ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
30 | targetView.addView(this, lp);
31 | setOnClickListener(new OnClickListener() {
32 | @Override
33 | public void onClick(View v) {
34 | if (canCancel) {
35 | hide();
36 | }
37 | }
38 | });
39 | }
40 |
41 | public void setDurationMillis(long durationMillis) {
42 | this.durationMillis = durationMillis;
43 | }
44 |
45 | public void setCanCancel(boolean can) {
46 | this.canCancel = can;
47 | }
48 |
49 | public void show() {
50 | if (isShowing)
51 | return;
52 | isShowing = true;
53 | clearAnimation();
54 | setVisibility(View.VISIBLE);
55 | AlphaAnimation an = new AlphaAnimation(0, 1);
56 | an.setDuration(durationMillis);
57 | startAnimation(an);
58 | if (maskListener != null)
59 | maskListener.onShow();
60 | }
61 |
62 | public void hide() {
63 | if (!isShowing)
64 | return;
65 | isShowing = false;
66 | clearAnimation();
67 | AlphaAnimation an = new AlphaAnimation(1, 0);
68 | an.setDuration(durationMillis);
69 | an.setAnimationListener(new AnimationListener() {
70 | @Override
71 | public void onAnimationStart(Animation animation) {
72 | }
73 |
74 | @Override
75 | public void onAnimationRepeat(Animation animation) {
76 | }
77 |
78 | @Override
79 | public void onAnimationEnd(Animation animation) {
80 | setVisibility(View.GONE);
81 | }
82 | });
83 | startAnimation(an);
84 | if (maskListener != null)
85 | maskListener.onHide();
86 | }
87 |
88 | public void setOnMaskListener(MaskListener listener) {
89 | this.maskListener = listener;
90 | }
91 |
92 | public interface MaskListener {
93 | void onShow();
94 |
95 | void onHide();
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/java/com/qiao/view/PageImageView.java:
--------------------------------------------------------------------------------
1 | package com.qiao.view;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.Gravity;
6 | import android.view.View;
7 | import android.widget.FrameLayout;
8 | import android.widget.ImageView;
9 | import android.widget.ProgressBar;
10 |
11 | import com.qiao.photoview.PhotoView;
12 |
13 |
14 | public class PageImageView extends FrameLayout{
15 | private PhotoView imageView;
16 | private ProgressBar progressBar;
17 | private boolean isLoadSuccess;
18 |
19 | public PageImageView(Context context) {
20 | super(context);
21 | initalize();
22 | }
23 |
24 | public PageImageView(Context context, AttributeSet attrs) {
25 | super(context, attrs);
26 | initalize();
27 | }
28 |
29 | private void initalize() {
30 | imageView = new PhotoView(getContext());
31 | imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
32 | imageView.enable();
33 | addView(imageView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
34 | progressBar = new ProgressBar(getContext());
35 | LayoutParams flp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
36 | flp.gravity = Gravity.CENTER;
37 | addView(progressBar,flp);
38 |
39 | imageView.setVisibility(View.INVISIBLE);
40 | progressBar.setVisibility(View.VISIBLE);
41 | isLoadSuccess = true;
42 | }
43 |
44 | public PhotoView getImageView() {
45 | return imageView;
46 | }
47 |
48 | public void setImageView(PhotoView imageView) {
49 | this.imageView = imageView;
50 | }
51 |
52 | public ProgressBar getProgressBar() {
53 | return progressBar;
54 | }
55 |
56 | public void setProgressBar(ProgressBar progressBar) {
57 | this.progressBar = progressBar;
58 | }
59 |
60 | public boolean isLoadSuccess() {
61 | return isLoadSuccess;
62 | }
63 |
64 | public void setLoadSuccess(boolean isLoadSuccess) {
65 | this.isLoadSuccess = isLoadSuccess;
66 | }
67 |
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/anim/translate_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/anim/translate_up_current.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-hdpi/actionsheet_button1_normal.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-hdpi/actionsheet_button1_normal.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-hdpi/actionsheet_button1_press.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-hdpi/actionsheet_button1_press.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-hdpi/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-hdpi/arrow_down.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-hdpi/bucket_border_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-hdpi/bucket_border_bg.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-hdpi/pic_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-hdpi/pic_default.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_bottom_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_bottom_n.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_bottom_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_bottom_p.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_center_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_center_n.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_center_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_center_p.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_single_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_single_n.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_single_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_single_p.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_top_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_top_n.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_top_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/actionsheet_button_top_p.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/arrow_up.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/btn_back_nor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/btn_back_nor.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/btn_back_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/btn_back_sel.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/image_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/image_checked.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/next_indicator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/next_indicator.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/picker_browser_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/picker_browser_n.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable-xhdpi/picker_browser_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/androidstudio_version/library/src/main/res/drawable-xhdpi/picker_browser_p.9.png
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/actionsheet_button1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
9 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/actionsheet_button_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/actionsheet_button_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/actionsheet_button_single.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/actionsheet_button_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/btn_back_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/btn_green_shape_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | -
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | -
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/drawable/picker_browser.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/layout/activity_image_browser.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
21 |
22 |
35 |
36 |
37 |
38 |
39 |
44 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/layout/bucket_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
24 |
25 |
26 |
32 |
33 |
40 |
41 |
48 |
49 |
50 |
54 |
55 |
56 |
61 |
62 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/layout/checked_image_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
13 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/layout/empty_linear_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
14 |
15 |
20 |
21 |
25 |
26 |
30 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ImageSelector
4 |
5 |
6 |
--------------------------------------------------------------------------------
/androidstudio_version/library/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | key
3 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/build.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | buildscript {
19 | repositories {
20 | jcenter()
21 | }
22 | }
23 | apply plugin: 'com.android.library'
24 |
25 | android {
26 | compileSdkVersion 21
27 | buildToolsVersion "21.1.2"
28 |
29 | defaultConfig {
30 | minSdkVersion 8
31 | targetSdkVersion 21
32 | versionCode 1
33 | versionName "1.0"
34 | }
35 | buildTypes {
36 | release {
37 | minifyEnabled false
38 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
39 | }
40 | }
41 | }
42 |
43 | dependencies {
44 | compile fileTree(include: ['*.jar'], dir: 'libs')
45 | compile 'com.android.support:support-v4:23.1.1'
46 | }
47 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Applications/android-sdk-macosx-l/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/androidTest/java/com/kogitune/pre_lollipop_activity_transition/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.pre_lollipop_activity_transition;
19 |
20 | import android.app.Application;
21 | import android.test.ApplicationTestCase;
22 |
23 | /**
24 | * Testing Fundamentals
25 | */
26 | public class ApplicationTest extends ApplicationTestCase {
27 | public ApplicationTest() {
28 | super(Application.class);
29 | }
30 | }
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/ActivityTransition.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition;
19 |
20 | import android.animation.TimeInterpolator;
21 | import android.content.Context;
22 | import android.content.Intent;
23 | import android.os.Bundle;
24 | import android.view.View;
25 | import android.view.animation.DecelerateInterpolator;
26 |
27 | import com.kogitune.activity_transition.core.MoveData;
28 | import com.kogitune.activity_transition.core.TransitionAnimation;
29 |
30 | public class ActivityTransition {
31 | private int duration = 500;
32 | private View toView;
33 | private TimeInterpolator interpolator;
34 | private Intent fromIntent;
35 |
36 | private ActivityTransition(Intent intent) {
37 | this.fromIntent = intent;
38 | }
39 |
40 | public static ActivityTransition with(Intent intent) {
41 | return new ActivityTransition(intent);
42 | }
43 |
44 | public ActivityTransition to(View toView) {
45 | this.toView = toView;
46 | return this;
47 | }
48 |
49 | public ActivityTransition duration(int duration) {
50 | this.duration = duration;
51 | return this;
52 | }
53 |
54 | public ActivityTransition interpolator(TimeInterpolator interpolator) {
55 | this.interpolator = interpolator;
56 | return this;
57 | }
58 |
59 | public ExitActivityTransition start(Bundle savedInstanceState) {
60 | if (interpolator == null) {
61 | interpolator = new DecelerateInterpolator();
62 | }
63 | final Context context = toView.getContext();
64 | final Bundle bundle = fromIntent.getExtras();
65 | final MoveData moveData = TransitionAnimation.startAnimation(context, toView, bundle, savedInstanceState, duration, interpolator);
66 | return new ExitActivityTransition(moveData);
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/ActivityTransitionLauncher.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition;
19 |
20 | import android.app.Activity;
21 | import android.content.Intent;
22 | import android.graphics.Bitmap;
23 | import android.os.Bundle;
24 | import android.view.View;
25 |
26 | import com.kogitune.activity_transition.core.TransitionBundleFactory;
27 |
28 | public class ActivityTransitionLauncher {
29 | private static final String TAG = "TransitionLauncher";
30 |
31 | private final Activity activity;
32 | private View fromView;
33 | private Bitmap bitmap;
34 |
35 |
36 | private ActivityTransitionLauncher(Activity activity) {
37 | this.activity = activity;
38 | }
39 |
40 | public static ActivityTransitionLauncher with(Activity activity) {
41 | return new ActivityTransitionLauncher(activity);
42 | }
43 |
44 | public ActivityTransitionLauncher from(View fromView) {
45 | this.fromView = fromView;
46 | return this;
47 | }
48 |
49 | public ActivityTransitionLauncher image(final Bitmap bitmap) {
50 | this.bitmap = bitmap;
51 | return this;
52 | }
53 |
54 | public Bundle createBundle() {
55 | return TransitionBundleFactory.createTransitionBundle(activity, fromView, bitmap);
56 | }
57 |
58 | public void launch(Intent intent) {
59 | intent.putExtras(createBundle());
60 | activity.startActivity(intent);
61 | activity.overridePendingTransition(0, 0);
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/BuildConfigUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition;
19 |
20 | import android.content.Context;
21 |
22 | import java.lang.reflect.Field;
23 |
24 | public class BuildConfigUtils {
25 | public static Object getBuildConfigValue(Context context, String fieldName) {
26 | try {
27 | Class> clazz = Class.forName(context.getPackageName() + ".BuildConfig");
28 | Field field = clazz.getField(fieldName);
29 | return field.get(null);
30 | } catch (ClassNotFoundException e) {
31 | e.printStackTrace();
32 | } catch (NoSuchFieldException e) {
33 | e.printStackTrace();
34 | } catch (IllegalAccessException e) {
35 | e.printStackTrace();
36 | }
37 | return null;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/ExitActivityTransition.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition;
19 |
20 | import android.animation.TimeInterpolator;
21 | import android.app.Activity;
22 | import android.view.animation.DecelerateInterpolator;
23 |
24 | import com.kogitune.activity_transition.core.MoveData;
25 | import com.kogitune.activity_transition.core.TransitionAnimation;
26 |
27 | public class ExitActivityTransition {
28 | private final MoveData moveData;
29 | private TimeInterpolator interpolator;
30 |
31 |
32 | public ExitActivityTransition(MoveData moveData) {
33 | this.moveData = moveData;
34 | }
35 |
36 | public ExitActivityTransition interpolator(TimeInterpolator interpolator) {
37 | this.interpolator = interpolator;
38 | return this;
39 | }
40 |
41 | public void exit(final Activity activity) {
42 | if (interpolator == null) {
43 | interpolator = new DecelerateInterpolator();
44 | }
45 | TransitionAnimation.startExitAnimation(moveData, interpolator, new Runnable() {
46 | @Override
47 | public void run() {
48 | activity.finish();
49 | activity.overridePendingTransition(0, 0);
50 | }
51 | });
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/core/MoveData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition.core;
19 |
20 | import android.view.View;
21 |
22 | public class MoveData {
23 | public int leftDelta;
24 | public int topDelta;
25 | public float widthScale;
26 | public float heightScale;
27 | public int duration = 1000;
28 | public View toView;
29 | }
30 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/core/TransitionBundleFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom, shiraji
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition.core;
19 |
20 | import android.content.Context;
21 | import android.graphics.Bitmap;
22 | import android.os.Bundle;
23 | import android.util.Log;
24 | import android.view.View;
25 |
26 | import com.kogitune.activity_transition.BuildConfigUtils;
27 |
28 | import java.io.BufferedOutputStream;
29 | import java.io.File;
30 | import java.io.FileNotFoundException;
31 | import java.io.FileOutputStream;
32 | import java.io.IOException;
33 | import java.lang.ref.WeakReference;
34 |
35 | public class TransitionBundleFactory {
36 | public static final String TEMP_IMAGE_FILE_NAME = "activity_transition_image.png";
37 | private static final String TAG = "Transition";
38 |
39 | public static Bundle createTransitionBundle(Context context, View fromView, Bitmap bitmap) {
40 | // Bitmap is Optional
41 | String imageFilePath = null;
42 | if (bitmap != null) {
43 | TransitionAnimation.bitmapCache = new WeakReference(bitmap);
44 | imageFilePath = saveImage(context, bitmap);
45 | }
46 | int[] screenLocation = new int[2];
47 | fromView.getLocationOnScreen(screenLocation);
48 | final TransitionData transitionData = new TransitionData(context, screenLocation[0], screenLocation[1], fromView.getMeasuredWidth(), fromView.getMeasuredHeight(), imageFilePath);
49 | return transitionData.getBundle();
50 | }
51 |
52 | private static String saveImage(final Context context, final Bitmap bitmap) {
53 | final String imageSavePath = context.getFilesDir().getAbsolutePath() + "/activity_transition/";
54 | new File(imageSavePath).mkdirs();
55 | final File imageFile = new File(imageSavePath, TEMP_IMAGE_FILE_NAME);
56 | final String imageFilePath = imageFile.getAbsolutePath();
57 | new Thread(new Runnable() {
58 | @Override
59 | public void run() {
60 | TransitionAnimation.isImageFileReady = false;
61 | Boolean isDebug = (Boolean) BuildConfigUtils.getBuildConfigValue(context, "DEBUG");
62 | BufferedOutputStream bos = null;
63 | try {
64 | if (imageFile.exists()) {
65 | imageFile.delete();
66 | }
67 | imageFile.createNewFile();
68 | bos = new BufferedOutputStream(new FileOutputStream(imageFile));
69 | bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);
70 | } catch (FileNotFoundException e) {
71 | if (isDebug) {
72 | Log.i(TAG, "file not found", e);
73 | }
74 | } catch (IOException e) {
75 | if (isDebug) {
76 | Log.i(TAG, "can't create file", e);
77 | }
78 | } finally {
79 | try {
80 | bos.close();
81 | } catch (Exception e) {
82 | if (isDebug) {
83 | //IOException, NullPointerException
84 | Log.i(TAG, "fail save image", e);
85 | }
86 | }
87 | TransitionAnimation.isImageFileReady = true;
88 | }
89 | synchronized (TransitionAnimation.lock) {
90 | TransitionAnimation.lock.notify();
91 | }
92 | }
93 | }).start();
94 | return imageFilePath;
95 | }
96 |
97 | }
98 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/core/TransitionData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition.core;
19 |
20 | import android.content.Context;
21 | import android.os.Bundle;
22 |
23 | import com.kogitune.activity_transition.BuildConfigUtils;
24 |
25 | public class TransitionData {
26 | public static final String EXTRA_IMAGE_LEFT = ".left";
27 | public static final String EXTRA_IMAGE_TOP = ".top";
28 | public static final String EXTRA_IMAGE_WIDTH = ".width";
29 | public static final String EXTRA_IMAGE_HEIGHT = ".height";
30 | public static final String EXTRA_IMAGE_PATH = ".imageFilePath";
31 |
32 | public final int thumbnailTop;
33 | public final int thumbnailLeft;
34 | public final int thumbnailWidth;
35 | public final int thumbnailHeight;
36 | public final String imageFilePath;
37 | private String appId;
38 |
39 | public TransitionData(Context context, int thumbnailLeft, int thumbnailTop, int thumbnailWidth, int thumbnailHeight, String imageFilePath) {
40 | setAppId(context);
41 | this.thumbnailLeft = thumbnailLeft;
42 | this.thumbnailTop = thumbnailTop;
43 | this.thumbnailWidth = thumbnailWidth;
44 | this.thumbnailHeight = thumbnailHeight;
45 | this.imageFilePath = imageFilePath;
46 | }
47 |
48 | public TransitionData(Context context, Bundle bundle) {
49 | setAppId(context);
50 | thumbnailTop = bundle.getInt(appId + EXTRA_IMAGE_TOP);
51 | thumbnailLeft = bundle.getInt(appId + EXTRA_IMAGE_LEFT);
52 | thumbnailWidth = bundle.getInt(appId + EXTRA_IMAGE_WIDTH);
53 | thumbnailHeight = bundle.getInt(appId + EXTRA_IMAGE_HEIGHT);
54 | imageFilePath = bundle.getString(appId + EXTRA_IMAGE_PATH);
55 | }
56 |
57 | private void setAppId(Context context) {
58 | appId = (String) BuildConfigUtils.getBuildConfigValue(context, "APPLICATION_ID");
59 | }
60 |
61 |
62 | public Bundle getBundle() {
63 | final Bundle bundle = new Bundle();
64 | if (imageFilePath != null) {
65 | bundle.putString(appId + EXTRA_IMAGE_PATH, imageFilePath);
66 | }
67 | bundle.putInt(appId + EXTRA_IMAGE_LEFT, thumbnailLeft);
68 | bundle.putInt(appId + EXTRA_IMAGE_TOP, thumbnailTop);
69 | bundle.putInt(appId + EXTRA_IMAGE_WIDTH, thumbnailWidth);
70 | bundle.putInt(appId + EXTRA_IMAGE_HEIGHT, thumbnailHeight);
71 | return bundle;
72 |
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/fragment/FragmentTransition.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition.fragment;
19 |
20 | import android.animation.TimeInterpolator;
21 | import android.app.Fragment;
22 | import android.content.Context;
23 | import android.os.Bundle;
24 | import android.view.View;
25 | import android.view.animation.DecelerateInterpolator;
26 |
27 | import com.kogitune.activity_transition.core.MoveData;
28 | import com.kogitune.activity_transition.core.TransitionAnimation;
29 |
30 | public class FragmentTransition {
31 | private static TimeInterpolator interpolator;
32 | private int duration = 1000;
33 | private View toView;
34 | private android.support.v4.app.Fragment supportFragment;
35 | private Fragment fragment;
36 |
37 | private FragmentTransition(Fragment fragment) {
38 | this.fragment = fragment;
39 | }
40 |
41 | private FragmentTransition(android.support.v4.app.Fragment fragment) {
42 | this.supportFragment = fragment;
43 | }
44 |
45 | public static FragmentTransition with(Fragment fragment) {
46 | return new FragmentTransition(fragment);
47 | }
48 |
49 | public static FragmentTransition with(android.support.v4.app.Fragment fragment) {
50 | return new FragmentTransition(fragment);
51 | }
52 |
53 | public FragmentTransition to(View toView) {
54 | this.toView = toView;
55 | return this;
56 | }
57 |
58 | public FragmentTransition duration(int duration) {
59 | this.duration = duration;
60 | return this;
61 | }
62 |
63 |
64 | public FragmentTransition interpolator(TimeInterpolator interpolator) {
65 | FragmentTransition.interpolator = interpolator;
66 | return this;
67 | }
68 |
69 | public ExitFragmentTransition start(Bundle savedInstanceState) {
70 | if (interpolator == null) {
71 | interpolator = new DecelerateInterpolator();
72 | }
73 | final Context context = toView.getContext();
74 | final Bundle bundle;
75 | if (fragment == null) {
76 | bundle = supportFragment.getArguments();
77 | } else {
78 | bundle = fragment.getArguments();
79 | }
80 | final MoveData moveData = TransitionAnimation.startAnimation(context, toView, bundle, savedInstanceState, duration, interpolator);
81 | if (fragment == null) {
82 | return new ExitFragmentTransition(supportFragment, moveData);
83 | }
84 | return new ExitFragmentTransition(fragment, moveData);
85 | }
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/androidstudio_version/pre-lollipop-activity-transition/src/main/java/com/kogitune/activity_transition/fragment/FragmentTransitionLauncher.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 takahirom
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *
16 | */
17 |
18 | package com.kogitune.activity_transition.fragment;
19 |
20 | import android.app.Fragment;
21 | import android.content.Context;
22 | import android.graphics.Bitmap;
23 | import android.os.Bundle;
24 | import android.view.View;
25 |
26 | import com.kogitune.activity_transition.core.TransitionBundleFactory;
27 |
28 | public class FragmentTransitionLauncher {
29 | private static final String TAG = "TransitionLauncher";
30 |
31 | private final Context context;
32 | private View fromView;
33 | private Bitmap bitmap;
34 |
35 |
36 | private FragmentTransitionLauncher(Context context) {
37 | this.context = context;
38 | }
39 |
40 | public static FragmentTransitionLauncher with(Context context) {
41 | return new FragmentTransitionLauncher(context);
42 | }
43 |
44 | public FragmentTransitionLauncher from(View fromView) {
45 | this.fromView = fromView;
46 | return this;
47 | }
48 |
49 | public FragmentTransitionLauncher image(final Bitmap bitmap) {
50 | this.bitmap = bitmap;
51 | return this;
52 | }
53 |
54 | public void prepare(Fragment toFragment) {
55 | final Bundle transitionBundle = TransitionBundleFactory.createTransitionBundle(context, fromView, bitmap);
56 | toFragment.setArguments(transitionBundle);
57 | }
58 |
59 | public void prepare(android.support.v4.app.Fragment toFragment) {
60 | final Bundle transitionBundle = TransitionBundleFactory.createTransitionBundle(context, fromView, bitmap);
61 | toFragment.setArguments(transitionBundle);
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/androidstudio_version/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':library', ':pre-lollipop-activity-transition'
--------------------------------------------------------------------------------
/eclipse_version_1.0/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | ImageSelector
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
3 | org.eclipse.jdt.core.compiler.compliance=1.6
4 | org.eclipse.jdt.core.compiler.source=1.6
5 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
10 |
11 |
16 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/README.md:
--------------------------------------------------------------------------------
1 | # ImageSelector
2 | 本地选图控件,支持单选、多选和预览。注:实例中提供的图片质量(这里只提供选项,并没有实际压缩操作)
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | # 如何使用
13 | ## 一、使用Activity方式
14 | ### 导入
15 | 1. 可以单独将此项目作为库(isLibrary)或者直接将java src和res文件拷贝至项目中,在 AndroidManifest.xml 中配置
16 |
17 | ```
18 |
19 |
20 | ```
21 |
22 | ### 使用
23 | 2. 使用指向ImageSelectorActivity的Intent ,传入参数为 SelectorParamContext
24 |
25 | ```
26 | public class SelectorParamContext implements Serializable{
27 |
28 | protected int maxCount;//最大选图数量
29 | protected boolean hasQulityMenu;//是否有图片清晰度选项
30 | protected boolean isHighQulity;//是否高清
31 | protected boolean isMult;//是否多选
32 | protected ArrayList selectedFile; //选中图片path
33 | ```
34 |
35 | ## 二、使用Fragment方式
36 | 1. 在你的页面添加Fragment,详情参见DemoActivity。用法同上。只是不用再AndroidManifest.xml 中配置
37 |
38 |
39 | ## 示例:
40 |
41 | ```
42 | /**
43 | *选图时调用
44 | **/
45 | public void startImageSelector(){
46 | Intent intent = new Intent(YourActivity , ImageSelectorActivity.class);
47 | SelectorParamContext params = new SelectorParamContext();
48 | params.setMult(true);
49 | params.setMaxCount(9);
50 | params.setHasQulityMenu(true);
51 | startActivityForResult(intent, requestCode);
52 | }
53 |
54 | /**
55 | *返回对象也为 SelectorParamContext
56 | **/
57 | @Override
58 | protected void onActivityResult(int requestCode, int resultCode, Intent data) {
59 |
60 | if (resultCode == Activity.RESULT_OK) {
61 | SelectorParamContext params = (SelectorParamContext)data.getSerializableExtra(SelectorParamContext.TAG_SELECTOR);
62 | //你的处理逻辑
63 | }
64 | }
65 | ```
66 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
9 |
10 |
11 |
16 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/ImageSelector.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/ImageSelector.apk
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes.dex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes.dex
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/DemoActivity.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/DemoActivity.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity$ImagePagerAdapter$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity$ImagePagerAdapter$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity$ImagePagerAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity$ImagePagerAdapter.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageBrowserActivity.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$2.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$3.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$4.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$5.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$5.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$6$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$6$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$6.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$6.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$7.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$7.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$8$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$8$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$8.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$8.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$9.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty$9.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/activity/ImageSelectorActivty.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/adapter/BaseAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/adapter/BaseAdapter.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/adapter/ImageCursorAdapter$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/adapter/ImageCursorAdapter$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/adapter/ImageCursorAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/adapter/ImageCursorAdapter.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/bean/Bucket.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/bean/Bucket.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/bean/SelectorParamContext.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/bean/SelectorParamContext.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment$ImagePagerAdapter$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment$ImagePagerAdapter$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment$ImagePagerAdapter.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment$ImagePagerAdapter.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageBrowserFragment.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$2.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$3.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$4.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$5.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$5.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$6$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$6$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$6.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$6.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$7.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$7.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$8$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$8$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$8.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$8.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$9.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment$9.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/fragment/ImageSelectorFragment.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/BuildConfig.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$anim.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$anim.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$attr.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$drawable.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$id.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$layout.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$layout.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$string.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$string.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$style.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R$style.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/imageselector/R.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil$OnAnimationEndListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil$OnAnimationEndListener.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil$OnAnimationRepeatListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil$OnAnimationRepeatListener.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil$OnAnimationStartListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil$OnAnimationStartListener.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/AnimUtil.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$1$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$1$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$2.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$3.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$4.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$ImageLoadListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$ImageLoadListener.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$ImageSize.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$ImageSize.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$ImgBeanHolder.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$ImgBeanHolder.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$Type.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil$Type.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/ImageLoadUtil.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/MediaHelper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/MediaHelper.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/util/Util.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/util/Util.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$2.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$3.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$4.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$5.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$5.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$6.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$6.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$Action1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$Action1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$Func.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet$Func.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/ActionSheet.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/BucketView.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/BucketView.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/CheckedImageView.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/CheckedImageView.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView$1.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView$2.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView$MaskListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView$MaskListener.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/MaskView.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/classes/com/qiao/view/PageImageView.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/classes/com/qiao/view/PageImageView.class
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/dexedLibs/android-support-v4-5312ceeeac931ab61a0b0bfddd54180e.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/dexedLibs/android-support-v4-5312ceeeac931ab61a0b0bfddd54180e.jar
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/dexedLibs/android-support-v4-bc12fc50ee1df56c4b748bd198ebe9f0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/dexedLibs/android-support-v4-bc12fc50ee1df56c4b748bd198ebe9f0.jar
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/dexedLibs/photoview-0d4f067b5a018540d959e0cb20817194.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/dexedLibs/photoview-0d4f067b5a018540d959e0cb20817194.jar
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/dexedLibs/photoview-36c07f5315d83923e4b8d17ea1f113e1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/dexedLibs/photoview-36c07f5315d83923e4b8d17ea1f113e1.jar
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/jarlist.cache:
--------------------------------------------------------------------------------
1 | # cache for current jar dependency. DO NOT EDIT.
2 | # format is
3 | # Encoding is UTF-8
4 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/actionsheet_button1_normal.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/actionsheet_button1_normal.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/actionsheet_button1_press.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/actionsheet_button1_press.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/arrow_down.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/bucket_border_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/bucket_border_bg.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/pic_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-hdpi/pic_default.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_bottom_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_bottom_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_bottom_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_bottom_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_center_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_center_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_center_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_center_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_single_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_single_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_single_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_single_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_top_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_top_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_top_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/actionsheet_button_top_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/arrow_up.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/btn_back_nor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/btn_back_nor.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/btn_back_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/btn_back_sel.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/image_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/image_checked.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/next_indicator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/next_indicator.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/picker_browser_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/picker_browser_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/picker_browser_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/res/crunch/drawable-xhdpi/picker_browser_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/bin/resources.ap_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/bin/resources.ap_
--------------------------------------------------------------------------------
/eclipse_version_1.0/gen/com/qiao/imageselector/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /** Automatically generated file. DO NOT MODIFY */
2 | package com.qiao.imageselector;
3 |
4 | public final class BuildConfig {
5 | public final static boolean DEBUG = true;
6 | }
--------------------------------------------------------------------------------
/eclipse_version_1.0/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/ic_launcher-web.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/libs/android-support-v4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/libs/android-support-v4.jar
--------------------------------------------------------------------------------
/eclipse_version_1.0/libs/photoview.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/libs/photoview.jar
--------------------------------------------------------------------------------
/eclipse_version_1.0/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=android-19
15 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/anim/translate_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/anim/translate_up_current.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-hdpi/actionsheet_button1_normal.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-hdpi/actionsheet_button1_normal.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-hdpi/actionsheet_button1_press.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-hdpi/actionsheet_button1_press.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-hdpi/arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-hdpi/arrow_down.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-hdpi/bucket_border_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-hdpi/bucket_border_bg.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-hdpi/pic_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-hdpi/pic_default.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_bottom_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_bottom_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_bottom_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_bottom_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_center_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_center_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_center_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_center_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_single_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_single_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_single_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_single_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_top_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_top_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_top_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/actionsheet_button_top_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/arrow_up.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/btn_back_nor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/btn_back_nor.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/btn_back_sel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/btn_back_sel.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/image_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/image_checked.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/next_indicator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/next_indicator.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/picker_browser_n.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/picker_browser_n.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable-xhdpi/picker_browser_p.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/eclipse_version_1.0/res/drawable-xhdpi/picker_browser_p.9.png
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/actionsheet_button1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
9 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/actionsheet_button_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/actionsheet_button_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/actionsheet_button_single.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/actionsheet_button_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/btn_back_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/btn_green_shape_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | -
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | -
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/drawable/picker_browser.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/layout/activity_image_browser.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
21 |
22 |
35 |
36 |
37 |
38 |
39 |
44 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/layout/bucket_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
16 |
17 |
22 |
23 |
30 |
31 |
32 |
37 |
38 |
44 |
45 |
51 |
52 |
57 |
58 |
59 |
63 |
64 |
65 |
66 |
71 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/layout/checked_image_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
13 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ImageSelector
4 |
5 |
6 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/activity/DemoActivity.java:
--------------------------------------------------------------------------------
1 | package com.qiao.activity;
2 |
3 | import com.qiao.fragment.ImageSelectorFragment;
4 |
5 | import android.content.Context;
6 | import android.content.Intent;
7 | import android.os.Bundle;
8 | import android.support.v4.app.Fragment;
9 | import android.support.v4.app.FragmentActivity;
10 | import android.support.v4.app.FragmentManager;
11 | import android.support.v4.app.FragmentTransaction;
12 | import android.view.View;
13 | import android.widget.FrameLayout;
14 |
15 | public class DemoActivity extends FragmentActivity{
16 | protected View containerView;
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | containerView = new FrameLayout(this);
22 | containerView.setId(android.R.id.content);
23 | setContentView(containerView);
24 |
25 | initFragment();
26 | }
27 |
28 | private void initFragment() {
29 | Intent intent = getIntent();
30 | Class> fragmentClass = (Class>) intent.getSerializableExtra("class");
31 | if(fragmentClass == null){
32 | fragmentClass = ImageSelectorFragment.class;
33 | }
34 | try {
35 | Fragment fragment = (Fragment) fragmentClass.newInstance();
36 | FragmentManager fm = getSupportFragmentManager();
37 | FragmentTransaction ft = fm.beginTransaction();
38 | ft.add(android.R.id.content, fragment);
39 | ft.commitAllowingStateLoss();
40 | }catch (Exception e) {
41 | e.printStackTrace();
42 | }
43 | }
44 |
45 | public static Intent makeIntent(Context context, Class extends Fragment> clazz) {
46 | Intent intent = new Intent(context, DemoActivity.class);
47 | intent.putExtra("class", clazz);
48 | return intent;
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/activity/ImageBrowserActivity.java:
--------------------------------------------------------------------------------
1 | package com.qiao.activity;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import com.qiao.imageselector.R;
7 | import com.qiao.util.ImageLoadUtil;
8 | import com.qiao.util.ImageLoadUtil.ImageLoadListener;
9 | import com.qiao.view.PageImageView;
10 |
11 | import android.app.Activity;
12 | import android.content.Intent;
13 | import android.graphics.Bitmap;
14 | import android.os.Bundle;
15 | import android.support.v4.view.PagerAdapter;
16 | import android.support.v4.view.ViewPager;
17 | import android.view.View;
18 | import android.view.View.OnClickListener;
19 | import android.view.ViewGroup;
20 | import android.widget.ImageView;
21 | import android.widget.Toast;
22 |
23 | /**
24 | * 图片预览
25 | * @author qiao
26 | * 2015-3-19
27 | */
28 | public class ImageBrowserActivity extends Activity{
29 | private View backView;
30 | private int currIndex,count;
31 | private List dataList;
32 | private ViewPager viewPager;
33 |
34 | @Override
35 | protected void onCreate(Bundle savedInstanceState) {
36 | super.onCreate(savedInstanceState);
37 | setContentView(R.layout.activity_image_browser);
38 | initData();
39 | initViews();
40 | initListeners();
41 | }
42 |
43 | private void initData() {
44 | Intent intent = getIntent();
45 | currIndex = intent.getIntExtra("currIndex", 0);
46 | dataList = (List) intent.getSerializableExtra("dataList");
47 | if (dataList == null) {
48 | dataList = new ArrayList();
49 | }
50 | count = dataList.size();
51 | }
52 |
53 | private void initViews() {
54 | backView = findViewById(R.id.back_view);
55 | viewPager = (ViewPager)findViewById(R.id.view_pager);
56 | viewPager.setAdapter(new ImagePagerAdapter());
57 | viewPager.setCurrentItem(currIndex);
58 | }
59 |
60 | private void initListeners() {
61 | backView.setOnClickListener(new OnClickListener() {
62 |
63 | @Override
64 | public void onClick(View v) {
65 | onBackPressed();
66 | }
67 | });
68 | }
69 |
70 | /**
71 | * 图片适配器
72 | */
73 | class ImagePagerAdapter extends PagerAdapter{
74 | protected PageImageView currView;
75 |
76 | @Override
77 | public int getCount() {
78 | return dataList.size();
79 | }
80 |
81 | @Override
82 | public boolean isViewFromObject(View view, Object object) {
83 | return view.equals(object);
84 | }
85 |
86 | @Override
87 | public void destroyItem(ViewGroup collection, int position, Object view){
88 | collection.removeView((View) view);
89 | }
90 |
91 | @Override
92 | public void setPrimaryItem(ViewGroup container, int position, Object object) {
93 | super.setPrimaryItem(container, position, object);
94 | if (currIndex == position && currView!=null) return;
95 | if(currView!=null){
96 | currView.getImageView().reset();
97 | }
98 | currIndex = position;
99 | currView = (PageImageView)object;
100 | if (!currView.isLoadSuccess()) {
101 | Toast.makeText(ImageBrowserActivity.this, "图片加载失败,请确认图片或网络可用!", Toast.LENGTH_SHORT).show();
102 | }
103 | }
104 |
105 | @Override
106 | public Object instantiateItem(ViewGroup collection, int position){
107 | PageImageView convertView = new PageImageView(ImageBrowserActivity.this);
108 | String path = dataList.get(position);
109 | collection.addView(convertView, 0);
110 | ImageLoadUtil.getInstance(3,ImageLoadUtil.Type.LIFO).loadImage(path,convertView.getImageView(),bindListener(convertView));
111 | return convertView;
112 | }
113 |
114 | private ImageLoadListener bindListener(final PageImageView pageImageView){
115 | return new ImageLoadListener() {
116 |
117 | @Override
118 | public void onLoadComplete(ImageView imageView, Bitmap bitmap,
119 | boolean isSuccess) {
120 | pageImageView.setLoadSuccess(isSuccess);
121 | pageImageView.getProgressBar().setVisibility(View.GONE);
122 | pageImageView.getImageView().setVisibility(View.VISIBLE);
123 | }
124 | };
125 | }
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/adapter/BaseAdapter.java:
--------------------------------------------------------------------------------
1 | package com.qiao.adapter;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import android.content.Context;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 |
10 | public abstract class BaseAdapter extends android.widget.BaseAdapter {
11 |
12 | protected Context context;
13 | protected ArrayList dataList;
14 |
15 | public BaseAdapter(Context context, ArrayList models) {
16 | this.context = context;
17 | if (models == null)
18 | this.dataList = new ArrayList();
19 | else
20 | this.dataList = models;
21 | }
22 |
23 | @Override
24 | public int getCount() {
25 | if (dataList != null) {
26 | return dataList.size();
27 | }
28 | return 0;
29 | }
30 |
31 | @Override
32 | public Object getItem(int position) {
33 | return dataList.get(position);
34 | }
35 |
36 | @Override
37 | public long getItemId(int position) {
38 | return position;
39 | }
40 |
41 | @Override
42 | public abstract View getView(int position, View convertView, ViewGroup parent);
43 |
44 | /** 更新数据 */
45 | public void update(List models) {
46 | if (models == null)
47 | return;
48 | this.dataList.clear();
49 | for (T t : models) {
50 | this.dataList.add(t);
51 | }
52 | notifyDataSetChanged();
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/adapter/ImageCursorAdapter.java:
--------------------------------------------------------------------------------
1 | package com.qiao.adapter;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import com.qiao.util.MediaHelper;
7 | import com.qiao.view.CheckedImageView;
8 |
9 | import android.content.Context;
10 | import android.database.Cursor;
11 | import android.view.View;
12 | import android.view.View.OnClickListener;
13 | import android.view.ViewGroup;
14 |
15 | /**
16 | * 加载图盘的游标适配器
17 | * @author Qiao
18 | * 2015-3-18
19 | */
20 | public class ImageCursorAdapter extends android.support.v4.widget.CursorAdapter{
21 | private List selectedLsit;
22 |
23 | public ImageCursorAdapter(Context context, Cursor c) {
24 | super(context, c);
25 | selectedLsit = new ArrayList();
26 | }
27 |
28 | public ImageCursorAdapter(Context context, Cursor c,ArrayList list) {
29 | super(context, c);
30 | selectedLsit = list;
31 | }
32 |
33 | @Override
34 | public void bindView(final View view, Context context, Cursor cursor) {
35 | final String path = cursor.getString(MediaHelper.IMAGE_PATH);
36 | ((CheckedImageView)view).setView(path, selectedLsit.contains(path));
37 | view.setOnClickListener(new OnClickListener() {
38 | @Override
39 | public void onClick(View v) {
40 | onItemClick((CheckedImageView)view,path);
41 | }
42 | });
43 | }
44 |
45 | @Override
46 | public View newView(Context context, Cursor cursor, ViewGroup parent) {
47 | return new CheckedImageView(context) ;
48 | }
49 |
50 | @Override
51 | public String getItem(int position) {
52 | Cursor cursor = (Cursor)super.getItem(position);
53 | if(cursor!=null)
54 | return cursor.getString(MediaHelper.IMAGE_PATH);
55 | return null;
56 | }
57 |
58 | public void onItemClick(CheckedImageView item, String path){
59 |
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/bean/Bucket.java:
--------------------------------------------------------------------------------
1 | package com.qiao.bean;
2 |
3 | /**
4 | * 相册
5 | * @author qiao
6 | * 2015-3-18
7 | */
8 | public class Bucket {
9 | public int bucketId;
10 | public String bucketName;
11 | public String bucketUrl = null;
12 | public int count;
13 |
14 | public Bucket(int id, String name, String url) {
15 | bucketId = id;
16 | bucketName = ensureNotNull(name);
17 | bucketUrl = url;
18 | count = 0;
19 | }
20 |
21 | @Override
22 | public int hashCode() {
23 | return bucketId;
24 | }
25 |
26 | @Override
27 | public boolean equals(Object object) {
28 | if (!(object instanceof Bucket)) return false;
29 | Bucket entry = (Bucket) object;
30 | return bucketId == entry.bucketId;
31 | }
32 |
33 | public String ensureNotNull(String value) {
34 | return value == null ? "" : value;
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/bean/SelectorParamContext.java:
--------------------------------------------------------------------------------
1 | package com.qiao.bean;
2 |
3 | import java.io.Serializable;
4 | import java.util.ArrayList;
5 |
6 | /**
7 | * 图片基础数据选项
8 | * @author qiao
9 | * 2015-3-20
10 | */
11 | public class SelectorParamContext implements Serializable{
12 |
13 | protected int maxCount;//最大选图数量
14 | protected boolean hasQulityMenu;//是否有图片清晰度选项
15 | protected boolean isHighQulity;//是否高清
16 | protected boolean isMult;//是否多选
17 | protected ArrayList selectedFile; //选中图片path
18 |
19 | /**
20 | * 通用常量
21 | */
22 | public static final String TAG_SELECTOR = "SelectorParamContext";
23 | private static final long serialVersionUID = 1L;
24 | public static final int MAXCOUNT = 9;
25 | public static final int mcolor = 0xff0072c6;
26 | public static final int gcolor = 0xffcccccc;
27 | public static final String []menuItems = new String[] {"标清","原图"};
28 |
29 | public SelectorParamContext() {
30 | maxCount = MAXCOUNT;
31 | isMult = true;
32 | hasQulityMenu = true;
33 | isHighQulity = false;
34 | selectedFile = new ArrayList();
35 | }
36 |
37 | public int getMaxCount() {
38 | return maxCount;
39 | }
40 |
41 | public void setMaxCount(int maxCount) {
42 | this.maxCount = maxCount;
43 | }
44 |
45 | public boolean isMult() {
46 | return isMult;
47 | }
48 |
49 | public void setMult(boolean isMult) {
50 | this.isMult = isMult;
51 | }
52 |
53 | public boolean hasQulityMenu() {
54 | return hasQulityMenu;
55 | }
56 |
57 | public void setHasQulityMenu(boolean hasQulityMenu) {
58 | this.hasQulityMenu = hasQulityMenu;
59 | }
60 |
61 | public boolean isHighQulity() {
62 | return isHighQulity;
63 | }
64 |
65 | public void setHighQulity(boolean isHighQulity) {
66 | this.isHighQulity = isHighQulity;
67 | }
68 |
69 | public ArrayList getSelectedFile() {
70 | return selectedFile;
71 | }
72 |
73 | public void setSelectedFile(ArrayList selectedFile) {
74 | this.selectedFile = selectedFile;
75 | }
76 |
77 | public String getPercent(){
78 | return selectedFile.size()+"/"+getMaxCount();
79 | }
80 |
81 | public String getQuality(){
82 | return menuItems[isHighQulity?1:0];
83 | }
84 |
85 | public boolean isAvaliable(){
86 | return selectedFile.size() 1024 * 8";
58 | final String[] columns = { MediaStore.Images.Media._ID , MediaStore.Images.Media.DATA, MediaStore.Images.Media.SIZE};
59 | imageCursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, searchParams, null, orderBy + " DESC");
60 | } catch (Exception e) {
61 | e.printStackTrace();
62 | }
63 | return imageCursor;
64 | }
65 |
66 | /**
67 | * 获取相册列表
68 | * @param context
69 | * @return
70 | */
71 | public static ArrayList getBucketList(Context context){
72 | ArrayList bucketList = new ArrayList();
73 | Map map = new HashMap();
74 | Bucket sumBucket = new Bucket(ALL, "最近照片", "");
75 | bucketList.add(sumBucket);
76 | Cursor mCursor =null;
77 | try {
78 | String searchParams = "_size > 1024 * 8";
79 | final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
80 | mCursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, PROJECTION_BUCKET, searchParams, null, orderBy + " DESC");
81 | while (mCursor.moveToNext()) {
82 |
83 | String path = mCursor.getString(BUCKET_URL);
84 | int id = mCursor.getInt(BUCKET_ID);
85 | if (! map.containsKey(id)) {
86 | Bucket bucket = new Bucket(
87 | id,
88 | mCursor.getString(BUCKET_NAME),path);
89 | bucket.count++;
90 | bucketList.add(bucket);
91 | map.put(id, bucket);
92 | if(sumBucket.count == 0){
93 | sumBucket.bucketUrl = bucket.bucketUrl;
94 | }
95 | }else{
96 | map.get(id).count++;
97 | }
98 | sumBucket.count++;
99 | }
100 | } catch (Exception e) {
101 | e.printStackTrace();
102 | }finally{
103 | if(mCursor!=null){
104 | mCursor.close();
105 | }
106 | }
107 | return bucketList;
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/util/Util.java:
--------------------------------------------------------------------------------
1 | package com.qiao.util;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 | import android.widget.ListView;
9 |
10 | public class Util {
11 | public static boolean isNullOrWhiteSpace(String text) {
12 | if (text == null)
13 | return true;
14 | return text.matches("^\\s*$");
15 | }
16 |
17 | public static void initListViewStyle(ListView listView) {
18 | listView.setDividerHeight(0);
19 | listView.setFadingEdgeLength(0);
20 | }
21 |
22 | public static void setItemStyle(ViewGroup viewGroup, int[] bgRes) {
23 | setItemStyle(viewGroup, bgRes, false);
24 | }
25 |
26 | public static void setItemStyle(ViewGroup viewGroup, int[] bgRes, boolean keepPadding) {
27 | boolean isVisible = false;
28 | View[] viewArray = new View[viewGroup.getChildCount()];
29 | for (int i = 0; i < viewArray.length; i++) {
30 | View child = viewArray[i] = viewGroup.getChildAt(i);
31 | isVisible |= child.getVisibility() == View.VISIBLE;
32 | }
33 | setItemStyle(viewArray, bgRes, keepPadding);
34 | viewGroup.setVisibility(isVisible ? View.VISIBLE : View.GONE);
35 | }
36 |
37 | public static void setItemStyle(View[] viewArray, int[] bgRes) {
38 | setItemStyle(viewArray, bgRes, false);
39 | }
40 |
41 | public static void setItemStyle(View[] viewArray, int[] bgRes, boolean keepPadding) {
42 | List layout = new ArrayList();
43 | for (int i = 0; i < viewArray.length; i++) {
44 | View v = viewArray[i];
45 | if (v.getVisibility() == View.VISIBLE) {
46 | layout.add(v);
47 | }
48 | }
49 | for (int i = 0, count = layout.size(); i < count; i++) {
50 | View view = layout.get(i);
51 | int l = view.getPaddingLeft();
52 | int t = view.getPaddingTop();
53 | int r = view.getPaddingRight();
54 | int b = view.getPaddingBottom();
55 | if (count == 1) {
56 | view.setBackgroundResource(bgRes[0]);
57 | } else if (count >= 2 && i == 0) {
58 | view.setBackgroundResource(bgRes[1]);
59 | } else if (count >= 2 && i == (count - 1)) {
60 | view.setBackgroundResource(bgRes[3]);
61 | } else {
62 | view.setBackgroundResource(bgRes[2]);
63 | }
64 | if (keepPadding) {
65 | view.setPadding(l, t, r, b);
66 | }
67 | }
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/view/BucketView.java:
--------------------------------------------------------------------------------
1 | package com.qiao.view;
2 |
3 |
4 | import com.qiao.bean.Bucket;
5 | import com.qiao.imageselector.R;
6 | import com.qiao.util.ImageLoadUtil;
7 |
8 | import android.content.Context;
9 | import android.util.AttributeSet;
10 | import android.view.LayoutInflater;
11 | import android.widget.FrameLayout;
12 | import android.widget.ImageView;
13 | import android.widget.TextView;
14 |
15 | /**
16 | * 相册列表
17 | * @author Qiao
18 | * 2015-3-18
19 | */
20 | public class BucketView extends FrameLayout{
21 |
22 | private ImageView imageView;
23 | private TextView nameTextView, countTextView;
24 | private Bucket bucket;
25 |
26 | public BucketView(Context context) {
27 | super(context);
28 | initialize();
29 | }
30 |
31 | public BucketView(Context context, AttributeSet attrs) {
32 | super(context, attrs);
33 | initialize();
34 | }
35 |
36 | private void initialize() {
37 | LayoutInflater.from(getContext()).inflate(R.layout.bucket_item, this);
38 | imageView = (ImageView) findViewById(R.id.iv_album_la);
39 | nameTextView = (TextView) findViewById(R.id.tv_name_la);
40 | countTextView = (TextView) findViewById(R.id.tv_count_la);
41 | }
42 |
43 | public void setView(Bucket bucket){
44 | this.bucket = bucket;
45 | ImageLoadUtil.getInstance(3,ImageLoadUtil.Type.LIFO).loadImage(bucket.bucketUrl, imageView);
46 | nameTextView.setText(bucket.bucketName);
47 | countTextView.setText(""+bucket.count);
48 | }
49 |
50 | public Bucket getBucket(){
51 | return bucket;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/view/CheckedImageView.java:
--------------------------------------------------------------------------------
1 | package com.qiao.view;
2 |
3 | import com.qiao.imageselector.R;
4 | import com.qiao.util.ImageLoadUtil;
5 | import com.qiao.util.Util;
6 |
7 | import android.content.Context;
8 | import android.graphics.Bitmap;
9 | import android.graphics.Color;
10 | import android.util.AttributeSet;
11 | import android.view.LayoutInflater;
12 | import android.view.View;
13 | import android.view.ViewGroup;
14 | import android.view.ViewTreeObserver.OnGlobalLayoutListener;
15 | import android.widget.FrameLayout;
16 | import android.widget.ImageView;
17 |
18 | /**
19 | * 图片类
20 | * @author Qiao
21 | * 2015-3-18
22 | */
23 | public class CheckedImageView extends FrameLayout {
24 | public final static String TAG = "CheckedImageView:";
25 | final int checkedColor = Color.parseColor("#cc0081e4");
26 |
27 | private ImageView imageView; //图片
28 | private View checkedView; //选中框
29 | private String path;
30 | private boolean isChecked;
31 |
32 | public CheckedImageView(Context context) {
33 | super(context);
34 | initialize();
35 | }
36 |
37 | public CheckedImageView(Context context, AttributeSet attrs) {
38 | super(context, attrs);
39 | initialize();
40 | }
41 |
42 | private void initialize() {
43 | LayoutInflater.from(getContext()).inflate(R.layout.checked_image_item, this);
44 | imageView = (ImageView) findViewById(R.id.image_view);
45 | checkedView = findViewById(R.id.choosed_view);
46 | // imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
47 | // @Override
48 | // public void onGlobalLayout() {
49 | // imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
50 | // ViewGroup.LayoutParams vlp = imageView.getLayoutParams();
51 | // vlp.width = imageView.getWidth();
52 | // vlp.height = imageView.getHeight();
53 | // imageView.setLayoutParams(vlp);
54 | // if (path != null && !path.trim().isEmpty()) {
55 | // ImageLoadUtil.getInstance(3,ImageLoadUtil.Type.LIFO).loadImage(path,imageView);
56 | // }
57 | // }
58 | // });
59 | }
60 |
61 | public void setView(String path,boolean isChecked){
62 | imageView.setImageResource(R.drawable.pic_default);
63 | if (!Util.isNullOrWhiteSpace(path)) {
64 | this.path = path;
65 | setTag(TAG + path);
66 | Bitmap bm = ImageLoadUtil.getInstance().getBitmapFromLruCache(path);
67 | if(bm!=null){
68 | imageView.setImageBitmap(bm);
69 | }
70 | }
71 | setChecked(isChecked);
72 | }
73 |
74 | public void loadImage(){
75 | if (!Util.isNullOrWhiteSpace(path)) {
76 | this.path = path;
77 | ImageLoadUtil.getInstance(3,ImageLoadUtil.Type.LIFO).loadImage(path,imageView);
78 | }
79 | }
80 |
81 | public void setChecked(boolean isChecked){
82 | this.isChecked = isChecked;
83 | if(isChecked){
84 | imageView.setColorFilter(checkedColor);
85 | checkedView.setVisibility(VISIBLE);
86 | }else{
87 | imageView.setColorFilter(Color.TRANSPARENT);
88 | checkedView.setVisibility(INVISIBLE);
89 | }
90 | }
91 |
92 | public String getPath(){
93 | return path;
94 | }
95 |
96 | public boolean isChecked(){
97 | return isChecked;
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/view/MaskView.java:
--------------------------------------------------------------------------------
1 |
2 | package com.qiao.view;
3 |
4 | import android.content.Context;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.view.animation.AlphaAnimation;
8 | import android.view.animation.Animation;
9 | import android.view.animation.Animation.AnimationListener;
10 | import android.widget.FrameLayout;
11 |
12 | public class MaskView extends FrameLayout {
13 |
14 | protected ViewGroup targetView;
15 | protected boolean isShowing;
16 | protected long durationMillis;
17 | protected boolean canCancel;
18 | protected MaskListener maskListener;
19 |
20 | public MaskView(Context context, ViewGroup targetView) {
21 | super(context);
22 | this.targetView = targetView;
23 | initialize();
24 | }
25 |
26 | protected void initialize() {
27 | setBackgroundColor(0x88000000);
28 | setVisibility(View.GONE);
29 | ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
30 | targetView.addView(this, lp);
31 | setOnClickListener(new OnClickListener() {
32 | @Override
33 | public void onClick(View v) {
34 | if (canCancel) {
35 | hide();
36 | }
37 | }
38 | });
39 | }
40 |
41 | public void setDurationMillis(long durationMillis) {
42 | this.durationMillis = durationMillis;
43 | }
44 |
45 | public void setCanCancel(boolean can) {
46 | this.canCancel = can;
47 | }
48 |
49 | public void show() {
50 | if (isShowing)
51 | return;
52 | isShowing = true;
53 | clearAnimation();
54 | setVisibility(View.VISIBLE);
55 | AlphaAnimation an = new AlphaAnimation(0, 1);
56 | an.setDuration(durationMillis);
57 | startAnimation(an);
58 | if (maskListener != null)
59 | maskListener.onShow();
60 | }
61 |
62 | public void hide() {
63 | if (!isShowing)
64 | return;
65 | isShowing = false;
66 | clearAnimation();
67 | AlphaAnimation an = new AlphaAnimation(1, 0);
68 | an.setDuration(durationMillis);
69 | an.setAnimationListener(new AnimationListener() {
70 | @Override
71 | public void onAnimationStart(Animation animation) {
72 | }
73 |
74 | @Override
75 | public void onAnimationRepeat(Animation animation) {
76 | }
77 |
78 | @Override
79 | public void onAnimationEnd(Animation animation) {
80 | setVisibility(View.GONE);
81 | }
82 | });
83 | startAnimation(an);
84 | if (maskListener != null)
85 | maskListener.onHide();
86 | }
87 |
88 | public void setOnMaskListener(MaskListener listener) {
89 | this.maskListener = listener;
90 | }
91 |
92 | public interface MaskListener {
93 | void onShow();
94 |
95 | void onHide();
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/eclipse_version_1.0/src/com/qiao/view/PageImageView.java:
--------------------------------------------------------------------------------
1 | package com.qiao.view;
2 |
3 | import uk.co.senab.photoview.PhotoView;
4 | import android.content.Context;
5 | import android.util.AttributeSet;
6 | import android.view.Gravity;
7 | import android.view.View;
8 | import android.widget.FrameLayout;
9 | import android.widget.ProgressBar;
10 |
11 | public class PageImageView extends FrameLayout{
12 | private PhotoView imageView;
13 | private ProgressBar progressBar;
14 | private boolean isLoadSuccess;
15 |
16 | public PageImageView(Context context) {
17 | super(context);
18 | initalize();
19 | }
20 |
21 | public PageImageView(Context context, AttributeSet attrs) {
22 | super(context, attrs);
23 | initalize();
24 | }
25 |
26 | private void initalize() {
27 | imageView = new PhotoView(getContext());
28 | addView(imageView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
29 | progressBar = new ProgressBar(getContext());
30 | FrameLayout.LayoutParams flp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
31 | flp.gravity = Gravity.CENTER;
32 | addView(progressBar,flp);
33 |
34 | imageView.setVisibility(View.INVISIBLE);
35 | progressBar.setVisibility(View.VISIBLE);
36 | isLoadSuccess = true;
37 | }
38 |
39 | public PhotoView getImageView() {
40 | return imageView;
41 | }
42 |
43 | public void setImageView(PhotoView imageView) {
44 | this.imageView = imageView;
45 | }
46 |
47 | public ProgressBar getProgressBar() {
48 | return progressBar;
49 | }
50 |
51 | public void setProgressBar(ProgressBar progressBar) {
52 | this.progressBar = progressBar;
53 | }
54 |
55 | public boolean isLoadSuccess() {
56 | return isLoadSuccess;
57 | }
58 |
59 | public void setLoadSuccess(boolean isLoadSuccess) {
60 | this.isLoadSuccess = isLoadSuccess;
61 | }
62 |
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/screenShot/ImageDemo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/screenShot/ImageDemo.gif
--------------------------------------------------------------------------------
/screenShot/device-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/screenShot/device-1.png
--------------------------------------------------------------------------------
/screenShot/device-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/screenShot/device-2.png
--------------------------------------------------------------------------------
/screenShot/device-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qiaoidea/ImageSelector/1d3f36f64638ec22fedba418eb26f552d22b1b15/screenShot/device-3.png
--------------------------------------------------------------------------------