我的相关页面,以及三方组件升级
This commit is contained in:
@@ -30,6 +30,10 @@ android {
|
||||
kotlinOptions {
|
||||
jvmTarget = '11'
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -77,6 +81,7 @@ dependencies {
|
||||
api rootProject.ext.dependencies["glide-okhttps"]
|
||||
api rootProject.ext.dependencies["Permissionx"]
|
||||
api 'pub.devrel:easypermissions:3.0.0'
|
||||
api 'io.github.lucksiege:compress:v3.11.2'
|
||||
// api 'com.gyf.cactus:cactus:1.1.3-beta13'
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<meta-data
|
||||
android:name="com.dahe.mylibrary.glide.AppGlideModule"
|
||||
android:value="AppGlideModule"/>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,206 @@
|
||||
package com.dahe.mylibrary.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.dahe.mylibrary.R
|
||||
import com.dahe.mylibrary.callback.OnItemLongClickListener
|
||||
import com.luck.picture.lib.config.PictureMimeType
|
||||
import com.luck.picture.lib.config.SelectMimeType
|
||||
import com.luck.picture.lib.entity.LocalMedia
|
||||
import com.luck.picture.lib.utils.DateUtils
|
||||
|
||||
/**
|
||||
* @author:luck
|
||||
* @date:2016-7-27 23:02
|
||||
* @describe:GridImageAdapter
|
||||
*/
|
||||
class GridImageAdapter(context: Context?, result: List<LocalMedia>?) :
|
||||
RecyclerView.Adapter<GridImageAdapter.ViewHolder?>() {
|
||||
private val mInflater: LayoutInflater
|
||||
val data = ArrayList<LocalMedia>()
|
||||
var selectMax = 9
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
fun delete(position: Int) {
|
||||
try {
|
||||
if (position != RecyclerView.NO_POSITION && data.size > position) {
|
||||
data.removeAt(position)
|
||||
notifyItemRemoved(position)
|
||||
notifyItemRangeChanged(position, data.size)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
fun remove(position: Int) {
|
||||
if (position < data.size) {
|
||||
data.removeAt(position)
|
||||
}
|
||||
}
|
||||
|
||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
var mImg: ImageView
|
||||
var mIvDel: ImageView
|
||||
var tvDuration: TextView
|
||||
|
||||
init {
|
||||
mImg = view.findViewById(R.id.fiv)
|
||||
mIvDel = view.findViewById(R.id.iv_del)
|
||||
tvDuration = view.findViewById(R.id.tv_duration)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return if (data.size < selectMax) {
|
||||
data.size + 1
|
||||
} else {
|
||||
data.size
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
return if (isShowAddItem(position)) {
|
||||
TYPE_CAMERA
|
||||
} else {
|
||||
TYPE_PICTURE
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建ViewHolder
|
||||
*/
|
||||
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ViewHolder {
|
||||
val view = mInflater.inflate(R.layout.gv_filter_image, viewGroup, false)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
private fun isShowAddItem(position: Int): Boolean {
|
||||
val size = data.size
|
||||
return position == size
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置值
|
||||
*/
|
||||
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
|
||||
//少于MaxSize张,显示继续添加的图标
|
||||
if (getItemViewType(position) == TYPE_CAMERA) {
|
||||
viewHolder.mImg.setImageResource(R.drawable.ic_add_image)
|
||||
viewHolder.mImg.setOnClickListener {
|
||||
if (mItemClickListener != null) {
|
||||
mItemClickListener!!.openPicture()
|
||||
}
|
||||
}
|
||||
viewHolder.mIvDel.visibility = View.INVISIBLE
|
||||
} else {
|
||||
viewHolder.mIvDel.visibility = View.VISIBLE
|
||||
viewHolder.mIvDel.setOnClickListener { view: View? ->
|
||||
val index = viewHolder.absoluteAdapterPosition
|
||||
if (index != RecyclerView.NO_POSITION && data.size > index) {
|
||||
data.removeAt(index)
|
||||
notifyItemRemoved(index)
|
||||
notifyItemRangeChanged(index, data.size)
|
||||
}
|
||||
}
|
||||
val media = data[position]
|
||||
val chooseModel = media.chooseModel
|
||||
val path = media.availablePath
|
||||
val duration = media.duration
|
||||
viewHolder.tvDuration.visibility =
|
||||
if (PictureMimeType.isHasVideo(media.mimeType)) View.VISIBLE else View.GONE
|
||||
if (chooseModel == SelectMimeType.ofAudio()) {
|
||||
viewHolder.tvDuration.visibility = View.VISIBLE
|
||||
viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds(
|
||||
R.drawable.ps_ic_audio,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
} else {
|
||||
viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds(
|
||||
R.drawable.ps_ic_video,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
viewHolder.tvDuration.text = DateUtils.formatDurationTime(duration)
|
||||
if (chooseModel == SelectMimeType.ofAudio()) {
|
||||
viewHolder.mImg.setImageResource(R.drawable.ps_audio_placeholder)
|
||||
} else {
|
||||
Glide.with(viewHolder.itemView.context)
|
||||
.load(
|
||||
if (PictureMimeType.isContent(path) && !media.isCut && !media.isCompressed) Uri.parse(
|
||||
path
|
||||
) else path
|
||||
)
|
||||
.centerCrop()
|
||||
.placeholder(R.color.app_color_f6)
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
||||
.into(viewHolder.mImg)
|
||||
}
|
||||
//itemView 的点击事件
|
||||
if (mItemClickListener != null) {
|
||||
viewHolder.itemView.setOnClickListener { v: View? ->
|
||||
val adapterPosition = viewHolder.absoluteAdapterPosition
|
||||
mItemClickListener!!.onItemClick(v, adapterPosition)
|
||||
}
|
||||
}
|
||||
if (mItemLongClickListener != null) {
|
||||
viewHolder.itemView.setOnLongClickListener { v: View? ->
|
||||
val adapterPosition = viewHolder.absoluteAdapterPosition
|
||||
mItemLongClickListener!!.onItemLongClick(viewHolder, adapterPosition, v)
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private var mItemClickListener: OnItemClickListener? = null
|
||||
fun setOnItemClickListener(l: OnItemClickListener?) {
|
||||
mItemClickListener = l
|
||||
}
|
||||
|
||||
interface OnItemClickListener {
|
||||
/**
|
||||
* Item click event
|
||||
*
|
||||
* @param v
|
||||
* @param position
|
||||
*/
|
||||
fun onItemClick(v: View?, position: Int)
|
||||
|
||||
/**
|
||||
* Open PictureSelector
|
||||
*/
|
||||
fun openPicture()
|
||||
}
|
||||
|
||||
private var mItemLongClickListener: OnItemLongClickListener? = null
|
||||
|
||||
init {
|
||||
mInflater = LayoutInflater.from(context)
|
||||
data.addAll(result!!)
|
||||
}
|
||||
|
||||
fun setItemLongClickListener(l: OnItemLongClickListener?) {
|
||||
mItemLongClickListener = l
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "PictureSelector"
|
||||
const val TYPE_CAMERA = 1
|
||||
const val TYPE_PICTURE = 2
|
||||
}
|
||||
}
|
||||
@@ -46,13 +46,15 @@ public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActi
|
||||
protected int mRefreshPage = 1;
|
||||
protected int mRefreshCount = 15;
|
||||
|
||||
private int statusColor = -1;
|
||||
|
||||
public VB binding;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = createBinding();
|
||||
if (binding==null)
|
||||
if (binding == null)
|
||||
return;
|
||||
setContentView(binding.getRoot());
|
||||
mContext = this;
|
||||
@@ -95,6 +97,7 @@ public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActi
|
||||
* 设置沉浸式标题栏 标题栏的颜色
|
||||
*/
|
||||
public void setStatusBarColor(int color) {
|
||||
statusColor = color;
|
||||
StatusBarCompat.setStatusBarColor(this, ContextCompat.getColor(mContext, color), DEFAULT_STATUS_BAR_ALPHA);
|
||||
StatusBar.changeToLightStatusBar(this); //黑色 下边白色
|
||||
// StatusBar.cancelLightStatusBar(this);
|
||||
@@ -155,13 +158,14 @@ public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActi
|
||||
if (!TextUtils.isEmpty(title))
|
||||
((TextView) findViewById(R.id.common_toolBar_title)).setText(title);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置标题
|
||||
*/
|
||||
protected void setTitleBar(String title,boolean isBack) {
|
||||
protected void setTitleBar(String title, boolean isBack) {
|
||||
mToolbar = (Toolbar) findViewById(R.id.common_toolbar);
|
||||
mToolbar.setBackgroundColor(Color.TRANSPARENT);
|
||||
if (isBack){
|
||||
mToolbar.setBackgroundColor(statusColor == -1 ? Color.TRANSPARENT : ContextCompat.getColor(mContext, statusColor));
|
||||
if (isBack) {
|
||||
mToolbar.setNavigationIcon(R.drawable.left_black);
|
||||
mToolbar.setNavigationOnClickListener(view -> finish());
|
||||
}
|
||||
@@ -169,6 +173,7 @@ public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActi
|
||||
((TextView) findViewById(R.id.common_toolBar_title)).setText(title);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 显示右边标题
|
||||
*
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.dahe.mylibrary.base
|
||||
|
||||
/**
|
||||
* @ClassName BaseSingleton
|
||||
* @Author 用户
|
||||
* @Date 2023/12/29 09:49
|
||||
* @Description //要实现单例类,就只需要继承这个 BaseSingleton 即可
|
||||
//P为参数,T为返回值
|
||||
*/
|
||||
abstract class BaseSingleton<in P, out T> {
|
||||
|
||||
@Volatile
|
||||
private var instance: T? = null
|
||||
|
||||
//抽象方法,需要我们在具体的单例子类当中实现此方法
|
||||
protected abstract fun creator(param: P?): T
|
||||
|
||||
fun getInstance(param: P?): T =
|
||||
instance ?: synchronized(this) {
|
||||
instance ?: creator(param).also { instance = it }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
abstract class BaseSingNoParam<out T> {
|
||||
|
||||
@Volatile
|
||||
private var instance: T? = null
|
||||
|
||||
//抽象方法,需要我们在具体的单例子类当中实现此方法
|
||||
protected abstract fun creator(): T
|
||||
|
||||
fun getInstance(): T =
|
||||
instance ?: synchronized(this) {
|
||||
instance ?: creator().also { instance = it }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.dahe.mylibrary.pop
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.Button
|
||||
import com.dahe.mylibrary.R
|
||||
import com.dahe.mylibrary.adapter.GridImageAdapter
|
||||
import com.dahe.mylibrary.utils.SelectPicUtils
|
||||
import com.dahe.mylibrary.utils.ToastUtils
|
||||
import com.dahe.mylibrary.weight.GlideEngine
|
||||
import com.dahe.mylibrary.weight.ImageFileCompressEngine
|
||||
import com.luck.picture.lib.basic.PictureSelectionCameraModel
|
||||
import com.luck.picture.lib.basic.PictureSelectionModel
|
||||
import com.luck.picture.lib.basic.PictureSelector
|
||||
import com.luck.picture.lib.config.SelectMimeType
|
||||
import com.luck.picture.lib.entity.LocalMedia
|
||||
import com.luck.picture.lib.interfaces.OnResultCallbackListener
|
||||
import com.lxj.xpopup.core.BottomPopupView
|
||||
import kotlin.math.min
|
||||
|
||||
/**
|
||||
* @ClassName PopBottomPic
|
||||
* @Author john
|
||||
* @Date 2024/1/31 11:11
|
||||
* @Description TODO
|
||||
*/
|
||||
class PopBottomPic(
|
||||
context: Context,
|
||||
myAdapter: GridImageAdapter,
|
||||
onPicResultListener: onPicResultListener
|
||||
) : BottomPopupView(context) {
|
||||
|
||||
|
||||
private var listener: onPicResultListener
|
||||
var myAdapter: GridImageAdapter
|
||||
|
||||
init {
|
||||
this.listener = onPicResultListener
|
||||
this.myAdapter = myAdapter
|
||||
}
|
||||
|
||||
override fun getImplLayoutId() = R.layout.choice_car_timg
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
var paizhao = findViewById<Button>(R.id.btn_paizhao)
|
||||
var xiangce = findViewById<Button>(R.id.btnXiangce)
|
||||
paizhao.setOnClickListener {
|
||||
|
||||
// 单独拍照
|
||||
val cameraModel: PictureSelectionCameraModel = PictureSelector.create(context)
|
||||
.openCamera(SelectMimeType.TYPE_IMAGE)
|
||||
// .setCameraInterceptListener(getCustomCameraEvent())//自定义相机
|
||||
// .setRecordAudioInterceptListener(MainActivity.MeOnRecordAudioInterceptListener())//录音回调事件
|
||||
// .setCropEngine(ImageFileCropEngine())//裁剪
|
||||
.setCompressEngine(ImageFileCompressEngine())//压缩
|
||||
// .setSelectLimitTipsListener(MainActivity.MeOnSelectLimitTipsListener())//拦截自定义提示
|
||||
// .setAddBitmapWatermarkListener(getAddBitmapWatermarkListener())//给图片添加水印
|
||||
// .setVideoThumbnailListener(getVideoThumbnailEventListener())//处理视频缩略图
|
||||
// .setCustomLoadingListener(getCustomLoadingListener())//自定义loading
|
||||
// .setSandboxFileEngine(MainActivity.MeSandboxFileEngine())//自定义沙盒文件处理
|
||||
// .isOriginalControl(cb_original.isChecked())//是否开启原图功能
|
||||
// .setPermissionDescriptionListener(getPermissionDescriptionListener())//权限说明
|
||||
// .setOutputAudioDir(getSandboxAudioOutputPath())//创建音频自定义输出目录
|
||||
.setSelectedData(myAdapter.data)
|
||||
cameraModel.forResult(object : OnResultCallbackListener<LocalMedia> {
|
||||
override fun onResult(result: ArrayList<LocalMedia>?) {
|
||||
if (listener != null) {
|
||||
result?.let { it1 -> listener.onResult(it1) }
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
dismiss()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
xiangce.setOnClickListener {
|
||||
|
||||
// 进入相册
|
||||
val selectionModel: PictureSelectionModel = PictureSelector.create(context)
|
||||
.openGallery(SelectMimeType.TYPE_IMAGE)
|
||||
.isDisplayCamera(false)//关闭拍照
|
||||
.setImageEngine(GlideEngine.createGlideEngine())
|
||||
.setCompressEngine(ImageFileCompressEngine())
|
||||
.isPreviewImage(true)
|
||||
.isMaxSelectEnabledMask(true)
|
||||
.setMaxSelectNum(6)
|
||||
.isGif(false)
|
||||
.setSelectedData(myAdapter.data)
|
||||
selectionModel.forResult(object : OnResultCallbackListener<LocalMedia> {
|
||||
override fun onResult(result: ArrayList<LocalMedia>) {
|
||||
if (listener != null) {
|
||||
result?.let { it1 -> listener.onResult(it1) }
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
|
||||
override fun onCancel() {
|
||||
dismiss()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private fun openCam() {
|
||||
PictureSelector.create(context)
|
||||
.openCamera(SelectMimeType.TYPE_IMAGE)
|
||||
}
|
||||
|
||||
|
||||
// private listener : onPicResultListener
|
||||
fun interface onPicResultListener {
|
||||
fun onResult(result: java.util.ArrayList<LocalMedia>)
|
||||
}
|
||||
|
||||
// fun setOnPicResultListener(listener: onPicResultListener){
|
||||
// this.listener
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.dahe.mylibrary.utils
|
||||
|
||||
import android.content.Context
|
||||
import com.dahe.mylibrary.base.BaseSingleton
|
||||
import com.dahe.mylibrary.weight.GlideEngine
|
||||
import com.dahe.mylibrary.weight.ImageFileCompressEngine
|
||||
import com.luck.picture.lib.basic.PictureSelectionModel
|
||||
import com.luck.picture.lib.basic.PictureSelector
|
||||
import com.luck.picture.lib.config.SelectMimeType
|
||||
import com.luck.picture.lib.entity.LocalMedia
|
||||
|
||||
/**
|
||||
* @ClassName SelectPicUtils
|
||||
* @Author john
|
||||
* @Date 2024/1/31 10:20
|
||||
* @Description TODO
|
||||
*/
|
||||
class SelectPicUtils private constructor(
|
||||
private val maxNum: Int,
|
||||
private val minNum: Int,
|
||||
private val isDisplayCamera: Boolean
|
||||
) {
|
||||
|
||||
private constructor(builder: Builder) : this(
|
||||
builder.maxNum,
|
||||
builder.minNum,
|
||||
builder.isDisplayCamera
|
||||
)
|
||||
|
||||
class Builder {
|
||||
var maxNum: Int = 6
|
||||
private set
|
||||
var minNum: Int = 1
|
||||
private set
|
||||
var isDisplayCamera: Boolean = true
|
||||
private set
|
||||
|
||||
var listener: onPicResultListener? = null
|
||||
private set
|
||||
|
||||
|
||||
fun setMaxNum(maxNum: Int) = apply {
|
||||
this.maxNum = maxNum
|
||||
}
|
||||
|
||||
fun setMinNum(setMinNum: Int) = apply {
|
||||
this.minNum = setMinNum
|
||||
}
|
||||
|
||||
fun setiIsDisplayCamera(isDisplayCamera: Boolean) = apply {
|
||||
this.isDisplayCamera = isDisplayCamera
|
||||
}
|
||||
|
||||
fun setOnPicResultListener(listener : onPicResultListener)= apply {
|
||||
this.listener = listener
|
||||
}
|
||||
|
||||
fun build() = SelectPicUtils(this)
|
||||
|
||||
}
|
||||
|
||||
fun openCam(){}
|
||||
|
||||
|
||||
|
||||
fun interface onPicResultListener {
|
||||
fun onResult(result: java.util.ArrayList<LocalMedia>)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Computer(maxNum='$maxNum', minNum='$minNum', isDisplayCamera=$isDisplayCamera)"
|
||||
}
|
||||
}
|
||||
@@ -4,18 +4,19 @@ import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
/**
|
||||
* author:luck
|
||||
* project:PictureSelector
|
||||
* package:com.luck.picture.ui
|
||||
* email:893855882@qq.com
|
||||
* data:16/12/31
|
||||
* @author:luck
|
||||
* @date:2016/12/31 2:26 下午
|
||||
* @describe:PictureOnlyCameraFragment
|
||||
*/
|
||||
|
||||
public class FullyGridLayoutManager extends GridLayoutManager {
|
||||
private final int[] mMeasuredDimension = new int[2];
|
||||
|
||||
public FullyGridLayoutManager(Context context, int spanCount) {
|
||||
super(context, spanCount);
|
||||
}
|
||||
@@ -24,10 +25,8 @@ public class FullyGridLayoutManager extends GridLayoutManager {
|
||||
super(context, spanCount, orientation, reverseLayout);
|
||||
}
|
||||
|
||||
private int[] mMeasuredDimension = new int[2];
|
||||
|
||||
@Override
|
||||
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
|
||||
public void onMeasure(@NonNull RecyclerView.Recycler recycler, @NonNull RecyclerView.State state, int widthSpec, int heightSpec) {
|
||||
final int widthMode = View.MeasureSpec.getMode(widthSpec);
|
||||
final int heightMode = View.MeasureSpec.getMode(heightSpec);
|
||||
final int widthSize = View.MeasureSpec.getSize(widthSpec);
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
package com.dahe.mylibrary.weight;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||
import com.dahe.mylibrary.R;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.dahe.mylibrary.weight
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import com.luck.picture.lib.config.PictureMimeType
|
||||
import com.luck.picture.lib.engine.CompressFileEngine
|
||||
import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener
|
||||
import com.luck.picture.lib.utils.DateUtils
|
||||
import top.zibin.luban.Luban
|
||||
import top.zibin.luban.OnNewCompressListener
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* @ClassName ImageFileCompressEngine
|
||||
* @Author john
|
||||
* @Date 2024/1/31 14:50
|
||||
* @Description TODO
|
||||
*/
|
||||
class ImageFileCompressEngine : CompressFileEngine {
|
||||
override fun onStartCompress(
|
||||
context: Context?,
|
||||
source: ArrayList<Uri>?,
|
||||
call: OnKeyValueResultCallbackListener?
|
||||
) {
|
||||
Luban.with(context).load(source).ignoreBy(100).setRenameListener { filePath ->
|
||||
val indexOf = filePath.lastIndexOf(".")
|
||||
val postfix = if (indexOf != -1) filePath.substring(indexOf) else ".jpg"
|
||||
DateUtils.getCreateFileName("CMP_") + postfix
|
||||
}.filter { path ->
|
||||
if (PictureMimeType.isUrlHasImage(path) && !PictureMimeType.isHasHttp(path)) {
|
||||
true
|
||||
} else !PictureMimeType.isUrlHasGif(path)
|
||||
}.setCompressListener(object : OnNewCompressListener {
|
||||
override fun onStart() {}
|
||||
override fun onSuccess(source: String, compressFile: File) {
|
||||
call?.onCallback(source, compressFile.absolutePath)
|
||||
}
|
||||
|
||||
override fun onError(source: String, e: Throwable) {
|
||||
call?.onCallback(source, null)
|
||||
}
|
||||
}).launch()
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 877 KiB |
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
|
||||
<corners android:topLeftRadius="@dimen/dp_8"
|
||||
android:topRightRadius="@dimen/dp_8"
|
||||
android:bottomLeftRadius="@dimen/dp_8"
|
||||
android:bottomRightRadius="@dimen/dp_8"/>
|
||||
<solid android:color="#fff"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape>
|
||||
<size
|
||||
android:width="100dp"
|
||||
android:height="100dp" />
|
||||
<solid android:color="@color/ps_color_light_grey" />
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@drawable/ps_ic_placeholder" />
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/pop_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginLeft="@dimen/dp_12"
|
||||
android:layout_marginRight="@dimen/dp_12"
|
||||
android:layout_marginBottom="@dimen/dp_43"
|
||||
android:background="@drawable/bg_bai"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/dp_10">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_200"
|
||||
android:src="@drawable/car" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/dp_12"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:layout_marginRight="@dimen/dp_12"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="*"
|
||||
android:textColor="@color/red"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_ts"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="请按照如图所示拍摄或选择装卸货照片,装卸货照片包含车牌号、三分之二车身或者装卸货场景。"
|
||||
android:textSize="@dimen/sp_12" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llXc"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnXiangce"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:text="相册"
|
||||
android:textColor="#000"
|
||||
android:textSize="@dimen/sp_15"
|
||||
|
||||
/>
|
||||
|
||||
<View
|
||||
android:id="@+id/v_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
android:layout_marginLeft="@dimen/dp_18"
|
||||
android:layout_marginRight="@dimen/dp_18"
|
||||
android:background="#EEEEEE" />
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_paizhao"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:text="拍照"
|
||||
android:textColor="#000"
|
||||
android:textSize="@dimen/sp_15" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_1"
|
||||
android:layout_marginLeft="@dimen/dp_18"
|
||||
android:layout_marginRight="@dimen/dp_18"
|
||||
android:background="#EEEEEE" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_quxiao"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:text="取消"
|
||||
android:textColor="#ff999999"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textStyle="normal" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -18,7 +18,7 @@
|
||||
android:maxLength="12"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="@dimen/text_17sp"
|
||||
android:textSize="@dimen/sp_17"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -30,7 +30,7 @@
|
||||
android:layout_marginRight="10dp"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="@dimen/text_14sp"
|
||||
android:textSize="@dimen/sp_14"
|
||||
android:visibility="gone" />
|
||||
|
||||
<RelativeLayout
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
android:scrollbars="vertical"
|
||||
android:text="SL会计法士大夫撒离开尽量快点撒发了喀什角SL会计法士大夫撒离开尽量快点撒发了喀什角SL会计法士大夫撒离开尽量快点撒发了喀什角SL会计法士大夫撒离开尽量快点撒发了喀什角动量反馈阿斯利康大家分厘卡士大夫刻录机阿斯利康的飞机流口水克拉斯JFK垃圾啊收到了开发"
|
||||
android:textColor="@color/colorBlack0"
|
||||
android:textSize="@dimen/text_14sp" />
|
||||
android:textSize="@dimen/sp_14" />
|
||||
|
||||
<Button
|
||||
android:id="@id/versionchecklib_version_dialog_commit"
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
android:maxHeight="220dp"
|
||||
android:text=""
|
||||
android:textColor="@color/colorBlack6"
|
||||
android:textSize="@dimen/text_14sp"
|
||||
android:textSize="@dimen/sp_14"
|
||||
></TextView>
|
||||
<Button
|
||||
android:id="@id/versionchecklib_version_dialog_commit"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
android:gravity="center"
|
||||
android:text="@string/take_Photo"
|
||||
android:textColor="@color/colorBlack0"
|
||||
android:textSize="@dimen/text_15sp" />
|
||||
android:textSize="@dimen/sp_15" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
@@ -32,7 +32,7 @@
|
||||
android:gravity="center"
|
||||
android:text="@string/do_select_xiangce"
|
||||
android:textColor="@color/colorBlack0"
|
||||
android:textSize="@dimen/text_15sp" />
|
||||
android:textSize="@dimen/dp_15" />
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
@@ -48,6 +48,6 @@
|
||||
android:gravity="center"
|
||||
android:text="@string/do_cancel"
|
||||
android:textColor="@color/colorBlack0"
|
||||
android:textSize="@dimen/text_15sp" />
|
||||
android:textSize="@dimen/sp_15" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -12,6 +12,7 @@
|
||||
<color name="text_bg_blue">#3C6FC6</color>
|
||||
<color name="mask_color">#88888888</color>
|
||||
<color name="black">#000000</color>
|
||||
<color name="red">#ff0000</color>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +1,436 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resources>
|
||||
<!--字体大小-->
|
||||
<dimen name="text_8sp">8sp</dimen>
|
||||
<dimen name="text_9sp">9sp</dimen>
|
||||
<dimen name="text_10sp">10sp</dimen>
|
||||
<dimen name="text_11sp">11sp</dimen>
|
||||
<dimen name="text_12sp">12sp</dimen>
|
||||
<dimen name="text_13sp">13sp</dimen>
|
||||
<dimen name="text_14sp">14sp</dimen>
|
||||
<dimen name="text_15sp">15sp</dimen>
|
||||
<dimen name="text_16sp">16sp</dimen>
|
||||
<dimen name="text_17sp">17sp</dimen>
|
||||
<dimen name="text_18sp">18sp</dimen>
|
||||
<dimen name="text_19sp">19sp</dimen>
|
||||
<dimen name="text_20sp">20sp</dimen>
|
||||
<dimen name="text_21sp">21sp</dimen>
|
||||
<dimen name="text_22sp">22sp</dimen>
|
||||
<dimen name="text_23sp">23sp</dimen>
|
||||
<dimen name="text_24sp">24sp</dimen>
|
||||
<dimen name="text_26sp">26sp</dimen>
|
||||
<dimen name="text_28sp">28sp</dimen>
|
||||
<dimen name="text_30sp">30sp</dimen>
|
||||
<dimen name="text_40sp">40sp</dimen>
|
||||
<dimen name="fab_size_normal">56dp</dimen>
|
||||
<dimen name="fab_size_mini">40dp</dimen>
|
||||
|
||||
<!-- Your custom size defind by references, can be writted in anywhere, any module, any values/*.xml, for example: -->
|
||||
<dimen name="card_common_margin_left">@dimen/dp_15</dimen>
|
||||
|
||||
<!-- dp and sp values, must be defind in this file! -->
|
||||
<!-- view size,you can add if there is no one -->
|
||||
<dimen name="dp_m_140">-140dp</dimen>
|
||||
<dimen name="dp_m_60">-60dp</dimen>
|
||||
<dimen name="dp_m_36">-36dp</dimen>
|
||||
<dimen name="dp_m_30">-30dp</dimen>
|
||||
<dimen name="dp_m_20">-20dp</dimen>
|
||||
<dimen name="dp_m_12">-12dp</dimen>
|
||||
<dimen name="dp_m_10">-10dp</dimen>
|
||||
<dimen name="dp_m_8">-8dp</dimen>
|
||||
<dimen name="dp_m_5">-5dp</dimen>
|
||||
<dimen name="dp_m_2">-2dp</dimen>
|
||||
<dimen name="dp_m_1">-1dp</dimen>
|
||||
<dimen name="dp_0">0dp</dimen>
|
||||
<dimen name="dp_0_1">0.1dp</dimen>
|
||||
<dimen name="dp_0_5">0.5dp</dimen>
|
||||
<dimen name="dp_1">1dp</dimen>
|
||||
<dimen name="dp_1_5">1.5dp</dimen>
|
||||
<dimen name="dp_2">2dp</dimen>
|
||||
<dimen name="dp_2_5">2.5dp</dimen>
|
||||
<dimen name="dp_3">3dp</dimen>
|
||||
<dimen name="dp_3_5">3.5dp</dimen>
|
||||
<dimen name="dp_4">4dp</dimen>
|
||||
<dimen name="dp_4_5">4.5dp</dimen>
|
||||
<dimen name="dp_5">5dp</dimen>
|
||||
<dimen name="dp_6">6dp</dimen>
|
||||
<dimen name="dp_7">7dp</dimen>
|
||||
<dimen name="dp_7_5">7.5dp</dimen>
|
||||
<dimen name="dp_8">8dp</dimen>
|
||||
<dimen name="dp_9">9dp</dimen>
|
||||
<dimen name="dp_10">10dp</dimen>
|
||||
<dimen name="dp_11">11dp</dimen>
|
||||
<dimen name="dp_12">12dp</dimen>
|
||||
<dimen name="dp_13">13dp</dimen>
|
||||
<dimen name="dp_14">14dp</dimen>
|
||||
<dimen name="dp_15">15dp</dimen>
|
||||
<dimen name="dp_16">16dp</dimen>
|
||||
<dimen name="dp_17">17dp</dimen>
|
||||
<dimen name="dp_18">18dp</dimen>
|
||||
<dimen name="dp_19">19dp</dimen>
|
||||
<dimen name="dp_20">20dp</dimen>
|
||||
<dimen name="dp_21">21dp</dimen>
|
||||
<dimen name="dp_22">22dp</dimen>
|
||||
<dimen name="dp_23">23dp</dimen>
|
||||
<dimen name="dp_24">24dp</dimen>
|
||||
<dimen name="dp_25">25dp</dimen>
|
||||
<dimen name="dp_26">26dp</dimen>
|
||||
<dimen name="dp_27">27dp</dimen>
|
||||
<dimen name="dp_28">28dp</dimen>
|
||||
<dimen name="dp_29">29dp</dimen>
|
||||
<dimen name="dp_30">30dp</dimen>
|
||||
<dimen name="dp_31">31dp</dimen>
|
||||
<dimen name="dp_32">32dp</dimen>
|
||||
<dimen name="dp_33">33dp</dimen>
|
||||
<dimen name="dp_34">34dp</dimen>
|
||||
<dimen name="dp_35">35dp</dimen>
|
||||
<dimen name="dp_36">36dp</dimen>
|
||||
<dimen name="dp_37">37dp</dimen>
|
||||
<dimen name="dp_38">38dp</dimen>
|
||||
<dimen name="dp_39">39dp</dimen>
|
||||
<dimen name="dp_40">40dp</dimen>
|
||||
<dimen name="dp_41">41dp</dimen>
|
||||
<dimen name="dp_42">42dp</dimen>
|
||||
<dimen name="dp_43">43dp</dimen>
|
||||
<dimen name="dp_44">44dp</dimen>
|
||||
<dimen name="dp_45">45dp</dimen>
|
||||
<dimen name="dp_46">46dp</dimen>
|
||||
<dimen name="dp_47">47dp</dimen>
|
||||
<dimen name="dp_48">48dp</dimen>
|
||||
<dimen name="dp_49">49dp</dimen>
|
||||
<dimen name="dp_50">50dp</dimen>
|
||||
<dimen name="dp_51">51dp</dimen>
|
||||
<dimen name="dp_52">52dp</dimen>
|
||||
<dimen name="dp_53">53dp</dimen>
|
||||
<dimen name="dp_54">54dp</dimen>
|
||||
<dimen name="dp_55">55dp</dimen>
|
||||
<dimen name="dp_56">56dp</dimen>
|
||||
<dimen name="dp_57">57dp</dimen>
|
||||
<dimen name="dp_58">58dp</dimen>
|
||||
<dimen name="dp_59">59dp</dimen>
|
||||
<dimen name="dp_60">60dp</dimen>
|
||||
<dimen name="dp_61">61dp</dimen>
|
||||
<dimen name="dp_62">62dp</dimen>
|
||||
<dimen name="dp_63">63dp</dimen>
|
||||
<dimen name="dp_64">64dp</dimen>
|
||||
<dimen name="dp_65">65dp</dimen>
|
||||
<dimen name="dp_66">66dp</dimen>
|
||||
<dimen name="dp_67">67dp</dimen>
|
||||
<dimen name="dp_68">68dp</dimen>
|
||||
<dimen name="dp_69">69dp</dimen>
|
||||
<dimen name="dp_70">70dp</dimen>
|
||||
<dimen name="dp_71">71dp</dimen>
|
||||
<dimen name="dp_72">72dp</dimen>
|
||||
<dimen name="dp_73">73dp</dimen>
|
||||
<dimen name="dp_74">74dp</dimen>
|
||||
<dimen name="dp_75">75dp</dimen>
|
||||
<dimen name="dp_76">76dp</dimen>
|
||||
<dimen name="dp_77">77dp</dimen>
|
||||
<dimen name="dp_78">78dp</dimen>
|
||||
<dimen name="dp_79">79dp</dimen>
|
||||
<dimen name="dp_80">80dp</dimen>
|
||||
<dimen name="dp_81">81dp</dimen>
|
||||
<dimen name="dp_82">82dp</dimen>
|
||||
<dimen name="dp_83">83dp</dimen>
|
||||
<dimen name="dp_84">84dp</dimen>
|
||||
<dimen name="dp_85">85dp</dimen>
|
||||
<dimen name="dp_86">86dp</dimen>
|
||||
<dimen name="dp_87">87dp</dimen>
|
||||
<dimen name="dp_88">88dp</dimen>
|
||||
<dimen name="dp_89">89dp</dimen>
|
||||
<dimen name="dp_90">90dp</dimen>
|
||||
<dimen name="dp_91">91dp</dimen>
|
||||
<dimen name="dp_92">92dp</dimen>
|
||||
<dimen name="dp_93">93dp</dimen>
|
||||
<dimen name="dp_94">94dp</dimen>
|
||||
<dimen name="dp_95">95dp</dimen>
|
||||
<dimen name="dp_96">96dp</dimen>
|
||||
<dimen name="dp_97">97dp</dimen>
|
||||
<dimen name="dp_98">98dp</dimen>
|
||||
<dimen name="dp_99">99dp</dimen>
|
||||
<dimen name="dp_100">100dp</dimen>
|
||||
<dimen name="dp_101">101dp</dimen>
|
||||
<dimen name="dp_102">102dp</dimen>
|
||||
<dimen name="dp_103">103dp</dimen>
|
||||
<dimen name="dp_104">104dp</dimen>
|
||||
<dimen name="dp_104_5">104.5dp</dimen>
|
||||
<dimen name="dp_105">105dp</dimen>
|
||||
<dimen name="dp_106">106dp</dimen>
|
||||
<dimen name="dp_107">107dp</dimen>
|
||||
<dimen name="dp_108">108dp</dimen>
|
||||
<dimen name="dp_109">109dp</dimen>
|
||||
<dimen name="dp_110">110dp</dimen>
|
||||
<dimen name="dp_111">111dp</dimen>
|
||||
<dimen name="dp_112">112dp</dimen>
|
||||
<dimen name="dp_113">113dp</dimen>
|
||||
<dimen name="dp_114">114dp</dimen>
|
||||
<dimen name="dp_115">115dp</dimen>
|
||||
<dimen name="dp_116">116dp</dimen>
|
||||
<dimen name="dp_117">117dp</dimen>
|
||||
<dimen name="dp_118">118dp</dimen>
|
||||
<dimen name="dp_119">119dp</dimen>
|
||||
<dimen name="dp_120">120dp</dimen>
|
||||
<dimen name="dp_121">121dp</dimen>
|
||||
<dimen name="dp_122">122dp</dimen>
|
||||
<dimen name="dp_123">123dp</dimen>
|
||||
<dimen name="dp_124">124dp</dimen>
|
||||
<dimen name="dp_125">125dp</dimen>
|
||||
<dimen name="dp_126">126dp</dimen>
|
||||
<dimen name="dp_127">127dp</dimen>
|
||||
<dimen name="dp_128">128dp</dimen>
|
||||
<dimen name="dp_129">129dp</dimen>
|
||||
<dimen name="dp_130">130dp</dimen>
|
||||
<dimen name="dp_131">131dp</dimen>
|
||||
<dimen name="dp_132">132dp</dimen>
|
||||
<dimen name="dp_133">133dp</dimen>
|
||||
<dimen name="dp_134">134dp</dimen>
|
||||
<dimen name="dp_134_5">134.5dp</dimen>
|
||||
<dimen name="dp_135">135dp</dimen>
|
||||
<dimen name="dp_136">136dp</dimen>
|
||||
<dimen name="dp_137">137dp</dimen>
|
||||
<dimen name="dp_138">138dp</dimen>
|
||||
<dimen name="dp_139">139dp</dimen>
|
||||
<dimen name="dp_140">140dp</dimen>
|
||||
<dimen name="dp_141">141dp</dimen>
|
||||
<dimen name="dp_142">142dp</dimen>
|
||||
<dimen name="dp_143">143dp</dimen>
|
||||
<dimen name="dp_144">144dp</dimen>
|
||||
<dimen name="dp_145">145dp</dimen>
|
||||
<dimen name="dp_146">146dp</dimen>
|
||||
<dimen name="dp_147">147dp</dimen>
|
||||
<dimen name="dp_148">148dp</dimen>
|
||||
<dimen name="dp_149">149dp</dimen>
|
||||
<dimen name="dp_150">150dp</dimen>
|
||||
<dimen name="dp_151">151dp</dimen>
|
||||
<dimen name="dp_152">152dp</dimen>
|
||||
<dimen name="dp_153">153dp</dimen>
|
||||
<dimen name="dp_154">154dp</dimen>
|
||||
<dimen name="dp_155">155dp</dimen>
|
||||
<dimen name="dp_156">156dp</dimen>
|
||||
<dimen name="dp_157">157dp</dimen>
|
||||
<dimen name="dp_158">158dp</dimen>
|
||||
<dimen name="dp_159">159dp</dimen>
|
||||
<dimen name="dp_160">160dp</dimen>
|
||||
<dimen name="dp_161">161dp</dimen>
|
||||
<dimen name="dp_162">162dp</dimen>
|
||||
<dimen name="dp_163">163dp</dimen>
|
||||
<dimen name="dp_164">164dp</dimen>
|
||||
<dimen name="dp_165">165dp</dimen>
|
||||
<dimen name="dp_166">166dp</dimen>
|
||||
<dimen name="dp_167">167dp</dimen>
|
||||
<dimen name="dp_168">168dp</dimen>
|
||||
<dimen name="dp_169">169dp</dimen>
|
||||
<dimen name="dp_170">170dp</dimen>
|
||||
<dimen name="dp_171">171dp</dimen>
|
||||
<dimen name="dp_172">172dp</dimen>
|
||||
<dimen name="dp_173">173dp</dimen>
|
||||
<dimen name="dp_174">174dp</dimen>
|
||||
<dimen name="dp_175">175dp</dimen>
|
||||
<dimen name="dp_176">176dp</dimen>
|
||||
<dimen name="dp_177">177dp</dimen>
|
||||
<dimen name="dp_178">178dp</dimen>
|
||||
<dimen name="dp_179">179dp</dimen>
|
||||
<dimen name="dp_180">180dp</dimen>
|
||||
<dimen name="dp_181">181dp</dimen>
|
||||
<dimen name="dp_182">182dp</dimen>
|
||||
<dimen name="dp_183">183dp</dimen>
|
||||
<dimen name="dp_184">184dp</dimen>
|
||||
<dimen name="dp_185">185dp</dimen>
|
||||
<dimen name="dp_186">186dp</dimen>
|
||||
<dimen name="dp_187">187dp</dimen>
|
||||
<dimen name="dp_188">188dp</dimen>
|
||||
<dimen name="dp_189">189dp</dimen>
|
||||
<dimen name="dp_190">190dp</dimen>
|
||||
<dimen name="dp_191">191dp</dimen>
|
||||
<dimen name="dp_191_25">191.25dp</dimen>
|
||||
<dimen name="dp_192">192dp</dimen>
|
||||
<dimen name="dp_193">193dp</dimen>
|
||||
<dimen name="dp_194">194dp</dimen>
|
||||
<dimen name="dp_195">195dp</dimen>
|
||||
<dimen name="dp_196">196dp</dimen>
|
||||
<dimen name="dp_197">197dp</dimen>
|
||||
<dimen name="dp_198">198dp</dimen>
|
||||
<dimen name="dp_199">199dp</dimen>
|
||||
<dimen name="dp_200">200dp</dimen>
|
||||
<dimen name="dp_201">201dp</dimen>
|
||||
<dimen name="dp_202">202dp</dimen>
|
||||
<dimen name="dp_203">203dp</dimen>
|
||||
<dimen name="dp_204">204dp</dimen>
|
||||
<dimen name="dp_205">205dp</dimen>
|
||||
<dimen name="dp_206">206dp</dimen>
|
||||
<dimen name="dp_207">207dp</dimen>
|
||||
<dimen name="dp_208">208dp</dimen>
|
||||
<dimen name="dp_209">209dp</dimen>
|
||||
<dimen name="dp_210">210dp</dimen>
|
||||
<dimen name="dp_211">211dp</dimen>
|
||||
<dimen name="dp_212">212dp</dimen>
|
||||
<dimen name="dp_213">213dp</dimen>
|
||||
<dimen name="dp_214">214dp</dimen>
|
||||
<dimen name="dp_215">215dp</dimen>
|
||||
<dimen name="dp_216">216dp</dimen>
|
||||
<dimen name="dp_217">217dp</dimen>
|
||||
<dimen name="dp_218">218dp</dimen>
|
||||
<dimen name="dp_219">219dp</dimen>
|
||||
<dimen name="dp_220">220dp</dimen>
|
||||
<dimen name="dp_221">221dp</dimen>
|
||||
<dimen name="dp_222">222dp</dimen>
|
||||
<dimen name="dp_223">223dp</dimen>
|
||||
<dimen name="dp_224">224dp</dimen>
|
||||
<dimen name="dp_225">225dp</dimen>
|
||||
<dimen name="dp_226">226dp</dimen>
|
||||
<dimen name="dp_227">227dp</dimen>
|
||||
<dimen name="dp_228">228dp</dimen>
|
||||
<dimen name="dp_229">229dp</dimen>
|
||||
<dimen name="dp_230">230dp</dimen>
|
||||
<dimen name="dp_231">231dp</dimen>
|
||||
<dimen name="dp_232">232dp</dimen>
|
||||
<dimen name="dp_233">233dp</dimen>
|
||||
<dimen name="dp_234">234dp</dimen>
|
||||
<dimen name="dp_235">235dp</dimen>
|
||||
<dimen name="dp_236">236dp</dimen>
|
||||
<dimen name="dp_237">237dp</dimen>
|
||||
<dimen name="dp_238">238dp</dimen>
|
||||
<dimen name="dp_239">239dp</dimen>
|
||||
<dimen name="dp_240">240dp</dimen>
|
||||
<dimen name="dp_241">241dp</dimen>
|
||||
<dimen name="dp_242">242dp</dimen>
|
||||
<dimen name="dp_243">243dp</dimen>
|
||||
<dimen name="dp_244">244dp</dimen>
|
||||
<dimen name="dp_245">245dp</dimen>
|
||||
<dimen name="dp_246">246dp</dimen>
|
||||
<dimen name="dp_247">247dp</dimen>
|
||||
<dimen name="dp_248">248dp</dimen>
|
||||
<dimen name="dp_249">249dp</dimen>
|
||||
<dimen name="dp_250">250dp</dimen>
|
||||
<dimen name="dp_251">251dp</dimen>
|
||||
<dimen name="dp_252">252dp</dimen>
|
||||
<dimen name="dp_253">253dp</dimen>
|
||||
<dimen name="dp_254">254dp</dimen>
|
||||
<dimen name="dp_255">255dp</dimen>
|
||||
<dimen name="dp_256">256dp</dimen>
|
||||
<dimen name="dp_257">257dp</dimen>
|
||||
<dimen name="dp_258">258dp</dimen>
|
||||
<dimen name="dp_259">259dp</dimen>
|
||||
<dimen name="dp_260">260dp</dimen>
|
||||
<dimen name="dp_261">261dp</dimen>
|
||||
<dimen name="dp_262">262dp</dimen>
|
||||
<dimen name="dp_263">263dp</dimen>
|
||||
<dimen name="dp_264">264dp</dimen>
|
||||
<dimen name="dp_265">265dp</dimen>
|
||||
<dimen name="dp_266">266dp</dimen>
|
||||
<dimen name="dp_267">267dp</dimen>
|
||||
<dimen name="dp_268">268dp</dimen>
|
||||
<dimen name="dp_269">269dp</dimen>
|
||||
<dimen name="dp_270">270dp</dimen>
|
||||
<dimen name="dp_271">271dp</dimen>
|
||||
<dimen name="dp_272">272dp</dimen>
|
||||
<dimen name="dp_273">273dp</dimen>
|
||||
<dimen name="dp_274">274dp</dimen>
|
||||
<dimen name="dp_275">275dp</dimen>
|
||||
<dimen name="dp_276">276dp</dimen>
|
||||
<dimen name="dp_277">277dp</dimen>
|
||||
<dimen name="dp_278">278dp</dimen>
|
||||
<dimen name="dp_279">279dp</dimen>
|
||||
<dimen name="dp_280">280dp</dimen>
|
||||
<dimen name="dp_281">281dp</dimen>
|
||||
<dimen name="dp_282">282dp</dimen>
|
||||
<dimen name="dp_283">283dp</dimen>
|
||||
<dimen name="dp_284">284dp</dimen>
|
||||
<dimen name="dp_285">285dp</dimen>
|
||||
<dimen name="dp_286">286dp</dimen>
|
||||
<dimen name="dp_287">287dp</dimen>
|
||||
<dimen name="dp_288">288dp</dimen>
|
||||
<dimen name="dp_289">289dp</dimen>
|
||||
<dimen name="dp_290">290dp</dimen>
|
||||
<dimen name="dp_291">291dp</dimen>
|
||||
<dimen name="dp_292">292dp</dimen>
|
||||
<dimen name="dp_293">293dp</dimen>
|
||||
<dimen name="dp_294">294dp</dimen>
|
||||
<dimen name="dp_295">295dp</dimen>
|
||||
<dimen name="dp_296">296dp</dimen>
|
||||
<dimen name="dp_297">297dp</dimen>
|
||||
<dimen name="dp_298">298dp</dimen>
|
||||
<dimen name="dp_299">299dp</dimen>
|
||||
<dimen name="dp_300">300dp</dimen>
|
||||
<dimen name="dp_301">301dp</dimen>
|
||||
<dimen name="dp_302">302dp</dimen>
|
||||
<dimen name="dp_303">303dp</dimen>
|
||||
<dimen name="dp_304">304dp</dimen>
|
||||
<dimen name="dp_305">305dp</dimen>
|
||||
<dimen name="dp_306">306dp</dimen>
|
||||
<dimen name="dp_307">307dp</dimen>
|
||||
<dimen name="dp_308">308dp</dimen>
|
||||
<dimen name="dp_309">309dp</dimen>
|
||||
<dimen name="dp_310">310dp</dimen>
|
||||
<dimen name="dp_311">311dp</dimen>
|
||||
<dimen name="dp_312">312dp</dimen>
|
||||
<dimen name="dp_313">313dp</dimen>
|
||||
<dimen name="dp_314">314dp</dimen>
|
||||
<dimen name="dp_315">315dp</dimen>
|
||||
<dimen name="dp_316">316dp</dimen>
|
||||
<dimen name="dp_317">317dp</dimen>
|
||||
<dimen name="dp_318">318dp</dimen>
|
||||
<dimen name="dp_319">319dp</dimen>
|
||||
<dimen name="dp_320">320dp</dimen>
|
||||
<dimen name="dp_321">321dp</dimen>
|
||||
<dimen name="dp_322">322dp</dimen>
|
||||
<dimen name="dp_323">323dp</dimen>
|
||||
<dimen name="dp_324">324dp</dimen>
|
||||
<dimen name="dp_325">325dp</dimen>
|
||||
<dimen name="dp_326">326dp</dimen>
|
||||
<dimen name="dp_327">327dp</dimen>
|
||||
<dimen name="dp_328">328dp</dimen>
|
||||
<dimen name="dp_329">329dp</dimen>
|
||||
<dimen name="dp_330">330dp</dimen>
|
||||
<dimen name="dp_331">331dp</dimen>
|
||||
<dimen name="dp_332">332dp</dimen>
|
||||
<dimen name="dp_333">333dp</dimen>
|
||||
<dimen name="dp_334">334dp</dimen>
|
||||
<dimen name="dp_335">335dp</dimen>
|
||||
<dimen name="dp_336">336dp</dimen>
|
||||
<dimen name="dp_337">337dp</dimen>
|
||||
<dimen name="dp_338">338dp</dimen>
|
||||
<dimen name="dp_339">339dp</dimen>
|
||||
<dimen name="dp_340">340dp</dimen>
|
||||
<dimen name="dp_341">341dp</dimen>
|
||||
<dimen name="dp_342">342dp</dimen>
|
||||
<dimen name="dp_343">343dp</dimen>
|
||||
<dimen name="dp_344">344dp</dimen>
|
||||
<dimen name="dp_345">345dp</dimen>
|
||||
<dimen name="dp_346">346dp</dimen>
|
||||
<dimen name="dp_347">347dp</dimen>
|
||||
<dimen name="dp_348">348dp</dimen>
|
||||
<dimen name="dp_349">349dp</dimen>
|
||||
<dimen name="dp_350">350dp</dimen>
|
||||
<dimen name="dp_351">351dp</dimen>
|
||||
<dimen name="dp_352">352dp</dimen>
|
||||
<dimen name="dp_353">353dp</dimen>
|
||||
<dimen name="dp_354">354dp</dimen>
|
||||
<dimen name="dp_355">355dp</dimen>
|
||||
<dimen name="dp_356">356dp</dimen>
|
||||
<dimen name="dp_357">357dp</dimen>
|
||||
<dimen name="dp_358">358dp</dimen>
|
||||
<dimen name="dp_359">359dp</dimen>
|
||||
<dimen name="dp_360">360dp</dimen>
|
||||
<dimen name="dp_365">365dp</dimen>
|
||||
<dimen name="dp_370">370dp</dimen>
|
||||
<dimen name="dp_400">400dp</dimen>
|
||||
<dimen name="dp_410">410dp</dimen>
|
||||
<dimen name="dp_422">422dp</dimen>
|
||||
<dimen name="dp_472">472dp</dimen>
|
||||
<dimen name="dp_500">500dp</dimen>
|
||||
<dimen name="dp_600">600dp</dimen>
|
||||
<dimen name="dp_640">640dp</dimen>
|
||||
<dimen name="dp_720">720dp</dimen>
|
||||
|
||||
<!-- font size,you can add if there is no one -->
|
||||
<dimen name="sp_6">6sp</dimen>
|
||||
<dimen name="sp_7">7sp</dimen>
|
||||
<dimen name="sp_8">8sp</dimen>
|
||||
<dimen name="sp_9">9sp</dimen>
|
||||
<dimen name="sp_10">10sp</dimen>
|
||||
<dimen name="sp_11">11sp</dimen>
|
||||
<dimen name="sp_12">12sp</dimen>
|
||||
<dimen name="sp_13">13sp</dimen>
|
||||
<dimen name="sp_14">14sp</dimen>
|
||||
<dimen name="sp_15">15sp</dimen>
|
||||
<dimen name="sp_16">16sp</dimen>
|
||||
<dimen name="sp_17">17sp</dimen>
|
||||
<dimen name="sp_18">18sp</dimen>
|
||||
<dimen name="sp_19">19sp</dimen>
|
||||
<dimen name="sp_20">20sp</dimen>
|
||||
<dimen name="sp_21">21sp</dimen>
|
||||
<dimen name="sp_22">22sp</dimen>
|
||||
<dimen name="sp_23">23sp</dimen>
|
||||
<dimen name="sp_24">24sp</dimen>
|
||||
<dimen name="sp_25">25sp</dimen>
|
||||
<dimen name="sp_28">28sp</dimen>
|
||||
<dimen name="sp_30">30sp</dimen>
|
||||
<dimen name="sp_32">32sp</dimen>
|
||||
<dimen name="sp_34">34sp</dimen>
|
||||
<dimen name="sp_36">36sp</dimen>
|
||||
<dimen name="sp_38">38sp</dimen>
|
||||
<dimen name="sp_40">40sp</dimen>
|
||||
<dimen name="sp_42">42sp</dimen>
|
||||
<dimen name="sp_48">48sp</dimen>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user