() {
+ @Override
+ public ImageItem createFromParcel(Parcel source) {
+ return new ImageItem(source);
+ }
+
+ @Override
+ public ImageItem[] newArray(int size) {
+ return new ImageItem[size];
+ }
+ };
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/loader/ImageLoader.java b/imagepicker/src/main/java/com/lzy/imagepicker/loader/ImageLoader.java
index fceb3c9..d3c2df2 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/loader/ImageLoader.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/loader/ImageLoader.java
@@ -18,5 +18,7 @@ public interface ImageLoader extends Serializable {
void displayImage(Activity activity, String path, ImageView imageView, int width, int height);
+ void displayImagePreview(Activity activity, String path, ImageView imageView, int width, int height);
+
void clearMemoryCache();
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageBaseActivity.java b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageBaseActivity.java
index f197143..6d84316 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageBaseActivity.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageBaseActivity.java
@@ -11,6 +11,7 @@
import android.view.WindowManager;
import android.widget.Toast;
+import com.lzy.imagepicker.ImagePicker;
import com.lzy.imagepicker.R;
import com.lzy.imagepicker.view.SystemBarTintManager;
@@ -35,7 +36,7 @@ protected void onCreate(Bundle savedInstanceState) {
}
tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
- tintManager.setStatusBarTintResource(R.color.status_bar); //设置上方状态栏的颜色
+ tintManager.setStatusBarTintResource(R.color.ip_color_primary_dark); //设置上方状态栏的颜色
}
@TargetApi(19)
@@ -58,4 +59,16 @@ public boolean checkPermission(@NonNull String permission) {
public void showToast(String toastText) {
Toast.makeText(getApplicationContext(), toastText, Toast.LENGTH_SHORT).show();
}
+
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ ImagePicker.getInstance().restoreInstanceState(savedInstanceState);
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ ImagePicker.getInstance().saveInstanceState(outState);
+ }
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageCropActivity.java b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageCropActivity.java
index 3dfe9aa..27cabe5 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageCropActivity.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageCropActivity.java
@@ -47,10 +47,10 @@ protected void onCreate(Bundle savedInstanceState) {
//初始化View
findViewById(R.id.btn_back).setOnClickListener(this);
Button btn_ok = (Button) findViewById(R.id.btn_ok);
- btn_ok.setText(getString(R.string.complete));
+ btn_ok.setText(getString(R.string.ip_complete));
btn_ok.setOnClickListener(this);
TextView tv_des = (TextView) findViewById(R.id.tv_des);
- tv_des.setText(getString(R.string.photo_crop));
+ tv_des.setText(getString(R.string.ip_photo_crop));
mCropImageView = (CropImageView) findViewById(R.id.cv_crop_image);
mCropImageView.setOnBitmapSaveCompleteListener(this);
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageGridActivity.java b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageGridActivity.java
index 402f602..12974bb 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageGridActivity.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImageGridActivity.java
@@ -8,6 +8,7 @@
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
@@ -15,7 +16,7 @@
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
-import android.widget.GridView;
+import android.widget.TextView;
import com.lzy.imagepicker.DataHolder;
import com.lzy.imagepicker.ImageDataSource;
@@ -26,7 +27,9 @@
import com.lzy.imagepicker.adapter.ImageRecyclerAdapter.OnImageItemClickListener;
import com.lzy.imagepicker.bean.ImageFolder;
import com.lzy.imagepicker.bean.ImageItem;
+import com.lzy.imagepicker.util.Utils;
import com.lzy.imagepicker.view.FolderPopUpWindow;
+import com.lzy.imagepicker.view.GridSpacingItemDecoration;
import java.util.ArrayList;
import java.util.List;
@@ -38,13 +41,14 @@
* 创建日期:2016/5/19
* 描 述:
* 修订历史:
- *
+ *
* 2017-03-17
- * @author nanchen
- * 新增可直接传递是否裁剪参数,以及直接拍照
- *
*
- * ================================================
+ * @author nanchen
+ * 新增可直接传递是否裁剪参数,以及直接拍照
+ *
+ *
+ * ================================================
*/
public class ImageGridActivity extends ImageBaseActivity implements ImageDataSource.OnImagesLoadedListener, OnImageItemClickListener, ImagePicker.OnImageSelectedListener, View.OnClickListener {
@@ -56,15 +60,15 @@ public class ImageGridActivity extends ImageBaseActivity implements ImageDataSou
private ImagePicker imagePicker;
private boolean isOrigin = false; //是否选中原图
- private GridView mGridView; //图片展示控件
private View mFooterBar; //底部栏
private Button mBtnOk; //确定按钮
- private Button mBtnDir; //文件夹切换按钮
- private Button mBtnPre; //预览按钮
+ private View mllDir; //文件夹切换按钮
+ private TextView mtvDir; //显示当前文件夹
+ private TextView mBtnPre; //预览按钮
private ImageFolderAdapter mImageFolderAdapter; //图片文件夹的适配器
private FolderPopUpWindow mFolderPopupWindow; //ImageSet的PopupWindow
private List mImageFolders; //所有的图片文件夹
-// private ImageGridAdapter mImageGridAdapter; //图片九宫格展示的适配器
+ // private ImageGridAdapter mImageGridAdapter; //图片九宫格展示的适配器
private boolean directPhoto = false; // 默认不是直接调取相机
private RecyclerView mRecyclerView;
private ImageRecyclerAdapter mRecyclerAdapter;
@@ -73,7 +77,7 @@ public class ImageGridActivity extends ImageBaseActivity implements ImageDataSou
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
- directPhoto = savedInstanceState.getBoolean(EXTRAS_TAKE_PICKERS,false);
+ directPhoto = savedInstanceState.getBoolean(EXTRAS_TAKE_PICKERS, false);
}
@Override
@@ -93,9 +97,9 @@ protected void onCreate(Bundle savedInstanceState) {
Intent data = getIntent();
// 新增可直接拍照
- if (data != null && data.getExtras() != null){
- directPhoto = data.getBooleanExtra(EXTRAS_TAKE_PICKERS,false); // 默认不是直接打开相机
- if (directPhoto){
+ if (data != null && data.getExtras() != null) {
+ directPhoto = data.getBooleanExtra(EXTRAS_TAKE_PICKERS, false); // 默认不是直接打开相机
+ if (directPhoto) {
if (!(checkPermission(Manifest.permission.CAMERA))) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, ImageGridActivity.REQUEST_PERMISSION_CAMERA);
} else {
@@ -113,12 +117,12 @@ protected void onCreate(Bundle savedInstanceState) {
findViewById(R.id.btn_back).setOnClickListener(this);
mBtnOk = (Button) findViewById(R.id.btn_ok);
mBtnOk.setOnClickListener(this);
- mBtnDir = (Button) findViewById(R.id.btn_dir);
- mBtnDir.setOnClickListener(this);
- mBtnPre = (Button) findViewById(R.id.btn_preview);
+ mBtnPre = (TextView) findViewById(R.id.btn_preview);
mBtnPre.setOnClickListener(this);
- mGridView = (GridView) findViewById(R.id.gridview);
mFooterBar = findViewById(R.id.footer_bar);
+ mllDir = findViewById(R.id.ll_dir);
+ mllDir.setOnClickListener(this);
+ mtvDir = (TextView) findViewById(R.id.tv_dir);
if (imagePicker.isMultiMode()) {
mBtnOk.setVisibility(View.VISIBLE);
mBtnPre.setVisibility(View.VISIBLE);
@@ -129,7 +133,7 @@ protected void onCreate(Bundle savedInstanceState) {
// mImageGridAdapter = new ImageGridAdapter(this, null);
mImageFolderAdapter = new ImageFolderAdapter(this, null);
- mRecyclerAdapter = new ImageRecyclerAdapter(this,null);
+ mRecyclerAdapter = new ImageRecyclerAdapter(this, null);
onImageSelected(0, null, false);
@@ -139,7 +143,7 @@ protected void onCreate(Bundle savedInstanceState) {
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_STORAGE);
}
- }else{
+ } else {
new ImageDataSource(this, null, this);
}
}
@@ -176,7 +180,7 @@ public void onClick(View v) {
intent.putExtra(ImagePicker.EXTRA_RESULT_ITEMS, imagePicker.getSelectedImages());
setResult(ImagePicker.RESULT_CODE_ITEMS, intent); //多选不允许裁剪裁剪,返回数据
finish();
- } else if (id == R.id.btn_dir) {
+ } else if (id == R.id.ll_dir) {
if (mImageFolders == null) {
Log.i("ImageGridActivity", "您的手机没有图片");
return;
@@ -198,7 +202,7 @@ public void onClick(View v) {
intent.putExtra(ImagePicker.EXTRA_SELECTED_IMAGE_POSITION, 0);
intent.putExtra(ImagePicker.EXTRA_IMAGE_ITEMS, imagePicker.getSelectedImages());
intent.putExtra(ImagePreviewActivity.ISORIGIN, isOrigin);
- intent.putExtra(ImagePicker.EXTRA_FROM_ITEMS,true);
+ intent.putExtra(ImagePicker.EXTRA_FROM_ITEMS, true);
startActivityForResult(intent, ImagePicker.REQUEST_CODE_PREVIEW);
} else if (id == R.id.btn_back) {
//点击返回按钮
@@ -206,7 +210,9 @@ public void onClick(View v) {
}
}
- /** 创建弹出的ListView */
+ /**
+ * 创建弹出的ListView
+ */
private void createPopupFolderList() {
mFolderPopupWindow = new FolderPopUpWindow(this, mImageFolderAdapter);
mFolderPopupWindow.setOnItemClickListener(new FolderPopUpWindow.OnItemClickListener() {
@@ -219,9 +225,8 @@ public void onItemClick(AdapterView> adapterView, View view, int position, lon
if (null != imageFolder) {
// mImageGridAdapter.refreshData(imageFolder.images);
mRecyclerAdapter.refreshData(imageFolder.images);
- mBtnDir.setText(imageFolder.name);
+ mtvDir.setText(imageFolder.name);
}
- mGridView.smoothScrollToPosition(0);//滑动到顶部
}
});
mFolderPopupWindow.setMargin(mFooterBar.getHeight());
@@ -234,15 +239,14 @@ public void onImagesLoaded(List imageFolders) {
if (imageFolders.size() == 0) {
// mImageGridAdapter.refreshData(null);
mRecyclerAdapter.refreshData(null);
- }
- else{
+ } else {
// mImageGridAdapter.refreshData(imageFolders.get(0).images);
mRecyclerAdapter.refreshData(imageFolders.get(0).images);
}
// mImageGridAdapter.setOnImageItemClickListener(this);
-// mGridView.setAdapter(mImageGridAdapter);
mRecyclerAdapter.setOnImageItemClickListener(this);
- mRecyclerView.setLayoutManager(new GridLayoutManager(this,3));
+ mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
+ mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, Utils.dp2px(this, 2), false));
mRecyclerView.setAdapter(mRecyclerAdapter);
mImageFolderAdapter.refreshData(imageFolders);
}
@@ -287,19 +291,24 @@ public void onImageItemClick(View view, ImageItem imageItem, int position) {
@Override
public void onImageSelected(int position, ImageItem item, boolean isAdd) {
if (imagePicker.getSelectImageCount() > 0) {
- mBtnOk.setText(getString(R.string.select_complete, imagePicker.getSelectImageCount(), imagePicker.getSelectLimit()));
+ mBtnOk.setText(getString(R.string.ip_select_complete, imagePicker.getSelectImageCount(), imagePicker.getSelectLimit()));
mBtnOk.setEnabled(true);
mBtnPre.setEnabled(true);
+ mBtnPre.setText(getResources().getString(R.string.ip_preview_count, imagePicker.getSelectImageCount()));
+ mBtnPre.setTextColor(ContextCompat.getColor(this, R.color.ip_text_primary_inverted));
+ mBtnOk.setTextColor(ContextCompat.getColor(this, R.color.ip_text_primary_inverted));
} else {
- mBtnOk.setText(getString(R.string.complete));
+ mBtnOk.setText(getString(R.string.ip_complete));
mBtnOk.setEnabled(false);
mBtnPre.setEnabled(false);
+ mBtnPre.setText(getResources().getString(R.string.ip_preview));
+ mBtnPre.setTextColor(ContextCompat.getColor(this, R.color.ip_text_secondary_inverted));
+ mBtnOk.setTextColor(ContextCompat.getColor(this, R.color.ip_text_secondary_inverted));
}
- mBtnPre.setText(getResources().getString(R.string.preview_count, imagePicker.getSelectImageCount()));
// mImageGridAdapter.notifyDataSetChanged();
// mRecyclerAdapter.notifyItemChanged(position); // 17/4/21 fix the position while click img to preview
// mRecyclerAdapter.notifyItemChanged(position + (imagePicker.isShowCamera() ? 1 : 0));// 17/4/24 fix the position while click right bottom preview button
- for (int i = imagePicker.isShowCamera()? 1 : 0; i < mRecyclerAdapter.getItemCount(); i++) {
+ for (int i = imagePicker.isShowCamera() ? 1 : 0; i < mRecyclerAdapter.getItemCount(); i++) {
if (mRecyclerAdapter.getItem(i).path != null && mRecyclerAdapter.getItem(i).path.equals(item.path)) {
mRecyclerAdapter.notifyItemChanged(i);
return;
@@ -363,7 +372,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
setResult(ImagePicker.RESULT_CODE_ITEMS, intent); //单选不需要裁剪,返回数据
finish();
}
- } else if (directPhoto){
+ } else if (directPhoto) {
finish();
}
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewActivity.java b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewActivity.java
index c0b05a2..0433585 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewActivity.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewActivity.java
@@ -1,10 +1,13 @@
package com.lzy.imagepicker.ui;
import android.content.Intent;
+import android.graphics.Color;
+import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.text.format.Formatter;
import android.view.View;
+import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.CompoundButton;
@@ -13,6 +16,7 @@
import com.lzy.imagepicker.ImagePicker;
import com.lzy.imagepicker.R;
import com.lzy.imagepicker.bean.ImageItem;
+import com.lzy.imagepicker.util.Utils;
import com.lzy.imagepicker.view.SuperCheckBox;
/**
@@ -47,10 +51,15 @@ protected void onCreate(Bundle savedInstanceState) {
bottomBar = findViewById(R.id.bottom_bar);
bottomBar.setVisibility(View.VISIBLE);
-
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Utils.hasVirtualNavigationBar(this)) {
+ View marginView = findViewById(R.id.margin_bottom);
+ ViewGroup.LayoutParams layoutParams = marginView.getLayoutParams();
+ layoutParams.height = Utils.getNavigationBarHeight(this);
+ marginView.requestLayout();
+ }
mCbCheck = (SuperCheckBox) findViewById(R.id.cb_check);
mCbOrigin = (SuperCheckBox) findViewById(R.id.cb_origin);
- mCbOrigin.setText(getString(R.string.origin));
+ mCbOrigin.setText(getString(R.string.ip_origin));
mCbOrigin.setOnCheckedChangeListener(this);
mCbOrigin.setChecked(isOrigin);
@@ -58,7 +67,7 @@ protected void onCreate(Bundle savedInstanceState) {
onImageSelected(0, null, false);
ImageItem item = mImageItems.get(mCurrentPosition);
boolean isSelected = imagePicker.isSelect(item);
- mTitleCount.setText(getString(R.string.preview_image_count, mCurrentPosition + 1, mImageItems.size()));
+ mTitleCount.setText(getString(R.string.ip_preview_image_count, mCurrentPosition + 1, mImageItems.size()));
mCbCheck.setChecked(isSelected);
//滑动ViewPager的时候,根据外界的数据改变当前的选中状态和当前的图片的位置描述文本
mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@@ -68,7 +77,7 @@ public void onPageSelected(int position) {
ImageItem item = mImageItems.get(mCurrentPosition);
boolean isSelected = imagePicker.isSelect(item);
mCbCheck.setChecked(isSelected);
- mTitleCount.setText(getString(R.string.preview_image_count, mCurrentPosition + 1, mImageItems.size()));
+ mTitleCount.setText(getString(R.string.ip_preview_image_count, mCurrentPosition + 1, mImageItems.size()));
}
});
//当点击当前选中按钮的时候,需要根据当前的选中状态添加和移除图片
@@ -78,7 +87,7 @@ public void onClick(View v) {
ImageItem imageItem = mImageItems.get(mCurrentPosition);
int selectLimit = imagePicker.getSelectLimit();
if (mCbCheck.isChecked() && selectedImages.size() >= selectLimit) {
- Toast.makeText(ImagePreviewActivity.this, ImagePreviewActivity.this.getString(R.string.select_limit, selectLimit), Toast.LENGTH_SHORT).show();
+ Toast.makeText(ImagePreviewActivity.this, ImagePreviewActivity.this.getString(R.string.ip_select_limit, selectLimit), Toast.LENGTH_SHORT).show();
mCbCheck.setChecked(false);
} else {
imagePicker.addSelectedImageItem(mCurrentPosition, imageItem, mCbCheck.isChecked());
@@ -94,11 +103,11 @@ public void onClick(View v) {
@Override
public void onImageSelected(int position, ImageItem item, boolean isAdd) {
if (imagePicker.getSelectImageCount() > 0) {
- mBtnOk.setText(getString(R.string.select_complete, imagePicker.getSelectImageCount(), imagePicker.getSelectLimit()));
- mBtnOk.setEnabled(true);
+ mBtnOk.setText(getString(R.string.ip_select_complete,
+ String.valueOf(imagePicker.getSelectImageCount()),
+ String.valueOf(imagePicker.getSelectLimit())));
} else {
- mBtnOk.setText(getString(R.string.complete));
- mBtnOk.setEnabled(false);
+ mBtnOk.setText(getString(R.string.ip_complete));
}
if (mCbOrigin.isChecked()) {
@@ -106,7 +115,7 @@ public void onImageSelected(int position, ImageItem item, boolean isAdd) {
for (ImageItem imageItem : selectedImages)
size += imageItem.size;
String fileSize = Formatter.formatFileSize(this, size);
- mCbOrigin.setText(getString(R.string.origin_size, fileSize));
+ mCbOrigin.setText(getString(R.string.ip_origin_size, fileSize));
}
}
@@ -114,10 +123,16 @@ public void onImageSelected(int position, ImageItem item, boolean isAdd) {
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_ok) {
+ if (imagePicker.getSelectedImages().size() == 0) {
+ mCbCheck.setChecked(true);
+ ImageItem imageItem = mImageItems.get(mCurrentPosition);
+ imagePicker.addSelectedImageItem(mCurrentPosition, imageItem, mCbCheck.isChecked());
+ }
Intent intent = new Intent();
intent.putExtra(ImagePicker.EXTRA_RESULT_ITEMS, imagePicker.getSelectedImages());
setResult(ImagePicker.RESULT_CODE_ITEMS, intent);
finish();
+
} else if (id == R.id.btn_back) {
Intent intent = new Intent();
intent.putExtra(ImagePreviewActivity.ISORIGIN, isOrigin);
@@ -145,10 +160,10 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
size += item.size;
String fileSize = Formatter.formatFileSize(this, size);
isOrigin = true;
- mCbOrigin.setText(getString(R.string.origin_size, fileSize));
+ mCbOrigin.setText(getString(R.string.ip_origin_size, fileSize));
} else {
isOrigin = false;
- mCbOrigin.setText(getString(R.string.origin));
+ mCbOrigin.setText(getString(R.string.ip_origin));
}
}
}
@@ -159,7 +174,9 @@ protected void onDestroy() {
super.onDestroy();
}
- /** 单击时,隐藏头和尾 */
+ /**
+ * 单击时,隐藏头和尾
+ */
@Override
public void onImageSingleTap() {
if (topBar.getVisibility() == View.VISIBLE) {
@@ -167,7 +184,7 @@ public void onImageSingleTap() {
bottomBar.setAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out));
topBar.setVisibility(View.GONE);
bottomBar.setVisibility(View.GONE);
- tintManager.setStatusBarTintResource(R.color.transparent);//通知栏所需颜色
+ tintManager.setStatusBarTintResource(Color.TRANSPARENT);//通知栏所需颜色
//给最外层布局加上这个属性表示,Activity全屏显示,且状态栏被隐藏覆盖掉。
// if (Build.VERSION.SDK_INT >= 16) content.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
} else {
@@ -175,7 +192,7 @@ public void onImageSingleTap() {
bottomBar.setAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
topBar.setVisibility(View.VISIBLE);
bottomBar.setVisibility(View.VISIBLE);
- tintManager.setStatusBarTintResource(R.color.status_bar);//通知栏所需颜色
+ tintManager.setStatusBarTintResource(R.color.ip_color_primary_dark);//通知栏所需颜色
//Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住
// if (Build.VERSION.SDK_INT >= 16) content.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewBaseActivity.java b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewBaseActivity.java
index 9f3d1b6..894a699 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewBaseActivity.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewBaseActivity.java
@@ -90,9 +90,21 @@ public void OnPhotoTapListener(View view, float v, float v1) {
mViewPager.setCurrentItem(mCurrentPosition, false);
//初始化当前页面的状态
- mTitleCount.setText(getString(R.string.preview_image_count, mCurrentPosition + 1, mImageItems.size()));
+ mTitleCount.setText(getString(R.string.ip_preview_image_count, mCurrentPosition + 1, mImageItems.size()));
}
/** 单击时,隐藏头和尾 */
public abstract void onImageSingleTap();
+
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ super.onRestoreInstanceState(savedInstanceState);
+ ImagePicker.getInstance().restoreInstanceState(savedInstanceState);
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ ImagePicker.getInstance().saveInstanceState(outState);
+ }
}
\ No newline at end of file
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewDelActivity.java b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewDelActivity.java
index 224c1a4..5d2f1cf 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewDelActivity.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/ui/ImagePreviewDelActivity.java
@@ -2,6 +2,7 @@
import android.content.DialogInterface;
import android.content.Intent;
+import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AlertDialog;
@@ -32,13 +33,13 @@ protected void onCreate(Bundle savedInstanceState) {
mBtnDel.setVisibility(View.VISIBLE);
topBar.findViewById(R.id.btn_back).setOnClickListener(this);
- mTitleCount.setText(getString(R.string.preview_image_count, mCurrentPosition + 1, mImageItems.size()));
+ mTitleCount.setText(getString(R.string.ip_preview_image_count, mCurrentPosition + 1, mImageItems.size()));
//滑动ViewPager的时候,根据外界的数据改变当前的选中状态和当前的图片的位置描述文本
mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
mCurrentPosition = position;
- mTitleCount.setText(getString(R.string.preview_image_count, mCurrentPosition + 1, mImageItems.size()));
+ mTitleCount.setText(getString(R.string.ip_preview_image_count, mCurrentPosition + 1, mImageItems.size()));
}
});
}
@@ -67,7 +68,7 @@ public void onClick(DialogInterface dialog, int which) {
if (mImageItems.size() > 0) {
mAdapter.setData(mImageItems);
mAdapter.notifyDataSetChanged();
- mTitleCount.setText(getString(R.string.preview_image_count, mCurrentPosition + 1, mImageItems.size()));
+ mTitleCount.setText(getString(R.string.ip_preview_image_count, mCurrentPosition + 1, mImageItems.size()));
} else {
onBackPressed();
}
@@ -92,13 +93,13 @@ public void onImageSingleTap() {
if (topBar.getVisibility() == View.VISIBLE) {
topBar.setAnimation(AnimationUtils.loadAnimation(this, com.lzy.imagepicker.R.anim.top_out));
topBar.setVisibility(View.GONE);
- tintManager.setStatusBarTintResource(com.lzy.imagepicker.R.color.transparent);//通知栏所需颜色
+ tintManager.setStatusBarTintResource(Color.TRANSPARENT);//通知栏所需颜色
//给最外层布局加上这个属性表示,Activity全屏显示,且状态栏被隐藏覆盖掉。
// if (Build.VERSION.SDK_INT >= 16) content.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
} else {
topBar.setAnimation(AnimationUtils.loadAnimation(this, com.lzy.imagepicker.R.anim.top_in));
topBar.setVisibility(View.VISIBLE);
- tintManager.setStatusBarTintResource(com.lzy.imagepicker.R.color.status_bar);//通知栏所需颜色
+ tintManager.setStatusBarTintResource(R.color.ip_color_primary_dark);//通知栏所需颜色
//Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住
// if (Build.VERSION.SDK_INT >= 16) content.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/util/Utils.java b/imagepicker/src/main/java/com/lzy/imagepicker/util/Utils.java
index aff208a..c25d777 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/util/Utils.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/util/Utils.java
@@ -2,8 +2,15 @@
import android.app.Activity;
import android.content.Context;
+import android.os.Build;
import android.os.Environment;
import android.util.DisplayMetrics;
+import android.util.TypedValue;
+import android.view.Display;
+import android.view.KeyCharacterMap;
+import android.view.KeyEvent;
+import android.view.ViewConfiguration;
+import android.view.WindowManager;
/**
* ================================================
@@ -56,4 +63,52 @@ public static DisplayMetrics getScreenPix(Activity activity) {
return displaysMetrics;
}
+ /** dp转px */
+ public static int dp2px(Context context, float dpVal) {
+ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
+ dpVal, context.getResources().getDisplayMetrics());
+ }
+
+ /**
+ * 判断手机是否含有虚拟按键 99%
+ *
+ */
+ public static boolean hasVirtualNavigationBar(Context context) {
+ boolean hasSoftwareKeys = true;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ Display d = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
+
+ DisplayMetrics realDisplayMetrics = new DisplayMetrics();
+ d.getRealMetrics(realDisplayMetrics);
+
+ int realHeight = realDisplayMetrics.heightPixels;
+ int realWidth = realDisplayMetrics.widthPixels;
+
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ d.getMetrics(displayMetrics);
+
+ int displayHeight = displayMetrics.heightPixels;
+ int displayWidth = displayMetrics.widthPixels;
+
+ hasSoftwareKeys = (realWidth - displayWidth) > 0 || (realHeight - displayHeight) > 0;
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
+ boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
+ hasSoftwareKeys = !hasMenuKey && !hasBackKey;
+ }
+
+ return hasSoftwareKeys;
+ }
+
+ /**
+ * 获取导航栏高度,有些没有虚拟导航栏的手机也能获取到,建议先判断是否有虚拟按键
+ */
+ public static int getNavigationBarHeight(Context context) {
+ int resourceId = context.getResources().getIdentifier("navigation_bar_height", "dimen", "android");
+ return resourceId > 0 ?
+ context.getResources().getDimensionPixelSize(resourceId) :
+ 0;
+ }
+
}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/view/GridSpacingItemDecoration.java b/imagepicker/src/main/java/com/lzy/imagepicker/view/GridSpacingItemDecoration.java
new file mode 100644
index 0000000..45ceaaa
--- /dev/null
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/view/GridSpacingItemDecoration.java
@@ -0,0 +1,46 @@
+package com.lzy.imagepicker.view;
+
+import android.graphics.Rect;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * author : zchu
+ * date : 2017/8/30
+ * desc : 为Recyclerview 的GridLayoutManager添加列间距
+ */
+
+public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
+
+ private int spanCount;
+ private int spacing;
+ private boolean includeEdge;
+
+ public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
+ this.spanCount = spanCount;
+ this.spacing = spacing;
+ this.includeEdge = includeEdge;
+ }
+
+ @Override
+ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+ int position = parent.getChildAdapterPosition(view); // item position
+ int column = position % spanCount; // item column
+
+ if (includeEdge) {
+ outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
+ outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)
+
+ if (position < spanCount) { // top edge
+ outRect.top = spacing;
+ }
+ outRect.bottom = spacing; // item bottom
+ } else {
+ outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)
+ outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f / spanCount) * spacing)
+ if (position >= spanCount) {
+ outRect.top = spacing; // item top
+ }
+ }
+ }
+}
diff --git a/imagepicker/src/main/java/com/lzy/imagepicker/view/SuperCheckBox.java b/imagepicker/src/main/java/com/lzy/imagepicker/view/SuperCheckBox.java
index a9a84a4..c268264 100644
--- a/imagepicker/src/main/java/com/lzy/imagepicker/view/SuperCheckBox.java
+++ b/imagepicker/src/main/java/com/lzy/imagepicker/view/SuperCheckBox.java
@@ -1,9 +1,9 @@
package com.lzy.imagepicker.view;
import android.content.Context;
+import android.support.v7.widget.AppCompatCheckBox;
import android.util.AttributeSet;
import android.view.SoundEffectConstants;
-import android.widget.CheckBox;
/**
* ================================================
@@ -14,7 +14,7 @@
* 修订历史:
* ================================================
*/
-public class SuperCheckBox extends CheckBox {
+public class SuperCheckBox extends AppCompatCheckBox {
public SuperCheckBox(Context context) {
super(context);
diff --git a/imagepicker/src/main/res/anim/bottom_in.xml b/imagepicker/src/main/res/anim/bottom_in.xml
deleted file mode 100644
index c873951..0000000
--- a/imagepicker/src/main/res/anim/bottom_in.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/imagepicker/src/main/res/anim/bottom_out.xml b/imagepicker/src/main/res/anim/bottom_out.xml
deleted file mode 100644
index dbe1d4b..0000000
--- a/imagepicker/src/main/res/anim/bottom_out.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/imagepicker/src/main/res/anim/left_in.xml b/imagepicker/src/main/res/anim/left_in.xml
deleted file mode 100644
index 2c6203a..0000000
--- a/imagepicker/src/main/res/anim/left_in.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
diff --git a/imagepicker/src/main/res/anim/left_out.xml b/imagepicker/src/main/res/anim/left_out.xml
deleted file mode 100644
index 85f5c1b..0000000
--- a/imagepicker/src/main/res/anim/left_out.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/imagepicker/src/main/res/anim/right_in.xml b/imagepicker/src/main/res/anim/right_in.xml
deleted file mode 100644
index d0a507d..0000000
--- a/imagepicker/src/main/res/anim/right_in.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
diff --git a/imagepicker/src/main/res/anim/right_out.xml b/imagepicker/src/main/res/anim/right_out.xml
deleted file mode 100644
index a6d2312..0000000
--- a/imagepicker/src/main/res/anim/right_out.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/imagepicker/src/main/res/anim/scale_in.xml b/imagepicker/src/main/res/anim/scale_in.xml
deleted file mode 100644
index 142e497..0000000
--- a/imagepicker/src/main/res/anim/scale_in.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/imagepicker/src/main/res/anim/scale_out.xml b/imagepicker/src/main/res/anim/scale_out.xml
deleted file mode 100644
index 7bb3446..0000000
--- a/imagepicker/src/main/res/anim/scale_out.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable-v21/bg_folder_item.xml b/imagepicker/src/main/res/drawable-v21/bg_folder_item.xml
new file mode 100644
index 0000000..416bbfc
--- /dev/null
+++ b/imagepicker/src/main/res/drawable-v21/bg_folder_item.xml
@@ -0,0 +1,9 @@
+
+
+-
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_dis.9.png b/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_dis.9.png
deleted file mode 100644
index 1fa5440..0000000
Binary files a/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_dis.9.png and /dev/null differ
diff --git a/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_nor.9.png b/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_nor.9.png
deleted file mode 100644
index 8fdc238..0000000
Binary files a/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_nor.9.png and /dev/null differ
diff --git a/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_pre.9.png b/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_pre.9.png
deleted file mode 100644
index c73edf3..0000000
Binary files a/imagepicker/src/main/res/drawable-xxhdpi/bg_btn_pre.9.png and /dev/null differ
diff --git a/imagepicker/src/main/res/drawable/bg_btn_dis.xml b/imagepicker/src/main/res/drawable/bg_btn_dis.xml
new file mode 100644
index 0000000..cfe2cf6
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/bg_btn_dis.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable/bg_btn_nor.xml b/imagepicker/src/main/res/drawable/bg_btn_nor.xml
new file mode 100644
index 0000000..f32cece
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/bg_btn_nor.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable/bg_btn_pre.xml b/imagepicker/src/main/res/drawable/bg_btn_pre.xml
new file mode 100644
index 0000000..59dadf2
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/bg_btn_pre.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable/bg_folder_item.xml b/imagepicker/src/main/res/drawable/bg_folder_item.xml
new file mode 100644
index 0000000..41dcd10
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/bg_folder_item.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable/bg_image_folder.xml b/imagepicker/src/main/res/drawable/bg_image_folder.xml
new file mode 100644
index 0000000..e97e927
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/bg_image_folder.xml
@@ -0,0 +1,24 @@
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/drawable/ic_arrow_back.xml b/imagepicker/src/main/res/drawable/ic_arrow_back.xml
new file mode 100644
index 0000000..38fbc26
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/ic_arrow_back.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/imagepicker/src/main/res/drawable/ic_default_image.xml b/imagepicker/src/main/res/drawable/ic_default_image.xml
new file mode 100644
index 0000000..f9836ab
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/ic_default_image.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/imagepicker/src/main/res/drawable/ic_vector_check.xml b/imagepicker/src/main/res/drawable/ic_vector_check.xml
new file mode 100644
index 0000000..807fa02
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/ic_vector_check.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/imagepicker/src/main/res/drawable/ic_vector_delete.xml b/imagepicker/src/main/res/drawable/ic_vector_delete.xml
new file mode 100644
index 0000000..7fcb8c0
--- /dev/null
+++ b/imagepicker/src/main/res/drawable/ic_vector_delete.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/imagepicker/src/main/res/drawable/selector_back_press.xml b/imagepicker/src/main/res/drawable/selector_back_press.xml
index 3d7814f..35bd783 100644
--- a/imagepicker/src/main/res/drawable/selector_back_press.xml
+++ b/imagepicker/src/main/res/drawable/selector_back_press.xml
@@ -1,9 +1,9 @@
-
-
-
+
+
+
diff --git a/imagepicker/src/main/res/drawable/selector_grid_camera_bg.xml b/imagepicker/src/main/res/drawable/selector_grid_camera_bg.xml
index 8246fbc..2a15899 100644
--- a/imagepicker/src/main/res/drawable/selector_grid_camera_bg.xml
+++ b/imagepicker/src/main/res/drawable/selector_grid_camera_bg.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/layout/activity_image_grid.xml b/imagepicker/src/main/res/layout/activity_image_grid.xml
index 6c89dcd..f085126 100644
--- a/imagepicker/src/main/res/layout/activity_image_grid.xml
+++ b/imagepicker/src/main/res/layout/activity_image_grid.xml
@@ -1,6 +1,5 @@
-
+ layout="@layout/include_top_bar" />
-
-
+ android:paddingTop="2dp" />
+ android:background="@color/ip_color_primary">
-
+ android:paddingRight="16dp">
+
+
-
+
+
+
+
+
+ android:textSize="16sp" />
-
diff --git a/imagepicker/src/main/res/layout/activity_image_preview.xml b/imagepicker/src/main/res/layout/activity_image_preview.xml
index 1f7177f..b4cc286 100644
--- a/imagepicker/src/main/res/layout/activity_image_preview.xml
+++ b/imagepicker/src/main/res/layout/activity_image_preview.xml
@@ -1,6 +1,6 @@
-
@@ -9,43 +9,56 @@
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#000"/>
+ android:background="#000" />
+ layout="@layout/include_top_bar" />
-
+ android:orientation="vertical"
+ android:visibility="gone"
+ tools:visibility="visible">
-
+
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/layout/adapter_folder_list_item.xml b/imagepicker/src/main/res/layout/adapter_folder_list_item.xml
index a3ff560..307bbb2 100644
--- a/imagepicker/src/main/res/layout/adapter_folder_list_item.xml
+++ b/imagepicker/src/main/res/layout/adapter_folder_list_item.xml
@@ -1,18 +1,28 @@
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/bg_folder_item"
+ android:gravity="center_vertical"
+ android:orientation="horizontal">
-
+
+
+
+
+
+ android:text="@string/ip_all_images"
+ android:textColor="#212121"
+ android:textSize="14sp" />
+ android:textColor="#999999"
+ android:textSize="12sp" />
+ android:layout_marginRight="20dp"
+ app:srcCompat="@drawable/ic_vector_check" />
\ No newline at end of file
diff --git a/imagepicker/src/main/res/layout/adapter_image_list_item.xml b/imagepicker/src/main/res/layout/adapter_image_list_item.xml
index 62d93de..03826ea 100644
--- a/imagepicker/src/main/res/layout/adapter_image_list_item.xml
+++ b/imagepicker/src/main/res/layout/adapter_image_list_item.xml
@@ -1,29 +1,43 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+ android:src="@drawable/ic_default_image" />
+ android:visibility="gone" />
-
+ android:paddingTop="12dp">
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/layout/include_top_bar.xml b/imagepicker/src/main/res/layout/include_top_bar.xml
index 44df267..f4eb057 100644
--- a/imagepicker/src/main/res/layout/include_top_bar.xml
+++ b/imagepicker/src/main/res/layout/include_top_bar.xml
@@ -1,9 +1,9 @@
-
+ android:padding="12dp"
+ app:srcCompat="@drawable/ic_arrow_back" />
+ android:background="#2E2E32" />
+ android:text="图片"
+ android:textAppearance="@style/TextAppearance.AppCompat.Title"
+ android:textSize="18sp"
+ android:textColor="#ffffff" />
+ android:textSize="14sp" />
-
+ android:padding="12dp"
+ app:srcCompat="@drawable/ic_vector_delete"
+ android:visibility="gone" />
\ No newline at end of file
diff --git a/imagepicker/src/main/res/layout/pop_folder.xml b/imagepicker/src/main/res/layout/pop_folder.xml
index f8deea7..1f51737 100644
--- a/imagepicker/src/main/res/layout/pop_folder.xml
+++ b/imagepicker/src/main/res/layout/pop_folder.xml
@@ -7,21 +7,25 @@
android:orientation="vertical">
-
-
+ android:background="#A000"/>
+-->
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_checked.png b/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_checked.png
index 6d69f05..548f8a3 100644
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_checked.png and b/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_checked.png differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_normal.png b/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_normal.png
index 7e18ab6..22cec86 100644
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_normal.png and b/imagepicker/src/main/res/mipmap-xxhdpi/checkbox_normal.png differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/default_image.png b/imagepicker/src/main/res/mipmap-xxhdpi/default_image.png
deleted file mode 100644
index 1f7ad00..0000000
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/default_image.png and /dev/null differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/grid_camera.png b/imagepicker/src/main/res/mipmap-xxhdpi/grid_camera.png
index 7ec0774..4e24aa3 100644
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/grid_camera.png and b/imagepicker/src/main/res/mipmap-xxhdpi/grid_camera.png differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/ic_back.png b/imagepicker/src/main/res/mipmap-xxhdpi/ic_back.png
deleted file mode 100644
index 70d26b3..0000000
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/ic_back.png and /dev/null differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/ic_del.png b/imagepicker/src/main/res/mipmap-xxhdpi/ic_del.png
deleted file mode 100644
index 3d0f668..0000000
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/ic_del.png and /dev/null differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/list_selected.png b/imagepicker/src/main/res/mipmap-xxhdpi/list_selected.png
deleted file mode 100644
index a6fafb6..0000000
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/list_selected.png and /dev/null differ
diff --git a/imagepicker/src/main/res/mipmap-xxhdpi/text_indicator.png b/imagepicker/src/main/res/mipmap-xxhdpi/text_indicator.png
index 7e36af4..d45ab2f 100644
Binary files a/imagepicker/src/main/res/mipmap-xxhdpi/text_indicator.png and b/imagepicker/src/main/res/mipmap-xxhdpi/text_indicator.png differ
diff --git a/imagepicker/src/main/res/values-v19/styles.xml b/imagepicker/src/main/res/values-v19/styles.xml
new file mode 100644
index 0000000..2b2c93f
--- /dev/null
+++ b/imagepicker/src/main/res/values-v19/styles.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/imagepicker/src/main/res/values/colors.xml b/imagepicker/src/main/res/values/colors.xml
index 2967854..16dc445 100644
--- a/imagepicker/src/main/res/values/colors.xml
+++ b/imagepicker/src/main/res/values/colors.xml
@@ -1,8 +1,12 @@
- #cc22292c
- #000000
- #303135
- #9f556061
- #00000000
+ #323336
+ #393A3F
+ #303135
+ #ec2f3335
+ #ffe0e0e0
+ #353535
+ #1AAD19
+ #66ffffff
+ #ffffff
\ No newline at end of file
diff --git a/imagepicker/src/main/res/values/strings.xml b/imagepicker/src/main/res/values/strings.xml
index 20beda2..3e455d6 100644
--- a/imagepicker/src/main/res/values/strings.xml
+++ b/imagepicker/src/main/res/values/strings.xml
@@ -1,12 +1,13 @@
- 全部图片
- 共%1$d张
- %1$s/%2$s
- 最多选择%1$s张图片
- 完成
- 完成(%1$s/%2$s)
- 预览(%1$s)
- 图片裁剪
- 原图
- 原图(%1$s)
+ 所有图片
+ 共%1$d张
+ %1$s/%2$s
+ 最多选择%1$s张图片
+ 完成
+ 完成(%1$s/%2$s)
+ 预览
+ 预览(%1$s)
+ 图片裁剪
+ 原图
+ 原图(%1$s)