Gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}dependencies {
//github 依赖地址
implementation 'com.github.BenShanYang:Utils:1.2.2'
//码云依赖地址
implementation 'com.gitee.lingluandeerha:Utils:1.2.2'
}OnItemClickListener<T> //自定义RecyclerView的item点击回调事件
OnItemLongClickListener<T> //自定RecyclerView的item长点击回调事件
OnPageChangedListener //ViewPager.OnPageChangeListener的实现类,根据需求实现对应的方法,避免实现过多方法
TextWatchListener //TextWatcher的实现类,根据需求实现对应的方法,避免实现过多方法------------------------Application注册------------------------
public class UtilsApp extends Application {
public static ActivityStackManager manager;
@Override
public void onCreate() {
super.onCreate();
manager = ActivityStackManager.getInstance();
//manager.clearStack();//清空activity栈
//manager.topActivity();//获取Activity栈顶activity
manager.setActivityLifecycle(new ActivityLifecycle(){
@Override
public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(@NonNull Activity activity) {
}
@Override
public void onActivityResumed(@NonNull Activity activity) {
}
@Override
public void onActivityPaused(@NonNull Activity activity) {
}
@Override
public void onActivityStopped(@NonNull Activity activity) {
}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {
}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
}
});
registerActivityLifecycleCallbacks(manager);
}
}
------------------------首页按两次返回键推出程序------------------------
// 退出时间
private long currentBackPressedTime = 0;
// 退出间隔
private static final int BACK_PRESSED_INTERVAL = 2000;
@Override
public void onBackPressed() {
// 判断时间间隔
if (System.currentTimeMillis()- currentBackPressedTime > BACK_PRESSED_INTERVAL) {
currentBackPressedTime = System.currentTimeMillis();
Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
} else {
// 退出
UtilsApp.manager.clearStack();//清空activity栈
}
}
------------------------退出登录1------------------------
Intent intent = new Intent(this,MainActivity.class);
Bundle bundle = new Bundle();
bundle.putBoolean("onlyAlive",true);
intent.putExtras(bundle);
startActivity(intent);
------------------------退出登录2------------------------
Intent intent = new Intent(this,MainActivity.class);
intent.putExtra("onlyAlive",true);
startActivity(intent);FileDownloadManager downloadManager = new FileDownloadManager(activity,"url","name"){
@Override
public void onPrepare() {
//下载准备
}
@Override
public void onSuccess(String path) {
//下载完成
}
@Override
public void onFailed(Throwable throwable) {
//下载失败
}
};
downloadManager.download();FingerprintHelper.Builder builder = new FingerprintHelper.Builder(activity)
.callback(new FingerprintCallback() {
@Override
public void onHmUnavailable() {
//硬件不支持
}
@Override
public void onNoneEnrolled() {
//未添加指纹
}
@Override
public void fingerprintOk() {
//设备支持指纹并且已经录入指纹并且设备也打开了指纹识别
}
@Override
public void onSuccee() {
//指纹识别成功
}
@Override
public void onFailed(int errorCode, CharSequence errString) {
//指纹识别失败
if (errorCode == FingerprintCallback.DISABLED) {
//处于指纹禁用期
} else if (errorCode == FingerprintCallback.VALIDATION_FAILED) {
//多次验证指纹失败被系统禁用指纹一段时间
} else if (errorCode == FingerprintCallback.FINGERPRINT_READER_DISABLED) {
//尝试次数过多,指纹传感器已停用
} else if (errorCode == FingerprintCallback.FINGERPRINT_CANCEL) {
//指纹操作已取消
} else if (errorCode == FingerprintCallback.FINGERPRINT_FAILED) {
//没有调用系统的回调函数
}
}
@Override
public void onCancel() {
//取消指纹识别
}
});
builder.build();public class CustomDialog extends BaseDialog {
public CustomDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.dialog_dialog);
//点击弹窗区域外弹窗消失
setCanceledOnTouchOutside(true);
}
@Override
public int getGravity() {
//设置显示内容的居中方式。例:Gravity.CENTER、Gravity.BOTTOM 、Gravity.CENTER_HORIZONTAL
return Gravity.CENTER;
}
}public class MainActivity extends BaseParentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}public abstract class BaseParentActivity extends FragmentActivity {
public Activity activity;
private Toast toast = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = BaseParentActivity.this;
}
/**
* 设置 app 不随着系统字体的调整而变化
*/
@Override
public Resources getResources() {
Resources res = super.getResources();
if (res.getConfiguration().fontScale != 1) {//非默认值
Configuration newConfig = new Configuration();
newConfig.setToDefaults();//设置默认
res.updateConfiguration(newConfig, res.getDisplayMetrics());
}
return res;
}
/**
* 获取资源文件中的颜色
*
* @param id 颜色的资源id
* @return 返回颜色的色值
*/
@ColorInt
public int getResColor(@ColorRes int id) {
try {
return getResources().getColor(id);
} catch (Exception e) {
return Color.TRANSPARENT;
}
}
/**
* 获取资源文件图片或者drawable
*
* @param id 资源文件的id
* @return 返回的资源文件
*/
public Drawable getResDrawable(@DrawableRes int id) {
try {
return getResources().getDrawable(id);
} catch (Exception e) {
return new ColorDrawable(Color.TRANSPARENT);
}
}
/**
* 获取布局文件
*
* @param resource 布局id
* @return 返回的布局view
*/
public View getLayout(@LayoutRes int resource) {
return LayoutInflater.from(activity).inflate(resource, null);
}
/**
* 获取布局文件
*
* @param resource 布局id
* @param root 布局要加入的父布局ViewGroup
* @return 返回的布局view
*/
public View getLayout(@LayoutRes int resource, @Nullable ViewGroup root) {
return LayoutInflater.from(activity).inflate(resource, root);
}
/**
* 获取布局文件
*
* @param resource 布局id
* @param root 布局要加入的父布局ViewGroup
* @param attachToRoot
* @return 返回的布局view
*/
public View getLayout(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) {
return LayoutInflater.from(activity).inflate(resource, root, attachToRoot);
}
/**
* 弹出提示
*
* @param message 提示的信息
*/
public void showToast(CharSequence message) {
if (message != null) {
if (toast == null) {
toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM, 0, dp2px(this, 100));
}
toast.setText(message);
toast.show();
}
}
/**
* 弹出提示
*
* @param message 提示的信息
* @param gravity 位于屏幕中的位置。例: Gravity.BOTTOM
*/
public void showToast(CharSequence message, int gravity) {
if (message != null) {
if (toast == null) {
toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
toast.setGravity(gravity, 0, 0);
}
toast.setText(message);
toast.show();
}
}
/**
* 弹出提示
*
* @param message 提示的信息
* @param gravity 位于屏幕中的位置。例: Gravity.BOTTOM
* @param xOffset x轴上的偏移量
* @param yOffset y轴上的偏移量
*/
public void showToast(CharSequence message, int gravity, int xOffset, int yOffset) {
if (message != null) {
if (toast == null) {
toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
toast.setGravity(gravity, xOffset, yOffset);
}
toast.setText(message);
toast.show();
}
}
/**
* 弹出提示
*
* @param text 提示的文字
*/
public void showSnackbar(CharSequence text) {
Snackbar.make(findViewById(android.R.id.content), text, Snackbar.LENGTH_SHORT).show();
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
*/
public void toActivity(Class<?> clazz) {
startActivity(new Intent(this, clazz));
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, int requestCode) {
startActivityForResult(new Intent(this, clazz), requestCode);
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, long requestCode) {
Intent intent = new Intent();
intent.setClass(this, clazz);
intent.putExtra("requestCode", requestCode);
startActivity(intent);
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param bundle 数据bundle
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, Bundle bundle, long requestCode) {
Intent intent = new Intent();
intent.setClass(this, clazz);
intent.putExtra("requestCode", requestCode);
intent.putExtras(bundle);
startActivity(intent);
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param bundle 携带的数据源
*/
public void toActivity(Class<?> clazz, Bundle bundle) {
Intent intent = new Intent(this, clazz);
intent.putExtras(bundle);
startActivity(intent);
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param bundle 携带的数据源
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, Bundle bundle, int requestCode) {
Intent intent = new Intent(this, clazz);
intent.putExtra("requestCode", requestCode);
intent.putExtras(bundle);
startActivityForResult(intent, requestCode);
}
/**
* 获取携带的数据
*
* @return
*/
public Bundle getBundle() {
Intent intent = getIntent();
Bundle bundle = null;
if (intent != null) {
bundle = intent.getExtras();
}
return bundle;
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*
* @param context
* @param dpValue
* @return
*/
public int dp2px(float dpValue) {
final float scale = getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 将sp值转换为px值,保证文字大小不变
*
* @param context
* @param spValue
* @return
*/
public int sp2px(float spValue) {
final float fontScale = getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
/**
* 获取请求码
*
* @return
*/
public long getRequestCode() {
Intent intent = getIntent();
if (intent != null) {
return intent.getLongExtra("requestCode", -1L);
}
return -1L;
}
}public class CustomFragment extends BaseParentFragment {
@Override
public void initView(@NonNull View view, @Nullable Bundle savedInstanceState) {
}
@Override
public void setListener(@NonNull View view, @Nullable Bundle savedInstanceState) {
}
}public abstract class BaseParentFragment extends Fragment {
public Context context;
public Activity activity;
private Toast toast = null;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getContext();
activity = getActivity();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView(view, savedInstanceState);
setListener(view, savedInstanceState);
}
public abstract void initView(@NonNull View view, @Nullable Bundle savedInstanceState);
public abstract void setListener(@NonNull View view, @Nullable Bundle savedInstanceState);
/**
* 获取资源文件中的颜色
*
* @param id 颜色的资源id
* @return 返回颜色的色值
*/
@ColorInt
public int getResColor(@ColorRes int id) {
try {
return getResources().getColor(id);
} catch (Exception e) {
return Color.TRANSPARENT;
}
}
/**
* 获取资源文件图片或者drawable
*
* @param id 资源文件的id
* @return 返回的资源文件
*/
public Drawable getResDrawable(@DrawableRes int id) {
try {
return getResources().getDrawable(id);
} catch (Exception e) {
return new ColorDrawable(Color.TRANSPARENT);
}
}
/**
* 获取布局文件
*
* @param resource 布局id
* @return 返回的布局view
*/
public View getLayout(@LayoutRes int resource) {
return LayoutInflater.from(activity).inflate(resource, null);
}
/**
* 获取布局文件
*
* @param resource 布局id
* @param root 布局要加入的父布局ViewGroup
* @return 返回的布局view
*/
public View getLayout(@LayoutRes int resource, @Nullable ViewGroup root) {
return LayoutInflater.from(activity).inflate(resource, root);
}
/**
* 获取布局文件
*
* @param resource 布局id
* @param root 布局要加入的父布局ViewGroup
* @param attachToRoot
* @return 返回的布局view
*/
public View getLayout(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) {
return LayoutInflater.from(activity).inflate(resource, root, attachToRoot);
}
/**
* 弹出提示
*
* @param message 提示的信息
*/
public void showToast(CharSequence message) {
if (message != null) {
if (toast == null) {
toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM, 0, dp2px(context, 100));
}
toast.setText(message);
toast.show();
}
}
/**
* 弹出提示
*
* @param message 提示的信息
* @param gravity 位于屏幕中的位置。例: Gravity.BOTTOM
*/
public void showToast(CharSequence message, int gravity) {
if (message != null) {
if (toast == null) {
toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(gravity, 0, 0);
}
toast.setText(message);
toast.show();
}
}
/**
* 弹出提示
*
* @param message 提示的信息
* @param gravity 位于屏幕中的位置。例: Gravity.BOTTOM
* @param xOffset x轴上的偏移量
* @param yOffset y轴上的偏移量
*/
public void showToast(CharSequence message, int gravity, int xOffset, int yOffset) {
if (message != null) {
if (toast == null) {
toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(gravity, xOffset, yOffset);
}
toast.setText(message);
toast.show();
}
}
/**
* 弹出提示
*
* @param text 提示的文字
*/
public void showSnackbar(CharSequence text) {
View view = getView();
if (view == null && activity != null) {
view = activity.findViewById(android.R.id.content);
}
if (view != null) {
Snackbar.make(view, text, Snackbar.LENGTH_SHORT).show();
}
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*
* @param context
* @param dpValue
* @return
*/
public int dp2px(float dpValue) {
final float scale = getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 将sp值转换为px值,保证文字大小不变
*
* @param context
* @param spValue
* @return
*/
public int sp2px(float spValue) {
final float fontScale = getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
*/
public void toActivity(Class<?> clazz) {
if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
activity.startActivity(new Intent(activity, clazz));
}
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param bundle 携带的数据源
*/
public void toActivity(Class<?> clazz, Bundle bundle) {
if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
Intent intent = new Intent(activity, clazz);
intent.putExtras(bundle);
activity.startActivity(intent);
}
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, int requestCode) {
if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
activity.startActivityForResult(new Intent(activity, clazz), requestCode);
}
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, long requestCode) {
if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
Intent intent = new Intent();
intent.setClass(activity, clazz);
intent.putExtra("requestCode", requestCode);
activity.startActivity(intent);
}
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param bundle 数据bundle
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, Bundle bundle, long requestCode) {
if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
Intent intent = new Intent();
intent.setClass(activity, clazz);
intent.putExtra("requestCode", requestCode);
intent.putExtras(bundle);
activity.startActivity(intent);
}
}
/**
* 打开指定Activity
*
* @param clazz 指定Activity
* @param bundle 携带的数据源
* @param requestCode 请求码
*/
public void toActivity(Class<?> clazz, Bundle bundle, int requestCode) {
if (activity != null && !activity.isDestroyed() && !activity.isFinishing()) {
Intent intent = new Intent(activity, clazz);
intent.putExtras(bundle);
activity.startActivityForResult(intent, requestCode);
}
}
}//需要申请的权限数组
String[] permissionArr = PermissionUtil.STORAGE_PERMISSIONS;
if (PermissionUtil.check(context, permissionArr)) {
//有权限
importData();
} else {
//没有存储权限 去申请权限 Activity申请或Fragment申请
//Activity 申请权限方式
PermissionUtil.request(Activity.this, PermissionUtil.REQUEST_CODE, permissionArr);
//Fragment 申请权限方式
PermissionUtil.request(Fragment.this, PermissionUtil.REQUEST_CODE, permissionArr);
}
//在Activity或Fragment中实现下面方法
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//权限申请回调
if (requestCode == Constant.PERMISSION_REQUEST_EXPORT) {
//导出数据
if (PermissionUtil.grantResults(grantResults)) {
//已获取权限
} else {
//权限被拒绝 开启系统权限设置页面
PermissionUtil.openSetting(activity);
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}| 方法名 | 描述 | 参数描述 |
|---|---|---|
| check(@NonNull Context context, @NonNull String permission) | 检查权限 | context-上下文 permission-权限 |
| check(@NonNull Context context, @NonNull String... permissions) | 批量检查权限 | context-上下文 permissions-权限数组 |
| denied(@NonNull Context context, @NonNull String... permissions) | 获取拒绝的权限集合 | context-上下文 permissions-被检查的权限数组 |
| request(final @NonNull Activity activity, final @NonNull String... permissions) | Activity中请求权限 | activity-Activity的引用 permissions-被检查的权限数组 |
| request(final @NonNull Activity activity, final @IntRange(from = 0) int requestCode, final @NonNull String... permissions) | Activity中请求权限 | activity-Activity的引用 requestCode-请求码 permissions-被检查的权限数组 |
| request(final @NonNull Fragment fragment, final @NonNull String... permissions) | Fragment中请求权限 | fragment-Fragment页面引用 permissions-被检查的权限数组 |
| request(final @NonNull Fragment fragment, final @IntRange(from = 0) int requestCode, final @NonNull String... permissions) | Fragment页面引用 | fragment-Fragment页面引用 requestCode-请求码 permissions-被检查的权限数组 |
| grantResults(@NonNull int[] grantResults) | 权限申请后,判断是否都授予权限了 | grantResults-权限申请结果数组 |
| isOPenGPS(final Context context) | 判断GPS是否开启 | context-上下文 |
| openGPSSetting(Activity activity) | 打开gps设置页面 | Activity-上下文 |
| openSetting(Activity activity, String packageName) | 打开权限设置页面 | activity-Activity上下文 packageName-包名 可传入BuildConfig.APPLICATION_ID |
| gotoOPPOPermission(Context context, String packageName) | 跳转到oppo的权限管理页面 | context-上下文 packageName-包名 可传入BuildConfig.APPLICATION_ID |
| gotoVIVOPermission(Context context) | 跳转到vivo的权限管理页面 | context-上下文 |
| gotoMiuiPermission(Context context) | 跳转到miui的权限管理页面 | context-上下文 |
| gotoMeizuPermission(Context context, String packageName) | 跳转到魅族的权限管理系统 | context-上下文 packageName-包名 可传入BuildConfig.APPLICATION_ID |
| gotoHuaweiPermission(Context context) | 华为的权限管理页面 | context-上下文 |
| getAppDetailSettingIntent(Context context) | 开启安卓权限系统设置页面 | context-上下文 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| isEmpty(CharSequence str) | 判断字符串是否为空 | str-输入的内容 |
| isEmpty(CharSequence str, boolean isTrim) | 判断字符串是否为空 | str-字符串 isTrim-是否将前后空格也算做内容 |
| getText(TextView textView) | 获取TextView或EditText的控件内容 | textView-传入TextView或EditText控件 |
| setText(TextView textView, CharSequence text) | 为文字控件TextView设置文字,已判断TextView是否为null | text-文字显示控件 text-文字内容 |
| setText(@NonNull TextView textView, CharSequence text, float thickness) | 设置字体粗细 | textView-显示文字的控件 text-要显示的文字 thickness-文字的粗细程度,建议0.8f |
| setText(@NonNull TextView textView, CharSequence text, final float thickness, @ColorInt final int color) | 设置字体粗细 | textView-显示文字的控件 text-要显示的文字 thickness-文字的粗细程度 color-文字的颜色 |
| equals(CharSequence a, CharSequence b) | 判断两个字符串是否相等 | a-字符串a b-字符串b |
| length(CharSequence str) | 获取字符串的长度 | str-输入的字符串 |
| setDrawable(TextView textView, CharSequence charSequence, int resId, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView charSequence-设置的文字 resId-图片的资源id gravity-位置 |
| setDrawable(TextView textView, CharSequence charSequence, int resId, int drawablePadding, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView charSequence-设置的文字 resId-图片的资源id drawablePadding-文字和Icon的距离 gravity-位置 |
| setDrawable(TextView textView, CharSequence charSequence, Drawable imgDrawable, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView charSequence-设置的文字 imgDrawable-图片 gravity-位置 |
| setDrawable(TextView textView, CharSequence charSequence, Drawable imgDrawable, int drawablePadding, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView charSequence-设置的文字 imgDrawable-图片 drawablePadding-文字和Icon的距离 gravity-位置 |
| setDrawable(TextView textView, int resId, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView resId-图片的资源id gravity-位置 |
| setDrawable(TextView textView, int resId, int drawablePadding, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView resId-图片的资源id drawablePadding-图片和文字的间距 gravity-位置 |
| setDrawable(TextView textView, Drawable imgDrawable, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView imgDrawable-图片 gravity-位置 |
| setDrawable(TextView textView, Drawable imgDrawable, int drawablePadding, @Gravity int gravity) | 为TextView设置Drawable图片 | textView-文字控件TextView imgDrawable-图片 drawablePadding-图片和文字的间距 gravity-位置 |
| setDrawable(TextView textView, int drawablePadding, Drawable leftDrawable, Drawable topDrawable, Drawable rightDrawable, Drawable bottomDrawable) | 为TextView设置Drawable图片 | textView-文字控件TextView drawablePadding-图片和文字的间距 leftDrawable-左图片 topDrawable-上图片 rightDrawable-右图片 bottomDrawable-下图片 |
| setDrawable(TextView textView, CharSequence charSequence, int drawablePadding, Drawable leftDrawable, Drawable topDrawable, Drawable rightDrawable, Drawable bottomDrawable) | 为TextView设置Drawable图片 | textView-文字控件TextView charSequence-文字内容 drawablePadding-图片和文字的间距 leftDrawable-左图片 topDrawable-上图片 rightDrawable-右图片 bottomDrawable-下图片 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| isInstalled(Context context, String packageName) | 判断是否安装某个App | context-上下文 packageName-包名 |
| isInstalledQQ(Context context) | 是否安装了QQ | context-上下文 |
| isInstalledWeChat(Context context) | 是否安装了微信 | context-上下文 |
| isInstalledBlog(Context context) | 是否安装了新浪微博 | context-上下文 |
| getAppName(Context context) | 获取应用程序名称 | context-上下文 |
| getVersionName(Context context) | 获取应用程序版本名称信息 | context-上下文 |
| getVersionCode(Context context) | 获取应用程序版本名称信息 | context-上下文 |
| getPackageName(Context context) | 获取应用程序版本名称信息 | context-上下文 |
| getBitmap(Context context) | 获取图标 bitmap | context-上下文 |
| getDrawable(Context context) | 获取图标 drawable | context-上下文 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getTotalCacheSize(Context context) | 获取缓存大小 | context-上下文 |
| clearAllCache(Context context) | 清除缓存 | context-上下文 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getClipboardContent(Context context) | 获取剪切板的内容 | context-上下文 |
| copy(Context context, CharSequence str) | 复制文字 | context-上下文 text-要复制的内容 |
| copy(Context context, CharSequence label, CharSequence str) | 复制文字 | context-上下文 label-剪切板数据的用户可见标签 text-要复制的内容 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| formatTimeStamp(Long timeStamp, String template) | 通过时间戳获取格式化后的时间串 | timeStamp-时间戳(毫秒) template-格式化模板。例如: yyyy-MM-dd HH:mm:ss |
| stringDateToTimeStamp(String strDate, String template) | 将时间的字符串转换成时毫秒时间戳 | strDate-时间的字符串 template-格式化模板,需要和时间字符串的格式匹配。例如: yyyy-MM-dd HH:mm:ss |
| formatTimeCalendar(@NonNull Calendar calendar, String template) | 通过Calendar获取格式化后的时间串 | calendar-Calendar时间 template-格式化模板。例如: yyyy-MM-dd HH:mm:ss |
| formatTimeDate(@NonNull Date date, String template) | 通过Date获取格式化后的时间串 | date-Date时间 template-格式化模板。例如: yyyy-MM-dd HH:mm:ss |
| stringDateToCalendar(String strDate, String template) | 将字符串时间转换为Calendar | strDate-时间字符串 template-时间模板 |
| stringDateToDate(String strDate, String template) | 将字符串时间转换为Date | strDate-时间字符串 template-时间模板 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| dp2px(Context context, float dpValue) | 根据手机的分辨率从 dp 的单位 转成为 px(像素) | context-上下文 dpValue-要转换的dp值 |
| px2dp(Context context, float pxValue) | 将px转换为与之相等的dp | context-上下文 pxValue-要转换的px值 |
| px2sp(Context context, float pxValue) | 将px值转换为sp值 | context-上下文 pxValue-要转换的px值 |
| sp2px(Context context, float spValue) | 将sp值转换为px值 | context-上下文 spValue-要转换的sp值 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getStatusBarHeight(Context context) | 获取状态栏高度 | context-上下文 |
| setFullScreen(Activity activity) | 设置全屏 | activity |
| cancelFullScreen(Activity activity) | 取消全屏 | activity |
| isFullScreen(Activity activity) | 判断是否全屏 | activity |
| getDisplayMetrics(Activity activity) | 获得设备屏幕密度 | activity |
| getScreenWidth(Context context) | 获得屏幕宽度 | context-上下文 |
| getScreenHeight(Context context) | 获得屏幕高度 | context-上下文 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| checkEmail(CharSequence email) | 验证Email | email-email地址 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| validate(String idCardNumber) | 身份证号码校验 | idCardNumber-需要验证的身份证号码 |
| getErrorInfo() | 获取错误信息 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| showKeyboard(EditText editText) | 显示软键盘 | editText-需要显示软键盘的输入框 |
| showKeyboard(EditText editText, boolean isDelay) | 延时显示软键盘 | editText-需要显示软键盘的输入框 isDelay-是否需要延时时间 |
| showKeyboard(final EditText editText, int delay) | 延时显示软键盘 | editText-需要显示软键盘的输入框 delay-延时时间,毫秒 |
| hideKeyboard(final View view) | 隐藏软键盘 | view-当前页面上任意一个可用的view |
| isKeyboardVisible(Activity activity) | 软键盘是否显示 | activity |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| v(String msg) | 设置Verbose日志 | msg-日志信息 |
| v(String tag, String msg) | 设置Verbose日志 | tag-日志标签 msg-日志信息 |
| d(String msg) | 设置Debug日志 | msg-日志信息 |
| d(String tag, String msg) | 设置Debug日志 | tag-日志标签 msg-日志信息 |
| i(String msg) | 设置Info日志 | msg-日志信息 |
| i(String tag, String msg) | 设置Info日志 | tag-日志标签 msg-日志信息 |
| w(String msg) | 设置Warn日志 | msg-日志信息 |
| w(String tag, String msg) | 设置Warn日志 | tag-日志标签 msg-日志信息 |
| e(String msg) | 设置Error日志 | msg-日志信息 |
| e(String tag, String msg) | 设置Error日志 | tag-日志标签 msg-日志信息 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getActivityMetaData(Activity activity, String name) | 获取Manifest中Activity标签下的元素的值 | activity-Activity的上下文 name-meta-data的name |
| getApplicationMetaData(Context context, String name) | 获取Manifest中Application标签下的元素的值 | context-Application的上下文 name-的name |
| getServiceMetaData(Context context, Class<?> clazz, String name) | 获取Manifest中Service标签下的元素的值 | context-Serviece的上下文 clazz-对应的Service类 name-的name |
| getReceiverMetaData(Context context, Class<?> clazz, String name) | 获取Manifest中Receiver标签下的元素的值 | context-Receiver的上下文 clazz-对应的Receiver类 name-的name |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| add(double v1, double v2) | 提供精确的加法运算 | v1-被加数 v2-加数 |
| add(String v1, String v2) | 提供精确的加法运算 | v1-被加数 v2-加数 |
| add(String v1, String v2, int scale) | 提供精确的加法运算 | v1-被加数 v2-加数 scale-保留scale位小数 |
| substract(double v1, double v2) | 提供精确的减法运算 | v1-被减数 v2-减数 |
| substract(String v1, String v2) | 提供精确的减法运算 | v1-被减数 v2-减数 |
| substract(String v1, String v2, int scale) | 提供精确的减法运算 | v1-被减数 v2-减数 scale-保留scale位小数 |
| multiply(double v1, double v2) | 提供精确的乘法运算 | v1-被乘数 v2-乘数 |
| multiply(double v1, double v2, int scale) | 提供精确的乘法运算 | v1-被乘数 v2-乘数 scale-保留scale位小数 |
| multiply(String v1, String v2, int scale) | 提供精确的乘法运算 | v1-被乘数 v2-乘数 scale-保留scale位小数 |
| divide(double v1, double v2) | 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到小数点以后10位,以后的数字四舍五入。 | v1-被除数 v2-除数 |
| divide(double v1, double v2, int scale) | 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。 | v1-被除数 v2-除数 scale-表示需要精确到小数点以后几位 |
| divide(String v1, String v2, int scale) | 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入 | v1-被除数 v2-除数 scale-表示需要精确到小数点以后几位 |
| round(double v, int scale) | 提供精确的小数位四舍五入处理 | v-需要四舍五入的数字 scale-小数点后保留几位 |
| round(String v, int scale) | 提供精确的小数位四舍五入处理 | v-需要四舍五入的数字 scale-小数点后保留几位 |
| round(double v, int scale, int round) | 提供精确的小数位获取 | v-需要处理的数字 scale-小数点后保留几位 round:BigDecimal.ROUND_DOWN - 直接删除多余的小数位,如2.35变成2.3 BigDecimal.ROUND_UP - 进位处理,如2.35变成2.4 BigDecimal.ROUND_HALF_UP - 四舍五入,如2.35变成2.4 BigDecimal.ROUND_HALF_DOWN - 四舍五入,如2.35变成2.3 |
| compareBigDecimal(String amount, double compare) | 比较大小 | amount-输入的数值 compare-被比较的数字 |
| format(double number) | 将数值保留两位小数 | number-输入的数值 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getNetworkType(Context context) | 获取网络类型 | context-上下文 |
| getNetworkTypeName(Context context) | 获取网络名称 | context-上下文 |
| isConnected(Context context) | 网络是否连接 | context-上下文 |
| isNetworkAvailable(Context context) | 网络可用性 | context-上下文 |
| isWiFi(Context context) | 是否是wifi | context-上下文 |
| openNetSetting(Activity activity) | 打开网络设置界面 | activity-上下文 |
| setWifiEnabled(Context context, boolean enabled) | 设置wifi状态 | context-上下文 enabled-设置wifi状态 |
| getWifiScanResults(Context context) | 获取wifi列表 | context-上下文 |
| getScanResultsByBSSID(Context context, String bssid) | 过滤扫描结果 | context-上下文 bssid-访问点的地址 |
| getWifiConnectionInfo(Context context) | 获取wifi连接信息 | context-上下文 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| isMobileNO(String mobileNums) | 判断字符串是否符合手机号码格式 | mobileNums-待检测的手机号字符串 |
| callPhone(Context context, String phoneNum, boolean isCall) | 拨打电话 | phoneNum-手机号 isCall-true:直接拨打电话, false:跳转到拨号界面,用户手动点击拨打 |
| hiddenPhone(String phoneNO) | 隐藏手机号码中间四位 | phoneNO-手机号码 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getDrawable(@NonNull Context context, @DrawableRes int resId) | 获取资源文件中的Drawable | context-上下文 resId-drawable的资源id |
| getString(Context context, @StringRes int resId) | 获取资源文件中的字符串 | context-上下文 resId-字符串的资源id |
| getStrings(Context context, @ArrayRes int resId) | 获取资源文件中的字符串数组 | context-上下文 resId-字符串数组的资源id |
| getColor(@NonNull Context context, @ColorRes int color) | 获取资源文件中的颜色 | context-上下文 color-颜色的资源id |
| getColorStateList(Context context, @ColorRes int resId) | 获取资源文件中的颜色样式文件 | context-上下文 resId-颜色样式文件的资源id |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| savePicture(Context context, Bitmap bitmap) | 保存图片 | context-上下文 bitmap-图片Bitmap |
| savePicture(Context context, Drawable drawable) | 保存图片 | context-上下文 drawable-图片Drawable |
| savePicture(Context context, Drawable drawable, CharSequence name) | 保存图片 | context-上下文 drawable-图片Drawable name-图片名称 |
| savePicture(Context context, Bitmap bitmap, CharSequence name) | 将图片Bitmap保存到本地 | context-上下文 bitmap-图片Bitmap name-图片名称 |
| drawable2Bitmap(Drawable drawable) | Drawable转换成Bitmap | drawable-源图片的Drawable |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| getBitmapByView(ViewGroup viewGroup) | 将ViewGroup保存成图片 | viewGroup-所要截图的父布局 |
| saveBitmap(Context context, Bitmap bmp, String imageName) | 将Bitmap保存到本地 | context-上下文 bmp-图片Bitmap imageName-图片名称 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| sendSMS(Context context, String phoneNumber, String message) | 调起系统发短信功能 | context-上下文 phoneNumber-手机号码 message-发送的信息 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| init(Context context, String spName) | 初始化SharedPreferences | context-上下文 spName-SharedPreferences名称 |
| putInt(String key, int value) | 保存int类型的数据 | key-SP的键名 value-值 |
| getInt(String key, int defaultvalue) | 获取int类型的数据 | key-SP的键名 defaultvalue-默认值 |
| getInt(String key) | 获取int类型的数据 | key-SP的键名 |
| putString(String key, String value) | 保存String类型的数据 | key-SP的键名 value-值 |
| getString(String key, String defaultvalue) | 获取String类型的数据 | key-SP的键名 defaultvalue-默认值 |
| getString(String key) | 获取String类型的数据 | key-SP的键名 |
| putBoolean(String key, boolean value) | 保存boolean类型的值 | key-SP的键名 value-值 |
| getBoolean(String key, boolean defValue) | 获取boolean类型的数据 | key-SP的键名 defValue-默认值 |
| getBoolean(String key) | 获取boolean类型的数据 | key-SP的键名 |
| putFloat(String key, float value) | 保存float类型的数据 | key-SP的键名 value-值 |
| getFloat(String key, float defValue) | 获取float类型的数据 | key-SP的键名 defValue-默认值 |
| getFloat(String key) | 获取float类型的数据 | key-SP的键名 |
| putLong(String key, long value) | 保存long类型的数据 | key-SP的键名 value-值 |
| getLong(String key, long defValue) | 获取long类型的数据 | key-SP的键名 defValue-默认值 |
| getLong(String key) | 获取long类型的数据 | key-SP的键名 |
| clear() | 清空SP里所有数据 | |
| remove(String key) | 删除SP里指定key对应的数据项 | key SP的键名 |
| contains(String key) | 查看sp文件里面是否存在此 key | key-SP的键名 |
| getInstance() | 获取SharedPreference实例 |
| 方法名 | 描述 | 参数描述 |
|---|---|---|
| recordVideo(Activity activity) | 调用系统相机录视视频 | activity 上下文 |
| recordVideo(Activity activity, String fileName) | 调用系统相机录视视频 | activity-上下文 fileName-视频名称 |
| recordVideo(Activity activity, String filePath, String fileName) | 调用系统相机录视视频 | activity-上下文 filePath-视频所在文件夹路径 fileName-视频名称 |
| recordVideo(Activity activity, String filePath, String fileName, int requestCode) | 调用系统相机录视视频 | activity-上下文 filePath-视频所在文件夹路径 fileName-视频名称 requestCode-请求码 |
| recordVideo(Activity activity, String filePath, String fileName, int quality, int duration, int requestCode) | 调用系统相机录视视频 | activity-上下文 filePath-视频所在文件夹路径 fileName-视频名称 quality-录制视频的质量,从 0-1,越大表示质量越好,同时视频也越大 duration-设置视频录制的最长时间,单位秒 requestCode-请求码 |
| getVideoInformation(Context context, Uri videoUri) | 获取视频信息 | context-上下文 videoUri-视频的Uri |