Commit 831aeac7 by wukun

1.androidx

2,相机相册相关
parent c55e6d9e
Showing with 767 additions and 328 deletions
......@@ -300,6 +300,13 @@ public static final int *;
#ijkplayer
-keep class tv.danmaku.ijk.media.** {*;}
#pictureSelecter
-keep class com.luck.picture.lib.** { *; }
-keep class com.luck.lib.camerax.** { *; }
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
......
......@@ -45,6 +45,30 @@
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<!--适配Android R包可见性 开始-->
<queries package="${applicationId}">
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE">
</action>
</intent>
<intent>
<action android:name="android.media.action.ACTION_VIDEO_CAPTURE">
</action>
</intent>
</queries>
<!--适配Android R包可见性 结束-->
<application
android:name=".MyApplication"
android:allowBackup="true"
......@@ -54,10 +78,13 @@
android:theme="@style/AppTheme"
android:resizeableActivity="false"
tools:ignore="GoogleAppIndexingWarning"
android:requestLegacyExternalStorage="true"
tools:replace="android:label,icon,theme,allowBackup">
<provider
android:name="android.support.v4.content.FileProvider"
android:name="androidx.core.content.FileProvider"
android:authorities="com.dayu.bigfish.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
......
......@@ -6,9 +6,10 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.bigfish.databinding.ActivityInitializeMainBinding;
import com.dayu.bigfish.ui.MainActivity;
......
......@@ -9,14 +9,12 @@ import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.util.Log;
import androidx.annotation.NonNull;
import com.dayu.bigfish.ui.service.LocationService;
import com.dayu.common.BaseApplication;
import com.dayu.event.AppReturnFrontEvent;
import com.dayu.livemodule.LiveUtils;
import com.dayu.location.base.LocationUtils;
import com.dayu.order.greendao.GreenDaoManager;
import com.dayu.utils.NetworkConnectChangedReceiver;
import com.dayu.utils.SPUtils;
......
package com.dayu.bigfish;
import android.support.v4.content.FileProvider;
import androidx.core.content.FileProvider;
public class MyProvider extends FileProvider {
}
......@@ -2,7 +2,8 @@ package com.dayu.bigfish;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
......
......@@ -11,15 +11,16 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.provider.Settings;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import androidx.core.app.NotificationCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.amap.api.location.AMapLocation;
......
package com.dayu.bigfish.ui;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.bigfish.R;
......
......@@ -4,9 +4,10 @@ import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Environment;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import androidx.core.app.NotificationCompat;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.dayu.base.api.Api;
import com.dayu.base.api.DownloadService;
......
......@@ -9,7 +9,8 @@ import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.support.annotation.Nullable;
import androidx.annotation.Nullable;
import com.dayu.bigfish.api.ApiFactory;
import com.dayu.common.Constants;
......
......@@ -3,13 +3,14 @@ package com.dayu.bigfish.ui.views;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.dayu.bigfish.R;
/**
......
......@@ -8,7 +8,7 @@
android:layout_height="match_parent"
android:background="@color/transparent">
<android.support.v4.view.ViewPager
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_initial"
android:layout_width="match_parent"
android:layout_height="match_parent"
......
......@@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
......@@ -19,7 +19,7 @@
android:id="@+id/tv_title"
android:text="注销账号"
style="@style/toolbar_title" />
</android.support.v7.widget.Toolbar>
</androidx.appcompat.widget.Toolbar>
<TextView
android:layout_width="match_parent"
......
......@@ -14,7 +14,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
......@@ -25,7 +25,7 @@
<TextView
android:id="@+id/tv_title"
style="@style/toolbar_title" />
</android.support.v7.widget.Toolbar>
</androidx.appcompat.widget.Toolbar>
<LinearLayout
android:layout_width="match_parent"
......
......@@ -46,7 +46,7 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})
testImplementation 'junit:junit:4.12'
api 'com.android.support:design:27.1.1'
api 'com.google.android.material:material:1.2.0-alpha06'
//mutidex
api 'com.android.support:multidex:1.0.3'
//eventBus
......@@ -57,7 +57,10 @@ dependencies {
api 'com.squareup.retrofit2:adapter-rxjava2:2.8.1'
//图片选择
// api 'com.github.LuckSiege.PictureSelector:picture_library:v2.1.5'
api 'io.github.lucksiege:pictureselector:v2.1.9'
// api 'io.github.lucksiege:pictureselector:v2.1.9'
api 'io.github.lucksiege:pictureselector:v3.11.1'
// uCrop library (Not necessary)
api 'io.github.lucksiege:ucrop:v3.11.1'
//ARouter
api "com.alibaba:arouter-api:$arouter_api_version"
//greendao数据库
......@@ -105,4 +108,7 @@ dependencies {
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9'//微信官方依赖库,必选
api project(':camera')
api 'com.github.bumptech.glide:glide:4.5.0'
api 'io.reactivex.rxjava2:rxandroid:2.0.1'
}
package com.dayu.base.api;
import android.os.Build;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.dayu.base.api.protocol.BaseResponse;
import com.dayu.common.BaseConstant;
import com.dayu.common.Constants;
......
package com.dayu.base.api;
import android.util.Log;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
......@@ -44,7 +46,13 @@ public class BaseApiFactory {
ArrayList<File> files = new ArrayList<>();
if (imageUrl != null && imageUrl.size() > 0) {
for (int i = 0; i < imageUrl.size(); i++) {
files.add(new File(imageUrl.get(i)));
File file = new File(imageUrl.get(i));
if (file.exists()){
Log.e("TAG", "packPhoto: 存在");
}else{
Log.e("TAG", "packPhoto: 不存在");
}
files.add(file);
}
}
MultipartBody.Part[] part = new MultipartBody.Part[files.size()];
......
......@@ -4,7 +4,8 @@ import android.app.IntentService;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import androidx.core.app.NotificationCompat;
import com.dayu.utils.DownloadManager;
import com.dayu.widgets.listener.onDownloadListener;
......
......@@ -4,10 +4,10 @@ import android.annotation.TargetApi;
import android.app.NotificationManager;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.databinding.ViewDataBinding;
import com.alibaba.android.arouter.launcher.ARouter;
......
......@@ -7,12 +7,13 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.cjt2325.cameralibrary.JCameraView;
import com.cjt2325.cameralibrary.listener.ClickListener;
import com.cjt2325.cameralibrary.listener.ErrorListener;
......
......@@ -4,9 +4,9 @@ import android.app.Activity;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
......
......@@ -2,10 +2,11 @@ package com.dayu.base.ui.activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.dayu.baselibrary.R;
import com.dayu.common.Constants;
......
......@@ -3,14 +3,15 @@ package com.dayu.base.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
......@@ -20,7 +21,7 @@ import com.github.chrisbanes.photoview.PhotoView;
import java.util.ArrayList;
import java.util.List;
public class ImgGalleryActivty extends AppCompatActivity{
public class ImgGalleryActivty extends AppCompatActivity {
ArrayList<String> imgList;
int selectIndex;
......
package com.dayu.base.ui.activity;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.viewpager.widget.PagerAdapter;
import com.dayu.baselibrary.R;
import com.dayu.baselibrary.databinding.AcitivityPreviewBinding;
import com.dayu.common.Constants;
......
package com.dayu.base.ui.activity;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import androidx.viewpager.widget.PagerAdapter;
import com.dayu.baselibrary.R;
import com.dayu.baselibrary.databinding.AcitivityPreviewBinding;
import com.dayu.common.Constants;
......
package com.dayu.base.ui.adapter;
import android.support.v7.widget.RecyclerView;
import androidx.databinding.ViewDataBinding;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by luofan on 2017/12/9.
......
......@@ -2,13 +2,13 @@ package com.dayu.base.ui.adapter;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.LayoutRes;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.base.api.protocol.BasePageBean;
import com.dayu.base.ui.presenter.BaseListPresenter;
......
package com.dayu.base.ui.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import java.util.List;
/**
......
package com.dayu.base.ui.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import java.util.List;
......
......@@ -5,26 +5,29 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.base.ui.activity.ImgGalleryActivty;
import com.dayu.base.ui.activity.VideoPreviewActivty;
import com.dayu.baselibrary.R;
import com.dayu.common.Constants;
import com.dayu.utils.GlideEngine;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.UtilsScreen;
import com.dayu.widgets.listener.OnItemClickListener;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import java.io.File;
import java.util.ArrayList;
......@@ -35,7 +38,7 @@ public class MediaChooseAdapter extends RecyclerView.Adapter<MediaChooseAdapter.
private Activity context;
private ArrayList<String> list = new ArrayList<>();
private int maxCount = 1;
private int mimeType = PictureMimeType.ofVideo();
private int mimeType = SelectMimeType.ofVideo();
private int videoLength = 30;
private int requestCode = PictureConfig.CHOOSE_REQUEST;
private OnItemClickListener<MediaChooseAdapter.Holder, Integer> listener;
......@@ -215,23 +218,41 @@ public class MediaChooseAdapter extends RecyclerView.Adapter<MediaChooseAdapter.
size = maxCount + 1 - list.size();
PictureSelectionModel selector = PictureSelector.create(context)
.openGallery(mimeType)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(size)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(showCamera)// 是否显示拍照按钮 true or false
.recordVideoSecond(videoLength)
.videoMaxSecond(videoLength)
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
.minimumCompressSize(Constants.MINIMUM_COMPRESSSIZE)// 小于100kb的图片不压缩
.synOrAsy(true);//同步true或异步false 压缩 默认同步、
.setImageEngine(GlideEngine.createGlideEngine())
// .setCropEngine(new ImageFileCropEngine())
// .setFilterMaxFileSize(size)
// .maxSelectNum(size)// 最大图片选择数量 int
.setImageSpanCount(4)
.setMaxSelectNum(size)
// .imageSpanCount(4)// 每行显示个数 int
.setSelectionMode(SelectModeConfig.MULTIPLE);
// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
// .isPreviewImage(true)
// .previewImage(true)// 是否可预览图片 true or false
// .isDisplayCamera(showCamera)
// .isCamera(showCamera)// 是否显示拍照按钮 true or false
// .setRecordVideoMaxSecond(videoLength)
// .recordVideoSecond(videoLength)
// .setFilterVideoMaxSecond(videoLength)
// .videoMaxSecond(videoLength)
// .isSelectZoomAnim(true)
// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
// .sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
// .setOutputCameraDir("/CustomPath");
// .setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
// .compress(true)// 是否压缩 true or false
// .glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
// .hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
// .compressSavePath(getPath())//压缩图片保存地址
// .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
// .minimumCompressSize(Constants.MINIMUM_COMPRESSSIZE)// 小于100kb的图片不压缩
// .synOrAsy(true);//同步true或异步false 压缩 默认同步、
// .enableCrop(true)//是否裁剪
// .freeStyleCropEnabled(true)
selector.forResult(requestCode);
......@@ -247,7 +268,7 @@ public class MediaChooseAdapter extends RecyclerView.Adapter<MediaChooseAdapter.
}
private void dumpPic(ArrayList<String> list, int position) {
if (mimeType == PictureMimeType.ofVideo()) {
if (mimeType == SelectMimeType.ofVideo()) {
Intent intent = new Intent(context, VideoPreviewActivty.class);
intent.putStringArrayListExtra(Constants.BUNDLE_KEY_ID, list);
context.startActivity(intent);
......
......@@ -4,25 +4,28 @@ import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.base.ui.activity.ImgGalleryActivty;
import com.dayu.baselibrary.R;
import com.dayu.common.Constants;
import com.dayu.utils.GlideEngine;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.ImageFileCropEngine;
import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.UtilsScreen;
import com.dayu.widgets.listener.OnItemClickListener;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import java.io.File;
import java.util.ArrayList;
......@@ -156,24 +159,36 @@ public class PhotoViewAdapter extends RecyclerView.Adapter<PhotoViewAdapter.Hold
int size;
size = maxCount+1 - list.size();
PictureSelectionModel selector = PictureSelector.create(context)
.openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(size)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(true)// 是否显示拍照按钮 true or false
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
.minimumCompressSize(Constants.MINIMUM_COMPRESSSIZE)// 小于**kb的图片不压缩
.synOrAsy(true);//同步true或异步false 压缩 默认同步、
// .enableCrop(true)//是否裁剪
// .freeStyleCropEnabled(true)
.openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.setImageEngine(GlideEngine.createGlideEngine())
.setCropEngine(new ImageFileCropEngine())
// .setFilterMaxFileSize(size)
.setImageSpanCount(4)
.setSelectionMode(SelectModeConfig.MULTIPLE)
.isPreviewImage(true)
.isDisplayCamera(true)
.isSelectZoomAnim(true)
.setOutputCameraDir("/CustomPath");
// PictureSelectionModel selector = PictureSelector.create(context)
// .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .maxSelectNum(size)// 最大图片选择数量 int
// .imageSpanCount(4)// 每行显示个数 int
// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
// .previewImage(true)// 是否可预览图片 true or false
// .isCamera(true)// 是否显示拍照按钮 true or false
// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
// .sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
// .setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
// .compress(true)// 是否压缩 true or false
// .glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
// .hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
// .compressSavePath(getPath())//压缩图片保存地址
// .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
// .minimumCompressSize(Constants.MINIMUM_COMPRESSSIZE)// 小于**kb的图片不压缩
// .synOrAsy(true);//同步true或异步false 压缩 默认同步、
//// .enableCrop(true)//是否裁剪
//// .freeStyleCropEnabled(true)
selector.forResult(PictureConfig.CHOOSE_REQUEST);
}
......
package com.dayu.base.ui.adapter;
import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by luofan
* on 2018/11/30.
......
......@@ -4,14 +4,14 @@ import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
import androidx.databinding.ViewDataBinding;
import androidx.fragment.app.Fragment;
import com.dayu.utils.LogUtils;
......
......@@ -4,8 +4,9 @@ import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.support.multidex.MultiDex;
import android.support.multidex.MultiDexApplication;
import androidx.multidex.MultiDex;
import androidx.multidex.MultiDexApplication;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.utils.AppManager;
......
......@@ -2,7 +2,8 @@ package com.dayu.common;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.StringRes;
import androidx.annotation.StringRes;
/**
* Created by luofan on 17/11/02.
......
......@@ -10,9 +10,10 @@ import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.FileProvider;
import android.telephony.TelephonyManager;
import androidx.core.content.FileProvider;
import com.cjt2325.cameralibrary.util.LogUtil;
import com.dayu.baselibrary.R;
import com.dayu.common.BaseApplication;
......
......@@ -10,7 +10,6 @@ import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.SimpleTarget;
import com.dayu.baselibrary.R;
import com.dayu.common.BaseApplication;
import com.luck.picture.lib.tools.Constant;
import com.youth.banner.loader.ImageLoader;
......
......@@ -50,8 +50,11 @@ public class CommonUtils {
* @param activity
*/
public static void hideSoftInput(Activity activity) {
((InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow
(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
View currentFocus = activity.getCurrentFocus();
if (currentFocus != null){
InputMethodManager systemService = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
systemService.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
......
package com.dayu.utils;
import android.content.Context;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.luck.picture.lib.engine.ImageEngine;
import com.luck.picture.lib.utils.ActivityCompatHelper;
/**
* @author:luck
* @date:2019-11-13 17:02
* @describe:Glide加载引擎
*/
public class GlideEngine implements ImageEngine {
/**
* 加载图片
*
* @param context 上下文
* @param url 资源url
* @param imageView 图片承载控件
*/
@Override
public void loadImage(Context context, String url, ImageView imageView) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.load(url)
.into(imageView);
}
@Override
public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.load(url)
// .override(maxWidth, maxHeight)
.into(imageView);
}
/**
* 加载相册目录封面
*
* @param context 上下文
* @param url 图片路径
* @param imageView 承载图片ImageView
*/
@Override
public void loadAlbumCover(Context context, String url, ImageView imageView) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.asBitmap()
.load(url)
// .override(180, 180)
// .sizeMultiplier(0.5f)
// .transform(new CenterCrop(), new RoundedCorners(8))
// .placeholder(R.drawable.ps_image_placeholder)
.into(imageView);
}
/**
* 加载图片列表图片
*
* @param context 上下文
* @param url 图片路径
* @param imageView 承载图片ImageView
*/
@Override
public void loadGridImage(Context context, String url, ImageView imageView) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context)
.load(url)
// .override(200, 200)
// .centerCrop()
// .placeholder(R.drawable.ps_image_placeholder)
.into(imageView);
}
@Override
public void pauseRequests(Context context) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context).pauseRequests();
}
@Override
public void resumeRequests(Context context) {
if (!ActivityCompatHelper.assertValidRequest(context)) {
return;
}
Glide.with(context).resumeRequests();
}
private GlideEngine() {
}
private static final class InstanceHolder {
static final GlideEngine instance = new GlideEngine();
}
public static GlideEngine createGlideEngine() {
return InstanceHolder.instance;
}
}
......@@ -7,9 +7,10 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Environment;
import android.support.annotation.DrawableRes;
import android.widget.ImageView;
import androidx.annotation.DrawableRes;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
......
......@@ -26,7 +26,7 @@ public class GlideRoundTransform extends BitmapTransformation {
}
public GlideRoundTransform(Context context, int dp) {
super(context);
super();
this.radius = Resources.getSystem().getDisplayMetrics().density * dp;
}
......
package com.dayu.utils;
import android.net.Uri;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.dayu.baselibrary.R;
import com.luck.picture.lib.engine.CropFileEngine;
import com.yalantis.ucrop.UCrop;
import java.util.ArrayList;
/**
* 自定义裁剪
*/
public class ImageFileCropEngine implements CropFileEngine {
@Override
public void onStartCrop(Fragment fragment, Uri srcUri, Uri destinationUri, ArrayList<String> dataSource, int requestCode) {
UCrop.Options options = buildOptions(fragment);
UCrop uCrop = UCrop.of(srcUri, destinationUri, dataSource);
options.withAspectRatio(1, 1);
options.setHideBottomControls(true);
options.setCropOutputPathDir(fragment.requireActivity().getFilesDir().getAbsolutePath()
+ "/"+"crop/");
options.setCropOutputFileName(System.currentTimeMillis() + ".png");
options.isDarkStatusBarBlack(true);
uCrop.withOptions(options);
uCrop.start(fragment.requireActivity(), fragment, requestCode);
}
private UCrop.Options buildOptions(Fragment fragment) {
UCrop.Options options = new UCrop.Options();
// options.setHideBottomControls(!cb_hide.isChecked());
// options.setFreeStyleCropEnabled(cb_styleCrop.isChecked());
// options.setShowCropFrame(cb_showCropFrame.isChecked());
// options.setShowCropGrid(cb_showCropGrid.isChecked());
// options.setCircleDimmedLayer(cb_crop_circular.isChecked());
options.withAspectRatio(1, 1);
options.setHideBottomControls(true);
// options.setCropOutputPathDir(getApplication().getFilesDir().getAbsolutePath() + "/wkCrop");
// options.setCropOutputFileName(System.currentTimeMillis() + ".png");
options.setStatusBarColor(ContextCompat.getColor(fragment.getContext(), R.color.white));
options.isDarkStatusBarBlack(true);
// options.isCropDragSmoothToCenter(false);
// options.setSkipCropMimeType(getNotSupportCrop());
// options.isForbidCropGifWebp(cb_not_gif.isChecked());
// options.isForbidSkipMultipleCrop(true);
// options.setMaxScaleMultiplier(100);
// if (selectorStyle != null && selectorStyle.getSelectMainStyle().getStatusBarColor() != 0) {
// SelectMainStyle mainStyle = selectorStyle.getSelectMainStyle();
// boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack();
// int statusBarColor = mainStyle.getStatusBarColor();
// options.isDarkStatusBarBlack(isDarkStatusBarBlack);
// if (StyleUtils.checkStyleValidity(statusBarColor)) {
// options.setStatusBarColor(statusBarColor);
// options.setToolbarColor(statusBarColor);
// } else {
// options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
// options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
// }
// TitleBarStyle titleBarStyle = selectorStyle.getTitleBarStyle();
// if (StyleUtils.checkStyleValidity(titleBarStyle.getTitleTextColor())) {
// options.setToolbarWidgetColor(titleBarStyle.getTitleTextColor());
// } else {
// options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white));
// }
// } else {
// options.setStatusBarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
// options.setToolbarColor(ContextCompat.getColor(getContext(), R.color.ps_color_grey));
// options.setToolbarWidgetColor(ContextCompat.getColor(getContext(), R.color.ps_color_white));
// }
return options;
}
}
......@@ -10,8 +10,10 @@ import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.dayu.widgets.CustomDialog;
import com.tbruyelle.rxpermissions2.RxPermissions;
......@@ -40,7 +42,7 @@ public class MPermissionUtils {
requestPermissions(fragment, requestCode, permission, callback);
}
public static void requestPermissionsResult(android.support.v4.app.Fragment fragment, int requestCode
public static void requestPermissionsResult(Fragment fragment, int requestCode
, String[] permission, OnPermissionListener callback) {
requestPermissions(fragment, requestCode, permission, callback);
}
......@@ -73,8 +75,8 @@ public class MPermissionUtils {
} else if (object instanceof android.app.Fragment) {
((android.app.Fragment) object).requestPermissions(deniedPermissions
.toArray(new String[deniedPermissions.size()]), requestCode);
} else if (object instanceof android.support.v4.app.Fragment) {
((android.support.v4.app.Fragment) object).requestPermissions(deniedPermissions
} else if (object instanceof Fragment) {
((Fragment) object).requestPermissions(deniedPermissions
.toArray(new String[deniedPermissions.size()]), requestCode);
} else {
mRequestCode = -1;
......@@ -90,8 +92,8 @@ public class MPermissionUtils {
Context context;
if (object instanceof android.app.Fragment) {
context = ((android.app.Fragment) object).getActivity();
} else if (object instanceof android.support.v4.app.Fragment) {
context = ((android.support.v4.app.Fragment) object).getActivity();
} else if (object instanceof Fragment) {
context = ((Fragment) object).getActivity();
} else {
context = (Activity) object;
}
......@@ -178,7 +180,7 @@ public class MPermissionUtils {
}
boolean isActivity = object instanceof Activity;
boolean isSupportFragment = object instanceof android.support.v4.app.Fragment;
boolean isSupportFragment = object instanceof Fragment;
boolean isAppFragment = object instanceof android.app.Fragment;
if (!(isActivity || isSupportFragment || isAppFragment)) {
......
......@@ -5,11 +5,11 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Environment;
import com.dayu.common.Constants;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import java.io.File;
......@@ -19,7 +19,7 @@ public class MediaChooseUtils {
* 选择单张图片
*/
public static void chooseSigleImg(Activity activity) {
chooseMedia(activity, PictureMimeType.ofImage(), 1, 0);
chooseMedia(activity, SelectMimeType.ofImage(), 1, 0);
}
public static void chooseLiveImg(Activity activity) {
......@@ -28,10 +28,10 @@ public class MediaChooseUtils {
@SuppressLint("CheckResult")
@Override
public void onPermissionGranted() {
PictureSelectionModel selector = getPictureSelectionModel(activity, PictureMimeType.ofImage(), 1, 0,0);
selector.enableCrop(true)//是否裁剪
.withAspectRatio(3, 2)
.freeStyleCropEnabled(true);
PictureSelectionModel selector = getPictureSelectionModel(activity, SelectMimeType.ofImage(), 1, 0,0);
// selector.enableCrop(true)//是否裁剪
// .withAspectRatio(3, 2)
// .freeStyleCropEnabled(true);
selector.forResult(PictureConfig.CHOOSE_REQUEST);
}
......@@ -68,8 +68,8 @@ public class MediaChooseUtils {
@SuppressLint("CheckResult")
@Override
public void onPermissionGranted() {
PictureSelectionModel selector = getPictureSelectionModel(activity, PictureMimeType.ofVideo(), 1, videoLength,videoLength);
selector.isCamera(false).forResult(PictureConfig.CHOOSE_REQUEST);
PictureSelectionModel selector = getPictureSelectionModel(activity, SelectMimeType.ofVideo(), 1, videoLength,videoLength);
selector.isDisplayCamera(false).forResult(PictureConfig.CHOOSE_REQUEST);
}
@Override
......@@ -88,8 +88,8 @@ public class MediaChooseUtils {
@SuppressLint("CheckResult")
@Override
public void onPermissionGranted() {
PictureSelectionModel selector = getPictureSelectionModel(activity, PictureMimeType.ofVideo(), 1, videoLength,minLength);
selector.isCamera(false).forResult(code);
PictureSelectionModel selector = getPictureSelectionModel(activity, SelectMimeType.ofVideo(), 1, videoLength,minLength);
selector.isDisplayCamera(false).forResult(code);
}
@Override
......@@ -130,28 +130,38 @@ public class MediaChooseUtils {
}
public static PictureSelectionModel getPictureSelectionModel(Activity activity, int type, int maxCount, int videoLength, int minLength) {
// return PictureSelector.create(activity)
// .openGallery(type)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .maxSelectNum(maxCount)// 最大图片选择数量 int
// .imageSpanCount(4)// 每行显示个数 int
// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
// .previewImage(true)// 是否可预览图片 true or false
// .isCamera(true)// 是否显示拍照按钮 true or false
// .recordVideoSecond(videoLength) //最大视频长度(秒)
// .videoMaxSecond(videoLength) //最大视频长度(秒)
// .videoMinSecond(minLength)
// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
// .sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
// .setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
// .compress(true)// 是否压缩 true or false
// .glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
// .hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
// .compressSavePath(getPath())//压缩图片保存地址
// .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
// .minimumCompressSize(Constants.MINIMUM_COMPRESSSIZE)// 小于100kb的图片不压缩
// // .enableCrop(true)//是否裁剪
// // .freeStyleCropEnabled(true)
// .synOrAsy(true);
return PictureSelector.create(activity)
.openGallery(type)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(maxCount)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(true)// 是否显示拍照按钮 true or false
.recordVideoSecond(videoLength) //最大视频长度(秒)
.videoMaxSecond(videoLength) //最大视频长度(秒)
.videoMinSecond(minLength)
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
.minimumCompressSize(Constants.MINIMUM_COMPRESSSIZE)// 小于100kb的图片不压缩
// .enableCrop(true)//是否裁剪
// .freeStyleCropEnabled(true)
.synOrAsy(true);
.setImageEngine(GlideEngine.createGlideEngine())
// .setCropEngine(new ImageFileCropEngine())
// .setFilterMaxFileSize(maxCount)
.setImageSpanCount(4)
.setSelectionMode(SelectModeConfig.MULTIPLE);
// .isPreviewImage(true)
// .isDisplayCamera(true)
// .isSelectZoomAnim(true);
}
public static String getPath() {
......
......@@ -9,10 +9,11 @@ import android.graphics.Matrix;
import android.media.ExifInterface;
import android.os.Environment;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import java.io.File;
import java.io.FileOutputStream;
......@@ -135,25 +136,36 @@ public class PictrueUtils {
public static void showPicDialogs(Activity activity,int maxImgCout) {
PictureSelectionModel selector = PictureSelector.create(activity)
.openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(maxImgCout)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(true)// 是否显示拍照按钮 true or false
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 300)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
.minimumCompressSize(100)// 小于100kb的图片不压缩
.synOrAsy(true)//同步true或异步false 压缩 默认同步、
.enableCrop(true)//是否裁剪
.withAspectRatio(1, 1)
.freeStyleCropEnabled(false);
.openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .setFilterMaxFileSize(maxImgCout)
.setImageEngine(GlideEngine.createGlideEngine())
.setCropEngine(new ImageFileCropEngine())
.setImageSpanCount(4)
.setSelectionMode(SelectModeConfig.MULTIPLE)
.isPreviewImage(true)
.isDisplayCamera(true)
.isSelectZoomAnim(true)
.setOutputCameraDir("/CustomPath");
// PictureSelectionModel selector = PictureSelector.create(activity)
// .openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .maxSelectNum(maxImgCout)// 最大图片选择数量 int
// .imageSpanCount(4)// 每行显示个数 int
// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
// .previewImage(true)// 是否可预览图片 true or false
// .isCamera(true)// 是否显示拍照按钮 true or false
// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
// .sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
// .setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
// .compress(true)// 是否压缩 true or false
// .glideOverride(300, 300)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
// .hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
// .compressSavePath(getPath())//压缩图片保存地址
// .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
// .minimumCompressSize(100)// 小于100kb的图片不压缩
// .synOrAsy(true)//同步true或异步false 压缩 默认同步、
// .enableCrop(true)//是否裁剪
// .withAspectRatio(1, 1)
// .freeStyleCropEnabled(false);
selector.forResult(PictureConfig.CHOOSE_REQUEST);
}
......
......@@ -5,7 +5,6 @@ import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
......@@ -15,6 +14,8 @@ import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import com.dayu.baselibrary.R;
import com.dayu.common.BaseApplication;
......
......@@ -5,10 +5,11 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Environment;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import java.io.File;
......@@ -50,24 +51,35 @@ public class SelectPicUtils {
public static void showPicDialogs(Activity activity, int size, boolean needCrop, int requestCode) {
PictureSelectionModel selector = PictureSelector.create(activity)
.openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(size)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(true)// 是否显示拍照按钮 true or false
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
// .minimumCompressSize(100)// 小于100kb的图片不压缩
.synOrAsy(true)//同步true或异步false 压缩 默认同步、
.enableCrop(needCrop)//是否裁剪
.freeStyleCropEnabled(needCrop);
.openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .setFilterMaxFileSize(size)
.setImageEngine(GlideEngine.createGlideEngine())
.setCropEngine(new ImageFileCropEngine())
.setImageSpanCount(4)
.setSelectionMode(SelectModeConfig.MULTIPLE)
.isPreviewImage(true)
.isDisplayCamera(true)
.isSelectZoomAnim(true)
.setOutputCameraDir("/CustomPath");
// PictureSelectionModel selector = PictureSelector.create(activity)
// .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .maxSelectNum(size)// 最大图片选择数量 int
// .imageSpanCount(4)// 每行显示个数 int
// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
// .previewImage(true)// 是否可预览图片 true or false
// .isCamera(true)// 是否显示拍照按钮 true or false
// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
// .sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
// .setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
// .compress(true)// 是否压缩 true or false
// .glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
// .hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
// .compressSavePath(getPath())//压缩图片保存地址
// .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
//// .minimumCompressSize(100)// 小于100kb的图片不压缩
// .synOrAsy(true)//同步true或异步false 压缩 默认同步、
// .enableCrop(needCrop)//是否裁剪
// .freeStyleCropEnabled(needCrop);
selector.forResult(requestCode);
}
......
......@@ -2,11 +2,12 @@ package com.dayu.utils;
import android.app.Activity;
import android.content.res.Resources;
import android.support.design.widget.TabLayout;
import android.util.TypedValue;
import android.view.View;
import android.widget.LinearLayout;
import com.google.android.material.tabs.TabLayout;
import java.lang.reflect.Field;
/**
......@@ -29,7 +30,7 @@ public class TabLayoutUtils {
Class<?> tabLayout = tabs.getClass();
Field tabStrip = null;
try {
tabStrip = tabLayout.getDeclaredField("mTabStrip");
tabStrip = tabLayout.getDeclaredField("slidingTabIndicator");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
......
......@@ -53,6 +53,6 @@ public class TimeCountUtil2 extends CountDownTimer {
public void onFinish() {
btn.setText(mAgain);
btn.setClickable(true);//重新获得点击
btn.setTextColor(mActivity.getResources().getColor(R.color.white));
btn.setTextColor(mActivity.getResources().getColor(R.color.cl_white));
}
}
......@@ -2,10 +2,11 @@ package com.dayu.utils;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.StringRes;
import android.view.Gravity;
import android.widget.Toast;
import androidx.annotation.StringRes;
/**
* 吐司工具类
* on 2017/8/22.
......
......@@ -15,12 +15,14 @@ import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.TabWidget;
import androidx.appcompat.widget.AppCompatTextView;
/**
* Created by luofan
* on 2018/12/14.
*/
public class BadgeView extends android.support.v7.widget.AppCompatTextView {
public class BadgeView extends AppCompatTextView {
private boolean mHideOnNull = true;
......
......@@ -16,6 +16,8 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatImageView;
import com.dayu.baselibrary.R;
......@@ -23,7 +25,7 @@ import com.dayu.baselibrary.R;
* Created by yu on 2017/8/24.
*/
public class CircleImageView extends android.support.v7.widget.AppCompatImageView {
public class CircleImageView extends AppCompatImageView {
private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;
private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;
private static final int COLORDRAWABLE_DIMENSION = 2;
......
package com.dayu.widgets;
import android.content.Context;
import android.support.v7.widget.AppCompatEditText;
import androidx.appcompat.widget.AppCompatEditText;
public class DisableEditText extends AppCompatEditText {
public DisableEditText(Context context) {
......
package com.dayu.widgets;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
public class FixedViewPager extends ViewPager {
public FixedViewPager(@NonNull Context context) {
super(context);
......
......@@ -2,17 +2,18 @@ package com.dayu.widgets;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.dayu.base.api.protocol.BasePageBean;
import com.dayu.base.ui.adapter.CoreAdapter;
import com.dayu.base.ui.adapter.TypeSelector;
......
......@@ -3,11 +3,12 @@ package com.dayu.widgets;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.dayu.baselibrary.R;
/**
......
......@@ -6,7 +6,6 @@ import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
......@@ -15,14 +14,19 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
import com.dayu.baselibrary.R;
import com.dayu.utils.GlideEngine;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.ImageFileCropEngine;
import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.UtilsScreen;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import java.io.File;
import java.util.ArrayList;
......@@ -130,24 +134,36 @@ public class PhotoView extends LinearLayout {
int size;
size = 10 - mImgs.size();
PictureSelectionModel selector = PictureSelector.create(mContext)
.openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(size)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(true)// 是否显示拍照按钮 true or false
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
// .minimumCompressSize(100)// 小于100kb的图片不压缩
.synOrAsy(true);//同步true或异步false 压缩 默认同步、
// .enableCrop(true)//是否裁剪
// .freeStyleCropEnabled(true)
.openGallery(SelectMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .setFilterMaxFileSize(size)
.setImageEngine(GlideEngine.createGlideEngine())
.setCropEngine(new ImageFileCropEngine())
.setImageSpanCount(4)
.setSelectionMode(SelectModeConfig.MULTIPLE)
.isPreviewImage(true)
.isDisplayCamera(true)
.isSelectZoomAnim(true)
.setOutputCameraDir("/CustomPath");
// PictureSelectionModel selector = PictureSelector.create(mContext)
// .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
// .maxSelectNum(size)// 最大图片选择数量 int
// .imageSpanCount(4)// 每行显示个数 int
// .selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
// .previewImage(true)// 是否可预览图片 true or false
// .isCamera(true)// 是否显示拍照按钮 true or false
// .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
// .sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
// .setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
// .compress(true)// 是否压缩 true or false
// .glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
// .hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
// .compressSavePath(getPath())//压缩图片保存地址
// .previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
//// .minimumCompressSize(100)// 小于100kb的图片不压缩
// .synOrAsy(true);//同步true或异步false 压缩 默认同步、
//// .enableCrop(true)//是否裁剪
//// .freeStyleCropEnabled(true)
selector.forResult(PictureConfig.CHOOSE_REQUEST);
}
......
......@@ -3,11 +3,12 @@ package com.dayu.widgets;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.dayu.baselibrary.R;
/**
......
......@@ -3,6 +3,8 @@ package com.dayu.widgets;
import android.content.Context;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatImageView;
import com.dayu.baselibrary.R;
......@@ -11,7 +13,7 @@ import com.dayu.baselibrary.R;
* on 2017/9/21.
*/
public class SwitchImage extends android.support.v7.widget.AppCompatImageView {
public class SwitchImage extends AppCompatImageView {
public boolean switchButton = false;
public boolean getSwitchButton() {
......
......@@ -2,15 +2,16 @@ package com.dayu.widgets;
import android.app.Activity;
import android.app.Dialog;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.dayu.baselibrary.R;
......
......@@ -2,8 +2,6 @@ package com.dayu.widgets;
import android.app.Activity;
import android.app.Dialog;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
......
......@@ -20,7 +20,7 @@
style="@style/title_image_back" />
</RelativeLayout>
<android.support.v4.view.ViewPager
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_preview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
......
......@@ -26,7 +26,7 @@
/>
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_text"
android:layout_margin="15dp"
android:layout_width="match_parent"
......
......@@ -5,7 +5,7 @@
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_text"
android:background="@color/white"
android:layout_marginLeft="30dp"
......
......@@ -5,7 +5,7 @@
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_text"
android:background="@color/white"
android:layout_width="match_parent"
......
......@@ -4,18 +4,18 @@
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.widget.SwipeRefreshLayout
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="@null"
android:scrollbars="none" />
</android.support.v4.widget.SwipeRefreshLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<LinearLayout
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="cl_white">#ffffff</color>
<color name="white">#ffffff</color>
<color name="cl_primarydark">#303F9F</color>
<color name="cl_accent">#ff00</color>
<color name="cl_text">#8a8a8a</color>
......@@ -52,6 +53,10 @@
<color name="table_record_title_bg">#78d3f6</color>
<color name="top_tab_selected_bg">#d7d7d7</color>
<color name="color_69">#999999</color>
<color name="color_orange">#E0FF6100</color>
<color name="color_fa">#FAFAFA</color>
<color name="color_f2">#F2F2F2</color>
<color name="blue">#7D7DFF</color>
<color name="color_53">#53575e</color>
</resources>
......@@ -2,7 +2,6 @@ package com.tencent.liteav.demo.beauty;
import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -10,6 +9,8 @@ import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class IconTextAdapter extends BaseAdapter {
......
......@@ -3,10 +3,11 @@ package com.tencent.liteav.demo.beauty;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.File;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
......
......@@ -3,10 +3,11 @@ package com.tencent.liteav.demo.beauty;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.File;
public class VideoDeviceUtil {
......
package com.tencent.liteav.demo.beauty;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
......
......@@ -5,8 +5,8 @@ buildscript {
ext.build_tools_version = "29.0.2"
ext.min_sdk_version = 21
ext.target_sdk_version = 29
ext.version_code = 310
ext.verson_name = "3.1.0"
ext.version_code = 311
ext.verson_name = "3.1.1"
ext.gradle_version = '4.0.1'
ext.isReleaseMinify = false
ext.isDebugMinify = false
......
......@@ -3,10 +3,11 @@ package com.cjt2325.cameralibrary;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
import com.cjt2325.cameralibrary.util.ScreenUtils;
/**
......
......@@ -9,7 +9,6 @@ import android.hardware.Camera;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
......@@ -22,6 +21,8 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.VideoView;
import androidx.annotation.RequiresApi;
import com.cjt2325.cameralibrary.listener.CaptureListener;
import com.cjt2325.cameralibrary.listener.ClickListener;
import com.cjt2325.cameralibrary.listener.ErrorListener;
......
package com.example.verificationcodejavademo.widget;
import android.content.Context;
import android.support.v7.widget.AppCompatTextView;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
......@@ -11,6 +10,7 @@ import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.AppCompatTextView;
import java.util.ArrayList;
import java.util.List;
......
......@@ -18,4 +18,6 @@ BASE_URL=http://47.94.101.239:3112
IS_64_BIT=true
Android.useDeprecatedNdk=true
android.useAndroidX=true
\ No newline at end of file
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m
\ No newline at end of file
......@@ -2,10 +2,11 @@ package com.dayu.learncenter.ui.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.badoo.mobile.util.WeakHandler;
import com.dayu.base.api.Api;
import com.dayu.base.api.protocol.AddShareRecordData;
......
......@@ -7,7 +7,6 @@ import android.text.TextUtils;
import android.view.View;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.base.ui.activity.CameraActivity;
import com.dayu.common.Constants;
import com.dayu.learncenter.R;
import com.dayu.learncenter.api.bean.CourseDeatilBean;
......@@ -22,19 +21,18 @@ import com.dayu.utils.ToastUtils;
import com.dayu.widgets.CustomDialog;
import com.dayu.widgets.JZMediaIjk;
import com.dayu.widgets.TextDialog;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionCameraModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import cn.jzvd.Jzvd;
import cn.jzvd.JzvdStd;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class EditCourseActivity extends BaseActivity<PubCoursePresenter, ActivityPubCourseBinding>
implements PubCourseContract.View {
......@@ -197,13 +195,16 @@ public class EditCourseActivity extends BaseActivity<PubCoursePresenter, Activit
@SuppressLint("CheckResult")
@Override
public void onPermissionGranted() {
Observable.timer(1000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> {
Intent intent = new Intent(EditCourseActivity.this, CameraActivity.class);
intent.putExtra(Constants.ONLY_VIDEO, true);
startActivityForResult(intent, Constants.CAMERA_CODE);
});
// Observable.timer(1000, TimeUnit.MILLISECONDS)
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(aLong -> {
// Intent intent = new Intent(EditCourseActivity.this, CameraActivity.class);
// intent.putExtra(Constants.ONLY_VIDEO, true);
// startActivityForResult(intent, Constants.CAMERA_CODE);
// });
PictureSelectionCameraModel pictureSelectionCameraModel = PictureSelector.create(EditCourseActivity.this)
.openCamera(SelectMimeType.ofVideo());
pictureSelectionCameraModel.forResultActivity(1002);
}
@Override
......@@ -238,9 +239,12 @@ public class EditCourseActivity extends BaseActivity<PubCoursePresenter, Activit
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
List<LocalMedia> mSelectList = PictureSelector.obtainMultipleResult(data);
List<LocalMedia> mSelectList = PictureSelector.obtainSelectorList(data);
if (mSelectList != null) {
videoPath = mSelectList.get(0).getPath();
if (videoPath.contains("content")){
videoPath = mSelectList.get(0).getRealPath();
}
File file = new File(videoPath);
if (file.length() > 300 * 1024 * 1024) {
showToast(R.string.video_file_too_large);
......@@ -250,6 +254,22 @@ public class EditCourseActivity extends BaseActivity<PubCoursePresenter, Activit
}
}
break;
case 1002:
List<LocalMedia> mSelectList1 = PictureSelector.obtainSelectorList(data);
if (mSelectList1 != null) {
videoPath = mSelectList1.get(0).getPath();
if (videoPath.contains("content")){
videoPath = mSelectList1.get(0).getRealPath();
}
File file = new File(videoPath);
if (file.length() > 500 * 1024 * 1024) {
showToast(R.string.video_file_too_large);
videoPath = "";
} else {
setVideoView();
}
}
break;
}
} else if (resultCode == Constants.CAMERA_VIDEO) {
videoPath = data.getStringExtra("videoPath");
......
......@@ -3,10 +3,11 @@ package com.dayu.learncenter.ui.activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.chad.library.adapter.base.BaseQuickAdapter;
......
......@@ -17,7 +17,7 @@ import com.dayu.livemodule.xiaozhibo.login.TCUserMgr;
import com.dayu.provider.router.RouterPath;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.MediaChooseUtils;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.entity.LocalMedia;
......@@ -87,7 +87,7 @@ public class PrepareLiveActivity extends BaseActivity<SImplePresenter, ActivityP
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
List<LocalMedia> mSelectList = PictureSelector.obtainMultipleResult(data);
List<LocalMedia> mSelectList = PictureSelector.obtainSelectorList(data);
if (mSelectList != null && mSelectList.size()>0) {
uploadPic(mSelectList.get(0).getCutPath());
// TCUserMgr.getInstance().setCoverPic(mSelectList.get(0).getCutPath(), null);
......
......@@ -22,10 +22,11 @@ import com.dayu.utils.MPermissionUtils;
import com.dayu.utils.MediaChooseUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.widgets.TextDialog;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.basic.PictureSelectionCameraModel;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
//import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
......@@ -120,13 +121,16 @@ public class PubCourseActivity extends BaseActivity<PubCoursePresenter, Activity
@SuppressLint("CheckResult")
@Override
public void onPermissionGranted() {
Observable.timer(1000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(aLong -> {
Intent intent = new Intent(PubCourseActivity.this, CameraActivity.class);
intent.putExtra(Constants.ONLY_VIDEO, true);
startActivityForResult(intent, Constants.CAMERA_CODE);
});
// Observable.timer(1000, TimeUnit.MILLISECONDS)
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(aLong -> {
// Intent intent = new Intent(PubCourseActivity.this, CameraActivity.class);
// intent.putExtra(Constants.ONLY_VIDEO, true);
// startActivityForResult(intent, Constants.CAMERA_CODE);
// });
PictureSelectionCameraModel pictureSelectionCameraModel = PictureSelector.create(PubCourseActivity.this)
.openCamera(SelectMimeType.ofVideo());
pictureSelectionCameraModel.forResultActivity(1002);
}
@Override
......@@ -171,9 +175,28 @@ public class PubCourseActivity extends BaseActivity<PubCoursePresenter, Activity
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
List<LocalMedia> mSelectList = PictureSelector.obtainMultipleResult(data);
List<LocalMedia> mSelectList = PictureSelector.obtainSelectorList(data);
if (mSelectList != null) {
videoPath = mSelectList.get(0).getPath();
if (videoPath.contains("content")){
videoPath = mSelectList.get(0).getRealPath();
}
File file = new File(videoPath);
if (file.length() > 500 * 1024 * 1024) {
showToast(R.string.video_file_too_large);
videoPath = "";
} else {
setVideoView();
}
}
break;
case 1002:
List<LocalMedia> mSelectList1 = PictureSelector.obtainSelectorList(data);
if (mSelectList1 != null) {
videoPath = mSelectList1.get(0).getPath();
if (videoPath.contains("content")){
videoPath = mSelectList1.get(0).getRealPath();
}
File file = new File(videoPath);
if (file.length() > 500 * 1024 * 1024) {
showToast(R.string.video_file_too_large);
......
package com.dayu.learncenter.ui.fragment;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.base.api.Api;
import com.dayu.base.api.protocol.AddShareRecordData;
import com.dayu.base.ui.fragment.BaseFragment;
......
......@@ -2,13 +2,13 @@ package com.dayu.learncenter.ui.fragment;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.launcher.ARouter;
import com.dayu.base.api.APIService;
import com.dayu.base.api.Api;
......@@ -28,6 +28,7 @@ import com.dayu.provider.router.RouterPath;
import com.dayu.utils.TabLayoutUtils;
import com.dayu.utils.UIUtils;
import com.dayu.utils.UserManager;
import com.google.android.material.tabs.TabLayout;
import com.umeng.analytics.MobclickAgent;
import com.youth.banner.WeakHandler;
......
package com.dayu.learncenter.ui.fragment;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.chad.library.adapter.base.BaseQuickAdapter;
......
package com.dayu.learncenter.ui.fragment;
import android.content.Intent;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils;
import android.widget.ImageView;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.dayu.base.api.APIService;
......
......@@ -49,7 +49,7 @@
android:layout_above="@+id/btn_comment"
>
<android.support.v4.widget.NestedScrollView
<androidx.core.widget.NestedScrollView
android:id="@+id/nsv_learn"
android:layout_width="match_parent"
android:layout_height="match_parent"
......@@ -211,14 +211,14 @@
</LinearLayout>
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_component"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</androidx.core.widget.NestedScrollView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
<Button
......
......@@ -81,7 +81,7 @@
android:layout_height="match_parent"
android:background="#f5f5f5">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_knowledge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
......@@ -62,7 +62,7 @@
android:textColor="@color/common_red"
android:textSize="15dp" />
<android.support.design.widget.TabLayout
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_learn"
android:layout_width="match_parent"
android:layout_height="78dp"
......@@ -74,7 +74,7 @@
<ImageView style="@style/card_line" />
<android.support.v4.view.ViewPager
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_learn"
android:layout_width="match_parent"
android:layout_height="0dp"
......
......@@ -25,7 +25,7 @@
android:layout_height="match_parent"
android:layout_marginTop="2dp">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_knowledge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
......
......@@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:background="#f5f5f5">
<android.support.v4.widget.NestedScrollView
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
......@@ -16,20 +16,20 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_live"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never" />
<android.support.v7.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_video"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:overScrollMode="never" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</androidx.core.widget.NestedScrollView>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</layout>
\ No newline at end of file
package com.dayu.livemodule.roomutil.http;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
......
......@@ -7,9 +7,6 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
......@@ -20,6 +17,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.livemodule.R;
import com.dayu.livemodule.roomutil.commondef.AnchorInfo;
import com.dayu.livemodule.xiaozhibo.anchor.music.TCAudioControl;
......
......@@ -3,7 +3,8 @@ package com.dayu.livemodule.xiaozhibo.anchor.music;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import androidx.annotation.NonNull;
public class MusicEntity implements Parcelable {
//id标识
......
......@@ -11,10 +11,6 @@ import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
......@@ -27,6 +23,11 @@ import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.dayu.livemodule.R;
......
......@@ -15,11 +15,12 @@ import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import com.dayu.livemodule.R;
import com.dayu.livemodule.xiaozhibo.common.utils.TCConstants;
......
......@@ -10,7 +10,8 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.os.IBinder;
import android.support.v4.content.LocalBroadcastManager;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.dayu.livemodule.xiaozhibo.common.utils.TCConstants;
......
......@@ -8,8 +8,6 @@ import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
......@@ -24,6 +22,9 @@ import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.livemodule.IMLVBLiveRoomListener;
import com.dayu.livemodule.MLVBLiveRoom;
import com.dayu.livemodule.R;
......@@ -122,7 +123,7 @@ public class TCAudienceActivity extends Activity implements IMLVBLiveRoomListene
private int baseUserCount = 500; //观众基数
//头像列表控件
private RecyclerView mUserAvatarList;
private RecyclerView mUserAvatarList;
private TCUserAvatarListAdapter mAvatarListAdapter;
//点赞动画
......
......@@ -32,13 +32,14 @@ import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.PermissionChecker;
import android.text.TextUtils;
import android.util.TypedValue;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.PermissionChecker;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
......
package com.dayu.livemodule.xiaozhibo.common.widget;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.recyclerview.widget.RecyclerView;
import com.dayu.livemodule.R;
import com.dayu.livemodule.xiaozhibo.common.msg.TCSimpleUserInfo;
import com.dayu.livemodule.xiaozhibo.common.utils.TCUtils;
......
......@@ -4,9 +4,10 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.text.style.ImageSpan;
import androidx.annotation.NonNull;
import java.lang.ref.WeakReference;
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment