Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
MultiImageSelector
提交
4676bb68
M
MultiImageSelector
项目概览
门心叼龙
/
MultiImageSelector
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
MultiImageSelector
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4676bb68
编写于
4月 09, 2015
作者:
N
Nereo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support initial seleted images setting
上级
ddb5734e
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
95 addition
and
14 deletion
+95
-14
README.md
README.md
+9
-1
README_zh.md
README_zh.md
+11
-3
app/src/main/java/me/nereo/multiimageselector/MainActivity.java
...c/main/java/me/nereo/multiimageselector/MainActivity.java
+9
-2
multi-image-selector/src/main/java/me/nereo/multi_image_selector/MultiImageSelectorActivity.java
...ereo/multi_image_selector/MultiImageSelectorActivity.java
+11
-0
multi-image-selector/src/main/java/me/nereo/multi_image_selector/MultiImageSelectorFragment.java
...ereo/multi_image_selector/MultiImageSelectorFragment.java
+17
-1
multi-image-selector/src/main/java/me/nereo/multi_image_selector/adapter/FolderAdapter.java
.../me/nereo/multi_image_selector/adapter/FolderAdapter.java
+1
-1
multi-image-selector/src/main/java/me/nereo/multi_image_selector/adapter/ImageGridAdapter.java
.../nereo/multi_image_selector/adapter/ImageGridAdapter.java
+33
-4
multi-image-selector/src/main/res/layout/list_item_folder.xml
...i-image-selector/src/main/res/layout/list_item_folder.xml
+2
-1
multi-image-selector/src/main/res/layout/list_item_image.xml
multi-image-selector/src/main/res/layout/list_item_image.xml
+2
-1
未找到文件。
README.md
浏览文件 @
4676bb68
...
...
@@ -56,7 +56,7 @@ No more steps, just enjoy. :)
###Custom Activity Style
*
Custome your own Activity
```
java
```
java
class
CustomerActivity
extends
Activity
implements
MultiImageSelectorFragment
.
Callback
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -95,6 +95,14 @@ class CustomerActivity extends Activity implements MultiImageSelectorFragment.Ca
-------------------
###Change Log
*
2015-4-9
1.
Fixed. When set
`EXTRA_SHOW_CAMERA`
to
`true`
, the first grid item onclick event were messed.
2.
Add. Support initial selected image list.
-------------------
###Thanks
*
[
square-picasso
](
https://github.com/square/picasso
)
A powerful image downloading and caching library for Android
...
...
README_zh.md
浏览文件 @
4676bb68
# MultiImageSelector
仿微信实现多图选择。支持单选和多选两
张
模式
仿微信实现多图选择。支持单选和多选两
种
模式
[
English Doc
](
README.md
)
...
...
@@ -18,7 +18,7 @@
*
第2步
代码中调用,例如:
```
java
```
java
Intent
intent
=
new
Intent
(
mContext
,
MultiImageSelectorActivity
.
class
);
// 是否显示调用相机拍照
...
...
@@ -56,7 +56,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
###自定义显示
*
自定义Activity
```
java
```
java
class
CustomerActivity
extends
Activity
implements
MultiImageSelectorFragment
.
Callback
{
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -95,6 +95,14 @@ class CustomerActivity extends Activity implements MultiImageSelectorFragment.Ca
-------------------
###更新日志
*
2015-4-9
1.
修复. 当设置
`EXTRA_SHOW_CAMERA`
为
`true`
时, 点击第一个Item会混乱的问题.
2.
新增. 支持初始化图片选择设定。
-------------------
###感谢
*
[
square-picasso
](
https://github.com/square/picasso
)
A powerful image downloading and caching library for Android
...
...
app/src/main/java/me/nereo/multiimageselector/MainActivity.java
浏览文件 @
4676bb68
...
...
@@ -12,6 +12,7 @@ import android.widget.EditText;
import
android.widget.RadioGroup
;
import
android.widget.TextView
;
import
java.util.ArrayList
;
import
java.util.List
;
import
me.nereo.multi_image_selector.MultiImageSelectorActivity
;
...
...
@@ -25,6 +26,8 @@ public class MainActivity extends ActionBarActivity {
private
RadioGroup
mChoiceMode
,
mShowCamera
;
private
EditText
mRequestNum
;
private
ArrayList
<
String
>
mSelectPath
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
...
...
@@ -73,6 +76,10 @@ public class MainActivity extends ActionBarActivity {
intent
.
putExtra
(
MultiImageSelectorActivity
.
EXTRA_SELECT_COUNT
,
maxNum
);
// 选择模式
intent
.
putExtra
(
MultiImageSelectorActivity
.
EXTRA_SELECT_MODE
,
selectedMode
);
// 默认选择
if
(
mSelectPath
!=
null
&&
mSelectPath
.
size
()>
0
){
intent
.
putExtra
(
MultiImageSelectorActivity
.
EXTRA_DEFAULT_SELECTED_LIST
,
mSelectPath
);
}
startActivityForResult
(
intent
,
REQUEST_IMAGE
);
}
...
...
@@ -84,9 +91,9 @@ public class MainActivity extends ActionBarActivity {
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
if
(
requestCode
==
REQUEST_IMAGE
){
if
(
resultCode
==
RESULT_OK
){
List
<
String
>
p
ath
=
data
.
getStringArrayListExtra
(
MultiImageSelectorActivity
.
EXTRA_RESULT
);
mSelectP
ath
=
data
.
getStringArrayListExtra
(
MultiImageSelectorActivity
.
EXTRA_RESULT
);
StringBuilder
sb
=
new
StringBuilder
();
for
(
String
p:
p
ath
){
for
(
String
p:
mSelectP
ath
){
sb
.
append
(
p
);
sb
.
append
(
"\n"
);
}
...
...
multi-image-selector/src/main/java/me/nereo/multi_image_selector/MultiImageSelectorActivity.java
浏览文件 @
4676bb68
...
...
@@ -24,6 +24,8 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
public
static
final
String
EXTRA_SHOW_CAMERA
=
"show_camera"
;
/** 选择结果,返回为 ArrayList<String> 图片路径集合 */
public
static
final
String
EXTRA_RESULT
=
"select_result"
;
/** 默认选择集 */
public
static
final
String
EXTRA_DEFAULT_SELECTED_LIST
=
"default_list"
;
/** 单选 */
public
static
final
int
MODE_SINGLE
=
0
;
...
...
@@ -43,11 +45,15 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
mDefaultCount
=
intent
.
getIntExtra
(
EXTRA_SELECT_COUNT
,
9
);
int
mode
=
intent
.
getIntExtra
(
EXTRA_SELECT_MODE
,
MODE_MULTI
);
boolean
isShow
=
intent
.
getBooleanExtra
(
EXTRA_SHOW_CAMERA
,
true
);
if
(
mode
==
MODE_MULTI
&&
intent
.
hasExtra
(
EXTRA_DEFAULT_SELECTED_LIST
))
{
resultList
=
intent
.
getStringArrayListExtra
(
EXTRA_DEFAULT_SELECTED_LIST
);
}
Bundle
bundle
=
new
Bundle
();
bundle
.
putInt
(
MultiImageSelectorFragment
.
EXTRA_SELECT_COUNT
,
mDefaultCount
);
bundle
.
putInt
(
MultiImageSelectorFragment
.
EXTRA_SELECT_MODE
,
mode
);
bundle
.
putBoolean
(
MultiImageSelectorFragment
.
EXTRA_SHOW_CAMERA
,
isShow
);
bundle
.
putStringArrayList
(
MultiImageSelectorFragment
.
EXTRA_DEFAULT_SELECTED_LIST
,
resultList
);
getSupportFragmentManager
().
beginTransaction
()
.
add
(
R
.
id
.
image_grid
,
Fragment
.
instantiate
(
this
,
MultiImageSelectorFragment
.
class
.
getName
(),
bundle
))
...
...
@@ -67,6 +73,9 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
if
(
resultList
==
null
||
resultList
.
size
()<=
0
){
mSubmitButton
.
setText
(
"完成"
);
mSubmitButton
.
setEnabled
(
false
);
}
else
{
mSubmitButton
.
setText
(
"完成("
+
resultList
.
size
()+
"/"
+
mDefaultCount
+
")"
);
mSubmitButton
.
setEnabled
(
true
);
}
mSubmitButton
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
...
...
@@ -110,6 +119,8 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
if
(
resultList
.
contains
(
path
)){
resultList
.
remove
(
path
);
mSubmitButton
.
setText
(
"完成("
+
resultList
.
size
()+
"/"
+
mDefaultCount
+
")"
);
}
else
{
mSubmitButton
.
setText
(
"完成("
+
resultList
.
size
()+
"/"
+
mDefaultCount
+
")"
);
}
// 当为选择图片时候的状态
if
(
resultList
.
size
()
==
0
){
...
...
multi-image-selector/src/main/java/me/nereo/multi_image_selector/MultiImageSelectorFragment.java
浏览文件 @
4676bb68
...
...
@@ -50,6 +50,8 @@ public class MultiImageSelectorFragment extends Fragment {
public
static
final
String
EXTRA_SELECT_MODE
=
"select_count_mode"
;
/** 是否显示相机,boolean类型 */
public
static
final
String
EXTRA_SHOW_CAMERA
=
"show_camera"
;
/** 默认选择的数据集 */
public
static
final
String
EXTRA_DEFAULT_SELECTED_LIST
=
"default_result"
;
/** 单选 */
public
static
final
int
MODE_SINGLE
=
0
;
/** 多选 */
...
...
@@ -114,6 +116,14 @@ public class MultiImageSelectorFragment extends Fragment {
// 图片选择模式
final
int
mode
=
getArguments
().
getInt
(
EXTRA_SELECT_MODE
);
// 默认选择
if
(
mode
==
MODE_MULTI
)
{
ArrayList
<
String
>
tmp
=
getArguments
().
getStringArrayList
(
EXTRA_DEFAULT_SELECTED_LIST
);
if
(
tmp
!=
null
&&
tmp
.
size
()>
0
)
{
resultList
=
tmp
;
}
}
// 是否显示照相机
final
boolean
showCamera
=
getArguments
().
getBoolean
(
EXTRA_SHOW_CAMERA
,
true
);
mImageAdapter
=
new
ImageGridAdapter
(
getActivity
(),
showCamera
);
...
...
@@ -210,7 +220,7 @@ public class MultiImageSelectorFragment extends Fragment {
mGridView
.
setOnItemClickListener
(
new
AdapterView
.
OnItemClickListener
()
{
@Override
public
void
onItemClick
(
AdapterView
<?>
adapterView
,
View
view
,
int
i
,
long
l
)
{
if
(
showCamera
){
if
(
mImageAdapter
.
isShowCamera
()
){
// 如果显示照相机,则第一个Grid显示为照相机,处理特殊逻辑
if
(
i
==
0
){
showCameraAction
();
...
...
@@ -413,6 +423,12 @@ public class MultiImageSelectorFragment extends Fragment {
}
while
(
data
.
moveToNext
());
mImageAdapter
.
setData
(
images
);
// 设定默认选择
if
(
resultList
!=
null
&&
resultList
.
size
()>
0
){
mImageAdapter
.
setDefaultSelected
(
resultList
);
}
mFolderAdapter
.
setData
(
mResultFolder
);
hasFolderGened
=
true
;
...
...
multi-image-selector/src/main/java/me/nereo/multi_image_selector/adapter/FolderAdapter.java
浏览文件 @
4676bb68
...
...
@@ -141,7 +141,7 @@ public class FolderAdapter extends BaseAdapter {
// 显示图片
Picasso
.
with
(
mContext
)
.
load
(
new
File
(
data
.
cover
.
path
))
.
erro
r
(
R
.
drawable
.
default_error
)
.
placeholde
r
(
R
.
drawable
.
default_error
)
.
resize
(
mImageSize
,
mImageSize
)
.
centerCrop
()
.
into
(
cover
);
...
...
multi-image-selector/src/main/java/me/nereo/multi_image_selector/adapter/ImageGridAdapter.java
浏览文件 @
4676bb68
package
me.nereo.multi_image_selector.adapter
;
import
android.content.Context
;
import
android.text.TextUtils
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
...
...
@@ -32,7 +33,6 @@ public class ImageGridAdapter extends BaseAdapter {
private
LayoutInflater
mInflater
;
private
boolean
showCamera
=
true
;
private
boolean
showSelectIndicator
=
true
;
private
boolean
justChangeIndicator
=
false
;
private
List
<
Image
>
mImages
=
new
ArrayList
<>();
private
List
<
Image
>
mSelectedImages
=
new
ArrayList
<>();
...
...
@@ -61,6 +61,10 @@ public class ImageGridAdapter extends BaseAdapter {
notifyDataSetChanged
();
}
public
boolean
isShowCamera
(){
return
showCamera
;
}
/**
* 选择某个图片,改变选择状态
* @param image
...
...
@@ -71,17 +75,42 @@ public class ImageGridAdapter extends BaseAdapter {
}
else
{
mSelectedImages
.
add
(
image
);
}
justChangeIndicator
=
true
;
notifyDataSetChanged
();
}
/**
* 通过图片路径设置默认选择
* @param resultList
*/
public
void
setDefaultSelected
(
ArrayList
<
String
>
resultList
)
{
for
(
String
path
:
resultList
){
Image
image
=
getImageByPath
(
path
);
if
(
image
!=
null
){
mSelectedImages
.
add
(
image
);
}
}
if
(
mSelectedImages
.
size
()
>
0
){
notifyDataSetChanged
();
}
}
private
Image
getImageByPath
(
String
path
){
if
(
mImages
!=
null
&&
mImages
.
size
()>
0
){
for
(
Image
image
:
mImages
){
if
(
image
.
path
.
equalsIgnoreCase
(
path
)){
return
image
;
}
}
}
return
null
;
}
/**
* 设置数据集
* @param images
*/
public
void
setData
(
List
<
Image
>
images
)
{
mSelectedImages
.
clear
();
justChangeIndicator
=
false
;
if
(
images
!=
null
&&
images
.
size
()>
0
){
mImages
=
images
;
...
...
@@ -224,7 +253,7 @@ public class ImageGridAdapter extends BaseAdapter {
Picasso
.
with
(
mContext
)
.
load
(
imageFile
)
.
placeholder
(
R
.
drawable
.
default_error
)
.
error
(
R
.
drawable
.
default_error
)
//
.error(R.drawable.default_error)
.
resize
(
mItemSize
,
mItemSize
)
.
centerCrop
()
.
into
(
image
);
...
...
multi-image-selector/src/main/res/layout/list_item_folder.xml
浏览文件 @
4676bb68
...
...
@@ -14,7 +14,8 @@
android:id=
"@+id/cover"
tools:src=
"@drawable/btn_back"
android:layout_gravity=
"center_vertical"
android:scaleType=
"centerCrop"
android:scaleType=
"centerInside"
android:src=
"@drawable/default_error"
android:layout_width=
"@dimen/folder_cover_size"
android:layout_height=
"@dimen/folder_cover_size"
/>
...
...
multi-image-selector/src/main/res/layout/list_item_image.xml
浏览文件 @
4676bb68
...
...
@@ -4,7 +4,8 @@
<ImageView
android:id=
"@+id/image"
android:scaleType=
"centerCrop"
android:scaleType=
"centerInside"
android:src=
"@drawable/default_error"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录