diff --git a/.gitignore b/.gitignore index 39b6783..82edc91 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,6 @@ fastlane/Preview.html fastlane/screenshots fastlane/test_output fastlane/readme.md +/.idea/compiler.xml +/.idea/jarRepositories.xml +/.idea/misc.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 99202cc..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 20f0892..11ab2b3 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,9 +2,15 @@ - - - + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 60e722d..e8ca8a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,16 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 + namespace 'com.lcw.demo.imagepicker' + compileSdk 34 defaultConfig { applicationId "com.lcw.demo.imagepicker" - minSdkVersion 16 - targetSdkVersion 27 + minSdkVersion 26 + targetSdkVersion 34 versionCode 228 versionName "2.2.8" + //noinspection ChromeOsAbiSupport + ndk.abiFilters 'arm64-v8a' } buildTypes { release { @@ -15,19 +18,22 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - - lintOptions { + lint { abortOnError false } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } } +group = 'io.ruibu' +version = '1.0.0' + dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.github.bumptech.glide:glide:4.9.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' - -// implementation 'com.lcw.library:imagepicker:2.2.7' + implementation 'androidx.appcompat:appcompat:1.7.0-alpha03' + implementation 'com.github.bumptech.glide:glide:4.16.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' implementation project(':imagepicker') - -} +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3ad03e5..96d325f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + - + diff --git a/app/src/main/java/com/lcw/demo/imagepicker/GlideLoader.java b/app/src/main/java/com/lcw/demo/imagepicker/GlideLoader.java index 8bf60f7..024ebfd 100644 --- a/app/src/main/java/com/lcw/demo/imagepicker/GlideLoader.java +++ b/app/src/main/java/com/lcw/demo/imagepicker/GlideLoader.java @@ -36,7 +36,6 @@ public void loadImage(ImageView imageView, String imagePath) { public void loadPreImage(ImageView imageView, String imagePath) { //大图加载 Glide.with(imageView.getContext()).load(imagePath).apply(mPreOptions).into(imageView); - } @Override @@ -44,4 +43,4 @@ public void clearMemoryCache() { //清理缓存 Glide.get(MApplication.getContext()).clearMemory(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/lcw/demo/imagepicker/MApplication.java b/app/src/main/java/com/lcw/demo/imagepicker/MApplication.java index 0140603..d830a0c 100644 --- a/app/src/main/java/com/lcw/demo/imagepicker/MApplication.java +++ b/app/src/main/java/com/lcw/demo/imagepicker/MApplication.java @@ -21,4 +21,4 @@ public void onCreate() { public static MApplication getContext() { return mApplication; } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/lcw/demo/imagepicker/MainActivity.java b/app/src/main/java/com/lcw/demo/imagepicker/MainActivity.java index ad2c5f1..283efb2 100644 --- a/app/src/main/java/com/lcw/demo/imagepicker/MainActivity.java +++ b/app/src/main/java/com/lcw/demo/imagepicker/MainActivity.java @@ -2,18 +2,16 @@ import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.view.View; import android.widget.TextView; +import androidx.appcompat.app.AppCompatActivity; + import com.lcw.library.imagepicker.ImagePicker; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { - private TextView mTextView; - private static final int REQUEST_SELECT_IMAGES_CODE = 0x01; private ArrayList mImagePaths; @@ -22,35 +20,33 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = findViewById(R.id.tv_select_images); - findViewById(R.id.bt_select_images).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ImagePicker.getInstance() - .setTitle("标题")//设置标题 - .showCamera(true)//设置是否显示拍照按钮 - .showImage(true)//设置是否展示图片 - .showVideo(true)//设置是否展示视频 - .filterGif(false)//设置是否过滤gif图片 - .setMaxCount(9)//设置最大选择图片数目(默认为1,单选) - .setSingleType(true)//设置图片视频不能同时选择 - .setImagePaths(mImagePaths)//设置历史选择记录 - .setImageLoader(new GlideLoader())//设置自定义图片加载器 - .start(MainActivity.this, REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE为Intent调用的requestCode - } + findViewById(R.id.bt_select_images).setOnClickListener(v -> { + ImagePicker.getInstance() + .setTitle("标题")//设置标题 + .showCamera(true)//设置是否显示拍照按钮 + .showImage(true)//设置是否展示图片 + .showVideo(true)//设置是否展示视频 + .filterGif(false)//设置是否过滤gif图片 + .setMaxCount(9)//设置最大选择图片数目(默认为1,单选) + .setSingleType(true)//设置图片视频不能同时选择 + .setImagePaths(mImagePaths)//设置历史选择记录 + .setImageLoader(new GlideLoader())//设置自定义图片加载器 + .start(MainActivity.this, REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE为Intent调用的requestCode }); - } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == REQUEST_SELECT_IMAGES_CODE && resultCode == RESULT_OK) { mImagePaths = data.getStringArrayListExtra(ImagePicker.EXTRA_SELECT_IMAGES); - StringBuffer stringBuffer = new StringBuffer(); + StringBuilder stringBuffer = new StringBuilder(); stringBuffer.append("当前选中图片路径:\n\n"); for (int i = 0; i < mImagePaths.size(); i++) { - stringBuffer.append(mImagePaths.get(i) + "\n\n"); + stringBuffer.append(mImagePaths.get(i)).append("\n\n"); } mTextView.setText(stringBuffer.toString()); } } -} +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5e94926..86aaeef 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -19,5 +19,4 @@ android:layout_marginTop="20dp" android:textColor="@color/text_color_white" /> - \ No newline at end of file diff --git a/build.gradle b/build.gradle index 49b6d1c..c34f7c6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' - classpath 'com.novoda:bintray-release:0.8.0' - - + classpath 'com.android.tools.build:gradle:8.4.0-alpha07' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -19,16 +15,6 @@ buildscript { allprojects { repositories { google() - jcenter() - } - - tasks.withType(Javadoc) { - options.addStringOption('Xdoclint:none', '-quiet') - options.addStringOption('encoding', 'UTF-8') + mavenCentral() } - -} - -task clean(type: Delete) { - delete rootProject.buildDir -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 743d692..9cccaed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,3 +11,5 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.useAndroidX=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c459843..fe39203 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6.all.zip \ No newline at end of file diff --git a/imagepicker/build.gradle b/imagepicker/build.gradle index 642bf65..c7d6232 100644 --- a/imagepicker/build.gradle +++ b/imagepicker/build.gradle @@ -1,35 +1,27 @@ apply plugin: 'com.android.library' -apply plugin: 'com.novoda.bintray-release' - -publish { - userOrg = 'lichenwei' - groupId = 'com.lcw.library' - artifactId = 'imagepicker' - publishVersion = '2.2.8' - desc = 'Android image picker library' - website = 'https://github.com/Lichenwei-Dev/ImagePicker' -} android { - compileSdkVersion 27 + namespace 'com.lcw.library.imagepicker' + compileSdk 34 defaultConfig { - minSdkVersion 16 - targetSdkVersion 27 - versionCode 228 - versionName "2.2.8" + minSdkVersion 26 + targetSdkVersion 34 + //noinspection ChromeOsAbiSupport + ndk.abiFilters 'arm64-v8a' } - buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - - lintOptions { + lint { abortOnError false } - + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } } repositories { @@ -39,6 +31,6 @@ repositories { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:27.1.1' - implementation 'com.android.support:recyclerview-v7:27.1.1' -} + implementation 'androidx.appcompat:appcompat:1.7.0-alpha03' + implementation 'androidx.recyclerview:recyclerview:1.3.2' +} \ No newline at end of file diff --git a/imagepicker/src/main/AndroidManifest.xml b/imagepicker/src/main/AndroidManifest.xml index 3613136..21d7d45 100644 --- a/imagepicker/src/main/AndroidManifest.xml +++ b/imagepicker/src/main/AndroidManifest.xml @@ -1,10 +1,13 @@ - + - - + + + + @@ -28,4 +31,4 @@ - + \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/ImagePicker.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/ImagePicker.java index bf7fffe..cac5aa1 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/ImagePicker.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/ImagePicker.java @@ -153,4 +153,4 @@ public void start(Activity activity, int requestCode) { activity.startActivityForResult(intent, requestCode); } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/BaseActivity.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/BaseActivity.java index ace5b90..902a57d 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/BaseActivity.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/BaseActivity.java @@ -2,12 +2,13 @@ import android.os.Build; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.Window; import android.view.WindowManager; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + import com.lcw.library.imagepicker.R; /** @@ -44,7 +45,6 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { getData(); } - protected abstract int bindLayout(); protected void initConfig() { @@ -55,6 +55,4 @@ protected void initConfig() { protected abstract void initListener(); protected abstract void getData(); - - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePickerActivity.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePickerActivity.java index 2e819d0..5e0a44a 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePickerActivity.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePickerActivity.java @@ -10,11 +10,6 @@ import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.FileProvider; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.view.WindowManager; @@ -23,6 +18,12 @@ import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.FileProvider; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.lcw.library.imagepicker.ImagePicker; import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.adapter.ImageFoldersAdapter; @@ -102,13 +103,11 @@ public void run() { } }; - /** * 大图预览页相关 */ private static final int REQUEST_SELECT_IMAGES_CODE = 0x01;//用于在大图预览页中点击提交按钮标识 - /** * 拍照相关 */ @@ -120,13 +119,11 @@ public void run() { */ private static final int REQUEST_PERMISSION_CAMERA_CODE = 0x03; - @Override protected int bindLayout() { return R.layout.activity_imagepicker; } - /** * 初始化配置 */ @@ -147,7 +144,6 @@ protected void initConfig() { } } - /** * 初始化布局控件 */ @@ -184,8 +180,6 @@ protected void initView() { mImagePickerAdapter = new ImagePickerAdapter(this, mMediaFileList); mImagePickerAdapter.setOnItemClickListener(this); mRecyclerView.setAdapter(mImagePickerAdapter); - - } /** @@ -232,7 +226,6 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) { updateImageTime(); } }); - } /** @@ -243,7 +236,7 @@ protected void getData() { //进行权限的判断 boolean hasPermission = PermissionUtil.checkPermission(this); if (!hasPermission) { - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION_CAMERA_CODE); + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_MEDIA_IMAGES}, REQUEST_PERMISSION_CAMERA_CODE); } else { startScannerTask(); } @@ -277,7 +270,6 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis } } - /** * 开启扫描任务 */ @@ -307,7 +299,6 @@ private void startScannerTask() { CommonExecutor.getInstance().execute(mediaLoadTask); } - /** * 处理媒体数据加载成功后的UI渲染 */ @@ -342,7 +333,6 @@ public void onDismiss() { } } - /** * 隐藏时间 */ @@ -488,15 +478,16 @@ private void updateCommitButton() { mTvCommit.setText(getString(R.string.confirm)); return; } + if (selectCount < mMaxCount) { mTvCommit.setEnabled(true); mTvCommit.setText(String.format(getString(R.string.confirm_msg), selectCount, mMaxCount)); return; } + if (selectCount == mMaxCount) { mTvCommit.setEnabled(true); mTvCommit.setText(String.format(getString(R.string.confirm_msg), selectCount, mMaxCount)); - return; } } @@ -566,6 +557,7 @@ public void onImageFolderChange(View view, int position) { */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == REQUEST_CODE_CAPTURE) { //通知媒体库刷新 @@ -599,7 +591,6 @@ private void commitSelection() { finish(); } - @Override protected void onResume() { super.onResume(); @@ -622,5 +613,4 @@ protected void onDestroy() { e.printStackTrace(); } } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePreActivity.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePreActivity.java index 1e46528..32ce1b6 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePreActivity.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePreActivity.java @@ -4,14 +4,15 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; -import android.support.v4.content.FileProvider; -import android.support.v4.view.ViewPager; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import androidx.core.content.FileProvider; +import androidx.viewpager.widget.ViewPager; + import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.adapter.ImagePreViewAdapter; import com.lcw.library.imagepicker.data.MediaFile; @@ -33,7 +34,6 @@ * Email: lichenwei.me@foxmail.com */ public class ImagePreActivity extends BaseActivity { - public static final String IMAGE_POSITION = "imagePosition"; private List mMediaFileList; private int mPosition = 0; @@ -46,7 +46,6 @@ public class ImagePreActivity extends BaseActivity { private ImageView mIvPreCheck; private ImagePreViewAdapter mImagePreViewAdapter; - @Override protected int bindLayout() { return R.layout.activity_pre_image; @@ -64,7 +63,6 @@ protected void initView() { @Override protected void initListener() { - findViewById(R.id.iv_actionBar_back).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -144,7 +142,6 @@ public void onClick(View v) { startActivity(intent); } }); - } @Override @@ -165,7 +162,6 @@ protected void getData() { * 更新确认按钮状态 */ private void updateCommitButton() { - int maxCount = SelectionManager.getInstance().getMaxCount(); //改变确定按钮UI @@ -183,7 +179,6 @@ private void updateCommitButton() { if (selectCount == maxCount) { mTvCommit.setEnabled(true); mTvCommit.setText(String.format(getString(R.string.confirm_msg), selectCount, maxCount)); - return; } } @@ -211,5 +206,4 @@ private void setIvPlayShow(MediaFile mediaFile) { mIvPlay.setVisibility(View.GONE); } } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImageFoldersAdapter.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImageFoldersAdapter.java index 235c84a..25d1bc6 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImageFoldersAdapter.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImageFoldersAdapter.java @@ -1,8 +1,7 @@ package com.lcw.library.imagepicker.adapter; +import android.annotation.SuppressLint; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -10,7 +9,9 @@ import android.widget.ImageView; import android.widget.TextView; -import com.lcw.library.imagepicker.ImagePicker; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.data.MediaFolder; import com.lcw.library.imagepicker.manager.ConfigManager; @@ -25,12 +26,10 @@ * Email: lichenwei.me@foxmail.com */ public class ImageFoldersAdapter extends RecyclerView.Adapter { - private Context mContext; private List mMediaFolderList; private int mCurrentImageFolderIndex; - public ImageFoldersAdapter(Context context, List mediaFolderList, int position) { this.mContext = context; this.mMediaFolderList = mediaFolderList; @@ -44,8 +43,7 @@ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { } @Override - public void onBindViewHolder(@NonNull ViewHolder holder, final int position) { - + public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") final int position) { final MediaFolder mediaFolder = mMediaFolderList.get(position); String folderCover = mediaFolder.getFolderCover(); String folderName = mediaFolder.getFolderName(); @@ -88,7 +86,6 @@ public int getItemCount() { } class ViewHolder extends RecyclerView.ViewHolder { - private ImageView mImageCover; private TextView mFolderName; private TextView mImageSize; @@ -115,4 +112,4 @@ public void setOnImageFolderChangeListener(ImageFoldersAdapter.OnImageFolderChan public interface OnImageFolderChangeListener { void onImageFolderChange(View view, int position); } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePickerAdapter.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePickerAdapter.java index e75c006..a447088 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePickerAdapter.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePickerAdapter.java @@ -1,9 +1,8 @@ package com.lcw.library.imagepicker.adapter; +import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -11,6 +10,9 @@ import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.data.ItemType; import com.lcw.library.imagepicker.data.MediaFile; @@ -30,19 +32,16 @@ * Email: lichenwei.me@foxmail.com */ public class ImagePickerAdapter extends RecyclerView.Adapter { - private Context mContext; private List mMediaFileList; private boolean isShowCamera; - public ImagePickerAdapter(Context context, List mediaFiles) { this.mContext = context; this.mMediaFileList = mediaFiles; this.isShowCamera = ConfigManager.getInstance().isShowCamera(); } - @Override public int getItemViewType(int position) { if (isShowCamera) { @@ -83,7 +82,6 @@ public MediaFile getMediaFile(int position) { return mMediaFileList.get(position); } - @NonNull @Override public BaseHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -103,9 +101,8 @@ public BaseHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { return null; } - @Override - public void onBindViewHolder(@NonNull BaseHolder holder, final int position) { + public void onBindViewHolder(@NonNull BaseHolder holder, @SuppressLint("RecyclerView") final int position) { int itemType = getItemViewType(position); MediaFile mediaFile = getMediaFile(position); switch (itemType) { @@ -139,7 +136,6 @@ public void onClick(View view) { } } - /** * 绑定数据(图片、视频) * @@ -147,7 +143,6 @@ public void onClick(View view) { * @param mediaFile */ private void bindMedia(MediaHolder mediaHolder, MediaFile mediaFile) { - String imagePath = mediaFile.getPath(); if (!TextUtils.isEmpty(imagePath)) { //选择状态(仅是UI表现,真正数据交给SelectionManager管理) @@ -181,14 +176,12 @@ private void bindMedia(MediaHolder mediaHolder, MediaFile mediaFile) { ((VideoHolder) mediaHolder).mVideoDuration.setText(duration); } } - } /** * 图片Item */ class ImageHolder extends MediaHolder { - public ImageView mImageGif; public ImageHolder(View itemView) { @@ -201,7 +194,6 @@ public ImageHolder(View itemView) { * 视频Item */ class VideoHolder extends MediaHolder { - TextView mVideoDuration; VideoHolder(View itemView) { @@ -214,7 +206,6 @@ class VideoHolder extends MediaHolder { * 媒体Item */ class MediaHolder extends BaseHolder { - SquareImageView mImageView; ImageView mImageCheck; @@ -229,7 +220,6 @@ class MediaHolder extends BaseHolder { * 基础Item */ class BaseHolder extends RecyclerView.ViewHolder { - SquareRelativeLayout mSquareRelativeLayout; BaseHolder(View itemView) { @@ -238,7 +228,6 @@ class BaseHolder extends RecyclerView.ViewHolder { } } - /** * 接口回调,将点击事件向外抛 */ @@ -253,4 +242,4 @@ public interface OnItemClickListener { void onMediaCheck(View view, int position); } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePreViewAdapter.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePreViewAdapter.java index d0d644b..f619e72 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePreViewAdapter.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePreViewAdapter.java @@ -1,11 +1,12 @@ package com.lcw.library.imagepicker.adapter; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.viewpager.widget.PagerAdapter; + import com.lcw.library.imagepicker.data.MediaFile; import com.lcw.library.imagepicker.manager.ConfigManager; import com.lcw.library.imagepicker.view.PinchImageView; @@ -21,7 +22,6 @@ * Email: lichenwei.me@foxmail.com */ public class ImagePreViewAdapter extends PagerAdapter { - private Context mContext; private List mMediaFileList; @@ -67,4 +67,4 @@ public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Obj container.removeView(imageView); viewCache.add(imageView); } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/data/ItemType.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/data/ItemType.java index 2f699cc..b5cbc73 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/data/ItemType.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/data/ItemType.java @@ -11,4 +11,4 @@ public class ItemType { public static final int ITEM_TYPE_CAMERA = 1; public static final int ITEM_TYPE_IMAGE = 2; public static final int ITEM_TYPE_VIDEO = 3; -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java index ffab5b5..8536a6c 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java @@ -8,7 +8,6 @@ * Email: lichenwei.me@foxmail.com */ public class MediaFile { - private String path; private String mime; private Integer folderId; @@ -63,5 +62,4 @@ public long getDateToken() { public void setDateToken(long dateToken) { this.dateToken = dateToken; } -} - +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFolder.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFolder.java index 99fbbdd..0dfbf34 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFolder.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFolder.java @@ -10,7 +10,6 @@ * Email: lichenwei.me@foxmail.com */ public class MediaFolder { - private int folderId; private String folderName; private String folderCover; @@ -63,6 +62,4 @@ public ArrayList getMediaFileList() { public void setMediaFileList(ArrayList mediaFileList) { this.mediaFileList = mediaFileList; } - - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/executors/CommonExecutor.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/executors/CommonExecutor.java index 49d01b8..e29ec2f 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/executors/CommonExecutor.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/executors/CommonExecutor.java @@ -1,6 +1,6 @@ package com.lcw.library.imagepicker.executors; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -44,5 +44,4 @@ public static CommonExecutor getInstance() { public void execute(Runnable runnable) { mExecutorService.execute(runnable); } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/listener/MediaLoadCallback.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/listener/MediaLoadCallback.java index 3ccc419..c74ed9d 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/listener/MediaLoadCallback.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/listener/MediaLoadCallback.java @@ -12,6 +12,5 @@ * Email: lichenwei.me@foxmail.com */ public interface MediaLoadCallback { - void loadMediaSuccess(List mediaFolderList); -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/AbsMediaScanner.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/AbsMediaScanner.java index 8749f64..01f23ef 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/AbsMediaScanner.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/AbsMediaScanner.java @@ -83,5 +83,4 @@ public ArrayList queryMedia() { } return list; } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/ImageScanner.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/ImageScanner.java index 44f5a15..165098e 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/ImageScanner.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/ImageScanner.java @@ -1,21 +1,14 @@ package com.lcw.library.imagepicker.loader; +import android.annotation.SuppressLint; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; -import android.support.annotation.WorkerThread; -import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.data.MediaFile; -import com.lcw.library.imagepicker.data.MediaFolder; import com.lcw.library.imagepicker.manager.ConfigManager; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - /** * 媒体库扫描类(图片) * Create by: chenWei.li @@ -24,12 +17,10 @@ * Email: lichenwei.me@foxmail.com */ public class ImageScanner extends AbsMediaScanner { - public ImageScanner(Context context) { super(context); } - @Override protected Uri getScanUri() { return MediaStore.Images.Media.EXTERNAL_CONTENT_URI; @@ -77,12 +68,11 @@ protected String getOrder() { */ @Override protected MediaFile parse(Cursor cursor) { - - String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); - String mime = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.MIME_TYPE)); - Integer folderId = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID)); - String folderName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)); - long dateToken = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN)); + @SuppressLint("Range") String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); + @SuppressLint("Range") String mime = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.MIME_TYPE)); + @SuppressLint("Range") Integer folderId = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID)); + @SuppressLint("Range") String folderName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)); + @SuppressLint("Range") long dateToken = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN)); MediaFile mediaFile = new MediaFile(); mediaFile.setPath(path); @@ -93,6 +83,4 @@ protected MediaFile parse(Cursor cursor) { return mediaFile; } - - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/MediaHandler.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/MediaHandler.java index f247f46..f59db1c 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/MediaHandler.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/MediaHandler.java @@ -21,7 +21,6 @@ * Email: lichenwei.me@foxmail.com */ public class MediaHandler { - public static final int ALL_MEDIA_FOLDER = -1;//全部媒体 public static final int ALL_VIDEO_FOLDER = -2;//全部视频 @@ -36,7 +35,6 @@ public static List getImageFolder(Context context, ArrayList getVideoFolder(Context context, ArrayList getVideoFolder(Context context, ArrayList getMediaFolder(Context context, ArrayList imageFileList, ArrayList videoFileList) { - //根据媒体所在文件夹Id进行聚类(相册) Map mediaFolderMap = new HashMap<>(); @@ -135,8 +131,6 @@ public int compare(MediaFolder o1, MediaFolder o2) { } }); - return mediaFolderList; } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/VideoScanner.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/VideoScanner.java index 4d8ce05..8784991 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/VideoScanner.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/loader/VideoScanner.java @@ -1,20 +1,12 @@ package com.lcw.library.imagepicker.loader; +import android.annotation.SuppressLint; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; -import android.support.annotation.WorkerThread; -import android.util.Log; -import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.data.MediaFile; -import com.lcw.library.imagepicker.data.MediaFolder; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * 媒体库扫描类(视频) @@ -24,9 +16,7 @@ * Email: lichenwei.me@foxmail.com */ public class VideoScanner extends AbsMediaScanner { - public static final int ALL_IMAGES_FOLDER = -1;//全部图片 - private Context mContext; public VideoScanner(Context context) { @@ -74,13 +64,12 @@ protected String getOrder() { */ @Override protected MediaFile parse(Cursor cursor) { - - String path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA)); - String mime = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE)); - Integer folderId = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_ID)); - String folderName = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_DISPLAY_NAME)); - long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DURATION)); - long dateToken = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DATE_TAKEN)); + @SuppressLint("Range") String path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA)); + @SuppressLint("Range") String mime = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE)); + @SuppressLint("Range") Integer folderId = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_ID)); + @SuppressLint("Range") String folderName = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_DISPLAY_NAME)); + @SuppressLint("Range") long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DURATION)); + @SuppressLint("Range") long dateToken = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DATE_TAKEN)); MediaFile mediaFile = new MediaFile(); mediaFile.setPath(path); @@ -92,6 +81,4 @@ protected MediaFile parse(Cursor cursor) { return mediaFile; } - - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java index a4aa22e..399cab8 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java @@ -12,7 +12,6 @@ * Email: lichenwei.me@foxmail.com */ public class ConfigManager { - public static final int SELECT_MODE_SINGLE = 0; public static final int SELECT_MODE_MULTI = 1; @@ -129,4 +128,4 @@ public void setSingleType(boolean singleType) { public void setImageLoader(ImageLoader imageLoader) { this.imageLoader = imageLoader; } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java index ddd6179..98aac8a 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java @@ -13,11 +13,8 @@ * Email: lichenwei.me@foxmail.com */ public class SelectionManager { - private static volatile SelectionManager mSelectionManager; - private ArrayList mSelectImagePaths = new ArrayList<>(); - private int mMaxCount = 1; private SelectionManager() { @@ -95,7 +92,6 @@ public void addImagePathsToSelectList(List imagePaths) { } } - /** * 判断当前图片是否被选择 * @@ -142,5 +138,4 @@ public static boolean isCanAddSelectionPaths(String currentPath, String filePath public void removeAll() { mSelectImagePaths.clear(); } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/provider/ImagePickerProvider.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/provider/ImagePickerProvider.java index d54f923..59a568c 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/provider/ImagePickerProvider.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/provider/ImagePickerProvider.java @@ -1,7 +1,8 @@ package com.lcw.library.imagepicker.provider; import android.content.Context; -import android.support.v4.content.FileProvider; + +import androidx.core.content.FileProvider; /** * 自定义Provider,避免上层发生provider冲突 @@ -11,9 +12,7 @@ * Email: lichenwei.me@foxmail.com */ public class ImagePickerProvider extends FileProvider { - public static String getFileProviderName(Context context) { return context.getPackageName() + ".provider"; } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/task/ImageLoadTask.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/task/ImageLoadTask.java index 6529ee2..11a9342 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/task/ImageLoadTask.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/task/ImageLoadTask.java @@ -17,7 +17,6 @@ * Email: lichenwei.me@foxmail.com */ public class ImageLoadTask implements Runnable { - private Context mContext; private ImageScanner mImageScanner; private MediaLoadCallback mMediaLoadCallback; @@ -40,8 +39,5 @@ public void run() { if (mMediaLoadCallback != null) { mMediaLoadCallback.loadMediaSuccess(MediaHandler.getImageFolder(mContext, imageFileList)); } - - } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/task/MediaLoadTask.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/task/MediaLoadTask.java index ffea164..1891d03 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/task/MediaLoadTask.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/task/MediaLoadTask.java @@ -18,7 +18,6 @@ * Email: lichenwei.me@foxmail.com */ public class MediaLoadTask implements Runnable { - private Context mContext; private ImageScanner mImageScanner; private VideoScanner mVideoScanner; @@ -48,7 +47,5 @@ public void run() { if (mMediaLoadCallback != null) { mMediaLoadCallback.loadMediaSuccess(MediaHandler.getMediaFolder(mContext, imageFileList, videoFileList)); } - } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/task/VideoLoadTask.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/task/VideoLoadTask.java index e03a996..0265766 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/task/VideoLoadTask.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/task/VideoLoadTask.java @@ -17,7 +17,6 @@ * Email: lichenwei.me@foxmail.com */ public class VideoLoadTask implements Runnable { - private Context mContext; private VideoScanner mVideoScanner; private MediaLoadCallback mMediaLoadCallback; @@ -30,7 +29,6 @@ public VideoLoadTask(Context context, MediaLoadCallback mediaLoadCallback) { @Override public void run() { - //存放所有视频 ArrayList videoFileList = new ArrayList<>(); @@ -41,8 +39,5 @@ public void run() { if (mMediaLoadCallback != null) { mMediaLoadCallback.loadMediaSuccess(MediaHandler.getVideoFolder(mContext, videoFileList)); } - - } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/DataUtil.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/DataUtil.java index a1f51e0..ab25b23 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/DataUtil.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/DataUtil.java @@ -15,7 +15,6 @@ * Email: lichenwei.me@foxmail.com */ public class DataUtil { - private static volatile DataUtil mDataUtilInstance; private List mData = new ArrayList<>(); @@ -40,6 +39,4 @@ public List getMediaData() { public void setMediaData(List data) { this.mData = data; } - - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/ImageLoader.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/ImageLoader.java index 988abbe..f195ee3 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/ImageLoader.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/ImageLoader.java @@ -12,7 +12,6 @@ * Email: lichenwei.me@foxmail.com */ public interface ImageLoader extends Serializable { - /** * 缩略图加载方案 * @@ -29,7 +28,6 @@ public interface ImageLoader extends Serializable { */ void loadPreImage(ImageView imageView, String imagePath); - /** * 视频播放方案 * @@ -42,5 +40,4 @@ public interface ImageLoader extends Serializable { * 缓存管理 */ void clearMemoryCache(); - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/MediaFileUtil.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/MediaFileUtil.java index 841ee51..eeace88 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/MediaFileUtil.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/MediaFileUtil.java @@ -9,7 +9,6 @@ * E-Mail Address:xingzhe@gaoding.com */ public class MediaFileUtil { - // comma separated list of all file extensions supported by the media scanner public static String sFileExtensions; @@ -58,7 +57,6 @@ public class MediaFileUtil { //静态内部类 static class MediaFileType { - int fileType; String mimeType; @@ -75,7 +73,7 @@ static class MediaFileType { static void addFileType(String extension, int fileType, String mimeType) { sFileTypeMap.put(extension, new MediaFileType(fileType, mimeType)); - sMimeTypeMap.put(mimeType, new Integer(fileType)); + sMimeTypeMap.put(mimeType, Integer.valueOf(fileType)); } static { @@ -177,7 +175,6 @@ public static boolean isAudioFileType(String path) { //自己增加 //根据mime类型查看文件类型 public static int getFileTypeForMimeType(String mimeType) { Integer value = sMimeTypeMap.get(mimeType); - return (value == null ? 0 : value.intValue()); + return (value == null ? 0 : value); } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/PermissionUtil.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/PermissionUtil.java index f4fb016..cda7130 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/PermissionUtil.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/PermissionUtil.java @@ -3,7 +3,9 @@ import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; -import android.support.v4.content.ContextCompat; +import android.os.Build; + +import androidx.core.content.ContextCompat; /** * Create by: chenWei.li @@ -12,7 +14,6 @@ * Email: lichenwei.me@foxmail.com */ public class PermissionUtil { - /** * 权限检查 * @@ -20,6 +21,10 @@ public class PermissionUtil { * @return */ public static boolean checkPermission(Context context) { - return ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; + if (Build.VERSION.SDK_INT >= 33) { + return ContextCompat.checkSelfPermission(context, Manifest.permission.READ_MEDIA_IMAGES) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; + } else { + return ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED; + } } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/Utils.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/Utils.java index b2f4ba4..c7e1322 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/Utils.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/utils/Utils.java @@ -16,7 +16,6 @@ * Email: lichenwei.me@foxmail.com */ public class Utils { - /** * 获取屏幕的宽和高 * @@ -68,6 +67,4 @@ public static String getVideoDuration(long timestamp) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss"); return simpleDateFormat.format(date); } - - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/HackyViewPager.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/HackyViewPager.java index 35e2118..9229cad 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/HackyViewPager.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/HackyViewPager.java @@ -1,10 +1,11 @@ package com.lcw.library.imagepicker.view; import android.content.Context; -import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; +import androidx.viewpager.widget.ViewPager; + /** * Create by: chenWei.li * Date: 2018/10/7 @@ -29,4 +30,4 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { return false; } } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/ImageFolderPopupWindow.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/ImageFolderPopupWindow.java index d6a39d1..3f72303 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/ImageFolderPopupWindow.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/ImageFolderPopupWindow.java @@ -2,13 +2,14 @@ import android.content.Context; import android.graphics.drawable.ColorDrawable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.PopupWindow; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + import com.lcw.library.imagepicker.R; import com.lcw.library.imagepicker.adapter.ImageFoldersAdapter; import com.lcw.library.imagepicker.data.MediaFolder; @@ -24,7 +25,6 @@ * Email: lichenwei.me@foxmail.com */ public class ImageFolderPopupWindow extends PopupWindow { - private static final int DEFAULT_IMAGE_FOLDER_SELECT = 0;//默认选中文件夹 private Context mContext; @@ -78,5 +78,4 @@ public boolean onTouch(View view, MotionEvent motionEvent) { public ImageFoldersAdapter getAdapter() { return mImageFoldersAdapter; } - -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/PinchImageView.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/PinchImageView.java index 62cf020..745fb64 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/PinchImageView.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/PinchImageView.java @@ -10,6 +10,8 @@ import android.view.GestureDetector; import android.view.MotionEvent; +import androidx.appcompat.widget.AppCompatImageView; + import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -22,7 +24,7 @@ * Time: 下午5:29 * Email: lichenwei.me@foxmail.com */ -public class PinchImageView extends android.support.v7.widget.AppCompatImageView { +public class PinchImageView extends AppCompatImageView { ////////////////////////////////配置参数//////////////////////////////// @@ -1739,4 +1741,4 @@ public static void calculateScaledRectInContainer(RectF container, float srcWidt } } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareImageView.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareImageView.java index aad1cc8..baabf8f 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareImageView.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareImageView.java @@ -1,9 +1,11 @@ package com.lcw.library.imagepicker.view; import android.content.Context; -import android.support.annotation.Nullable; import android.util.AttributeSet; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatImageView; + /** * 正方形ImageView * Create by: chenWei.li @@ -11,7 +13,7 @@ * Time: 下午10:12 * Email: lichenwei.me@foxmail.com */ -public class SquareImageView extends android.support.v7.widget.AppCompatImageView { +public class SquareImageView extends AppCompatImageView { public SquareImageView(Context context) { this(context, null); @@ -29,4 +31,4 @@ public SquareImageView(Context context, @Nullable AttributeSet attrs, int defSty protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, widthMeasureSpec); } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareRelativeLayout.java b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareRelativeLayout.java index d9fb4d0..2482312 100644 --- a/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareRelativeLayout.java +++ b/imagepicker/src/main/java/com/lcw/library/imagepicker/view/SquareRelativeLayout.java @@ -1,11 +1,11 @@ package com.lcw.library.imagepicker.view; import android.content.Context; -import android.support.annotation.Nullable; import android.util.AttributeSet; -import android.widget.FrameLayout; import android.widget.RelativeLayout; +import androidx.annotation.Nullable; + /** * 正方形RelativeLayout * Create by: chenWei.li @@ -14,7 +14,6 @@ * Email: lichenwei.me@foxmail.com */ public class SquareRelativeLayout extends RelativeLayout { - public SquareRelativeLayout(Context context) { this(context, null); } @@ -31,4 +30,4 @@ public SquareRelativeLayout(Context context, @Nullable AttributeSet attrs, int d protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, widthMeasureSpec); } -} +} \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/activity_imagepicker.xml b/imagepicker/src/main/res/layout/activity_imagepicker.xml index 9dfb896..0ea8b7a 100644 --- a/imagepicker/src/main/res/layout/activity_imagepicker.xml +++ b/imagepicker/src/main/res/layout/activity_imagepicker.xml @@ -23,8 +23,8 @@ android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_marginLeft="10dp" - android:drawablePadding="4dp" android:drawableRight="@mipmap/icon_album_index" + android:drawablePadding="4dp" android:gravity="center" android:text="@string/all_media" android:textColor="@android:color/white" @@ -39,7 +39,7 @@ android:layout_above="@id/rl_main_bottom" android:layout_below="@id/layout_actionBar"> - - \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/activity_pre_image.xml b/imagepicker/src/main/res/layout/activity_pre_image.xml index 5c91a06..fcaa95b 100644 --- a/imagepicker/src/main/res/layout/activity_pre_image.xml +++ b/imagepicker/src/main/res/layout/activity_pre_image.xml @@ -41,10 +41,8 @@ android:textColor="@color/text_color_white" android:textSize="14sp" /> - - + android:src="@mipmap/icon_video_play" + android:visibility="gone" /> - \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/include_layout_actionbar.xml b/imagepicker/src/main/res/layout/include_layout_actionbar.xml index e7460ab..2264190 100644 --- a/imagepicker/src/main/res/layout/include_layout_actionbar.xml +++ b/imagepicker/src/main/res/layout/include_layout_actionbar.xml @@ -33,10 +33,10 @@ android:background="@drawable/selector_bt_commit" android:enabled="false" android:gravity="center" - android:paddingBottom="5dp" android:paddingLeft="10dp" - android:paddingRight="10dp" android:paddingTop="5dp" + android:paddingRight="10dp" + android:paddingBottom="5dp" android:text="@string/confirm" android:textColor="@color/text_color_white" android:textSize="14sp" /> diff --git a/imagepicker/src/main/res/layout/item_recyclerview_folder.xml b/imagepicker/src/main/res/layout/item_recyclerview_folder.xml index e96801b..a0c6ef4 100644 --- a/imagepicker/src/main/res/layout/item_recyclerview_folder.xml +++ b/imagepicker/src/main/res/layout/item_recyclerview_folder.xml @@ -11,10 +11,10 @@ android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:background="@mipmap/icon_image_folder" - android:paddingBottom="17dp" android:paddingLeft="12dp" - android:paddingRight="12dp" android:paddingTop="9dp" + android:paddingRight="12dp" + android:paddingBottom="17dp" android:scaleType="fitXY" /> - \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/item_recyclerview_image.xml b/imagepicker/src/main/res/layout/item_recyclerview_image.xml index fb19387..cd8ff3c 100644 --- a/imagepicker/src/main/res/layout/item_recyclerview_image.xml +++ b/imagepicker/src/main/res/layout/item_recyclerview_image.xml @@ -31,5 +31,4 @@ android:src="@mipmap/icon_gif" android:visibility="gone" /> - \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/item_recyclerview_video.xml b/imagepicker/src/main/res/layout/item_recyclerview_video.xml index b575de5..25842d9 100644 --- a/imagepicker/src/main/res/layout/item_recyclerview_video.xml +++ b/imagepicker/src/main/res/layout/item_recyclerview_video.xml @@ -45,5 +45,4 @@ - \ No newline at end of file diff --git a/imagepicker/src/main/res/layout/window_image_folders.xml b/imagepicker/src/main/res/layout/window_image_folders.xml index a58bbc8..7267bda 100644 --- a/imagepicker/src/main/res/layout/window_image_folders.xml +++ b/imagepicker/src/main/res/layout/window_image_folders.xml @@ -5,11 +5,11 @@ android:background="@android:color/white" android:orientation="vertical"> - + android:layout_marginTop="4dp" + android:layout_marginBottom="4dp" /> \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 3102320..b194edc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':imagepicker' +include ':app', ':imagepicker' \ No newline at end of file