版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Moing557/article/details/78597009
在开发中使用工具类可以大大提高效率。所以收集一些工具类是很有必要的。最近写的代码有点多,所以感觉使用了挺多的工具类。后续有的话可能会补充进来。
/**
* Created by xiajue on 2017/11/21.
* 开发中经常使用的代码的整理
*/
//dialog的工具类
/**
* Created by Admin on 2018/5/2.
*/
public class DialogManager {
/**
* 显示一个带有editText的dialog
* 点击确定立即消失
*/
public static void showEditDialog(Context context, String title, String msg, String editInit,
final OnEditDialogClickListener listener, boolean...
isTouchClose) {
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(title);
dialog.setMessage(msg);
final EditText editText = new EditText(context);
editText.setText(editInit);
dialog.setView(editText);
// dialog.setCancelable(false);
dialog.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.onClick(null, editText.getText().toString());
}
});
if (isTouchClose != null && isTouchClose.length > 0) {
dialog.setCancelable(isTouchClose[0]);
}
dialog.show();
}
/**
* 显示一个带有editText的dialog
* 点击确定不消失
*/
public static void showEditDialog(Context context, String title, String msg, String editInit,
final OnEditDialogClickListener listener, final
DialogInterface.OnClickListener cancelListener, boolean...
isTouchClose) {
final AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(title);
dialog.setMessage(msg);
final EditText editText = new EditText(context);
editText.setText(editInit);
dialog.setView(editText);
// dialog.setCancelable(false);
dialog.setPositiveButton(R.string.ok, null);
dialog.setNegativeButton(R.string.cancel, cancelListener);
final AlertDialog alertDialog = dialog.create();
if (isTouchClose != null && isTouchClose.length > 0) {
alertDialog.setCancelable(isTouchClose[0]);
L.e("settings .....cancelable...." + isTouchClose[0]);
}
alertDialog.show();
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View
.OnClickListener() {
@Override
public void onClick(View view) {
listener.onClick(alertDialog, editText.getText().toString());
}
});
}
public interface OnEditDialogClickListener {
void onClick(AlertDialog alertDialog, String edit);
}
/**
* 显示一个询问的dialog
*
* @param context 上下文
* @param title 标题
* @param buttonTexts 按钮的标题string[]{""okTitle,""cancelTitle}
* @param okListener ok按钮的监听
* @param cancelListener 取消按钮的监听
* @param isTouchClose 是否触摸外部隐藏dialog
*/
public static void showInquiry(Context context, String title, String msg, String[] buttonTexts,
DialogInterface.OnClickListener okListener,
DialogInterface.OnClickListener cancelListener, boolean...
isTouchClose) {
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(title);
dialog.setMessage(msg);
dialog.setPositiveButton(buttonTexts[0], okListener);
dialog.setNegativeButton(buttonTexts[1], cancelListener);
if (isTouchClose != null && isTouchClose.length > 0) {
dialog.setCancelable(isTouchClose[0]);
}
dialog.show();
}
}
//EditText操作工具
/**
* Created by Admin on 2018/5/8.
*/
public class EditTextUtils {
/**
* 判断editText数组中的每一个editText是否为空
*
* @param editTexts 数组
* @return 为空的个数
*/
public static int isEmpty(EditText... editTexts) {
int emptyCount = 0;
for (int i = 0; i < editTexts.length; i++) {
if (editTexts[i].getText().toString().isEmpty()) {
emptyCount++;
}
}
return emptyCount;
}
/**
* 取得editText数组中的每一个text
*
* @param editTexts 数组
* @return string数组
*/
public static String[] getTexts(EditText... editTexts) {
String[] texts = new String[editTexts.length];
for (int i = 0; i < editTexts.length; i++) {
texts[i] = editTexts[i].getText().toString();
}
return texts;
}
/**
* 设置editText数组中的每一个条目的text
*
* @param editTexts 数组
* @param smsNumber string 数组
*/
public static void setTexts(EditText[] editTexts, String... smsNumber) {
for (int i = 0; i < editTexts.length; i++) {
editTexts[i].setText(smsNumber[i]);
}
}
/**
* 判断editText数组中条目的text长度是否过短
*
* @param editTexts 数组
* @return 过短的个数
*/
public static int isShort(EditText[] editTexts, int min, boolean isLostEmpty) {
int shortCount = 0;
for (int i = 0; i < editTexts.length; i++) {
int length = editTexts[i].getText().toString().length();
if (length < min) {
if (isLostEmpty && length == 0) {
continue;
}
shortCount++;
}
}
return shortCount;
}
/**
* 判断editText数组中条目的text长度是否过长
*
* @param editTexts 数组
* @return 过短的个数
*/
public static int isLong(EditText[] editTexts, int max) {
int longCount = 0;
for (int i = 0; i < editTexts.length; i++) {
int length = editTexts[i].getText().toString().length();
if (length > max) {
longCount++;
}
}
return longCount;
}
/**
* 检查是否有内容重复
*
* @param editTexts
* @return
*/
public static boolean isValueRepeat(EditText[] editTexts) {
for (int i = 0; i < editTexts.length; i++) {
String value = editTexts[i].getText().toString();
for (int j = i + 1; j < editTexts.length; j++) {
if (!value.isEmpty() && value.equals(editTexts[j].getText().toString())) {
return true;
}
}
}
return false;
}
}
//string相关
public class StringUtils {
public static boolean isEmpty(String... texts) {
boolean empty = true;
for (String s : texts) {
if (!s.isEmpty()) {
empty = false;
}
}
return empty;
}
/**
* int颜色值转换为16进制字符串:#ooxxox
*/
public static String toHexEncoding(int color) {
String R, G, B;
StringBuffer sb = new StringBuffer();
R = Integer.toHexString(Color.red(color));
G = Integer.toHexString(Color.green(color));
B = Integer.toHexString(Color.blue(color));
//判断获取到的R,G,B值的长度 如果长度等于1 给R,G,B值的前边添0
R = R.length() == 1 ? "0" + R : R;
G = G.length() == 1 ? "0" + G : G;
B = B.length() == 1 ? "0" + B : B;
sb.append("#");
sb.append(R);
sb.append(G);
sb.append(B);
return sb.toString();
}
}
//toast相关
public class ToastUtils {
private static boolean show = true;
private static void show(Context context, String msg, int time,final int wait){
if (show) {
Toast.makeText(context, msg, time).show();
show = false;
}
new Thread(new Runnable() {
@Override
public void run() {
try {
//等待wait毫秒后才能再次显示toast
Thread.sleep(wait);
show = true;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
/**
* 显示短的Toast 并在wait毫秒内不再显示
*/
public static void showShort(Context context, String msg, final int wait){
show(context,msg,Toast.LENGTH_SHORT,wait);
}
/**
* 显示长的Toast 并在wait毫秒内不再显示
*/
public static void showLong(Context context, String msg, final int wait) {
show(context, msg, Toast.LENGTH_LONG, wait);
}
}
//MediaPlayer工具
public class MediaPlayerUtils {
private static List<MediaPlayer> sMediaPlayerList;
static {
sMediaPlayerList = new ArrayList<>();
}
/**
* 播放音频媒体文件
*
* @param context
* @param res 媒体资源
* @param isLoop 是否循环--默认为true
* @return MediaPlayer下标
*/
public static int playMediaRes(Context context, int res, boolean... isLoop) {
MediaPlayer mediaPlayer = MediaPlayer.create(context, res);
mediaPlayer.setLooping(isLoop.length <= 0 || isLoop[0]);
mediaPlayer.start();
sMediaPlayerList.add(mediaPlayer);
return sMediaPlayerList.size() - 1;
}
/**
* 播放音频媒体文件
*
* @param context
* @param uri 媒体资源
* @param isLoop 是否循环--默认为true
* @return MediaPlayer下标
*/
public static int playMediaUri(Context context, Uri uri, boolean... isLoop) {
MediaPlayer mediaPlayer = MediaPlayer.create(context, uri);
mediaPlayer.setLooping(isLoop.length <= 0 || isLoop[0]);
mediaPlayer.start();
sMediaPlayerList.add(mediaPlayer);
return sMediaPlayerList.size() - 1;
}
/**
* 通过下标停止播放
*
* @param index
*/
public static void stopMedia(int index) {
sMediaPlayerList.get(index).stop();
}
/**
* 停止所有媒体播放
*/
public static void stopMediaAll() {
for (MediaPlayer media :
sMediaPlayerList) {
media.stop();
}
}
/**
* 停止并释放所有媒体
*/
public static void releaseMedias() {
for (MediaPlayer media :
sMediaPlayerList) {
media.stop();
media.release();
}
sMediaPlayerList.clear();
}
/**
* 获得媒体的时长
*
* @param context
* @param uri
* @return
*/
public static int getDuration(Context context, Uri uri) {
MediaPlayer mediaPlayer = MediaPlayer.create(context, uri);
int duration = mediaPlayer.getDuration();
mediaPlayer.release();
return duration;
}
/**
* 获得媒体的时长
*
* @param context
* @param res
* @return
*/
public static int getDuration(Context context, Integer res) {
MediaPlayer mediaPlayer = MediaPlayer.create(context, res);
int duration = mediaPlayer.getDuration();
mediaPlayer.release();
return duration;
}
/**
* 获得媒体时长
*
* @param context
* @param t
* @param <T>
* @return
*/
public static <T> int getDuration(final Context context, T t) {
if (t instanceof File) {
return getDuration(context, Uri.fromFile(((File) t)));
} else if (t instanceof Integer) {
return getDuration(context, ((Integer) t));
}
return 0;
}
public static MediaPlayer getMediaPlayer(int playIndex) {
return sMediaPlayerList.get(playIndex);
}
}
//SoundPool 调用顺序:initSound>>int index=addSoundRes>>playSound(index)>>releaseSound
public class SoundUtils {
private static SoundPool sSoundPool;
private static List<Integer> sSoundPoolIdList;
static {
sSoundPoolIdList = new ArrayList<>();
}
/**
* 初始化
*/
public static void initSound() {
if (sSoundPool == null)
if (Build.VERSION.SDK_INT >= 21) {
SoundPool.Builder builder = new SoundPool.Builder();
//传入音频的数量
builder.setMaxStreams(1);
//AudioAttributes是一个封装音频各种属性的类
AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
//设置音频流的合适属性
attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC);
builder.setAudioAttributes(attrBuilder.build());
sSoundPool = builder.build();
} else {
//第一个参数是可以支持的声音数量,第二个是声音类型,第三个是声音品质
sSoundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 5);
}
}
/**
* 添加音频到soundPool
*
* @param context
* @param res
* @return
*/
public static int addSoundRes(Context context, int res) {
//第一个参数Context,第二个参数资源Id,第三个参数优先级
sSoundPoolIdList.add(sSoundPool.load(context, res, 1));
return sSoundPoolIdList.size() - 1;
}
/**
* 播放声音
*
* @param index
*/
public static void playSound(int index) {
sSoundPool.play(sSoundPoolIdList.get(index), 1, 1, 1, 0, 1);
}
/**
* 释放资源
*/
public static void releaseSound() {
if (sSoundPool != null) {
sSoundPool.release();
sSoundPool = null;
}
sSoundPoolIdList.clear();
}
}
目前就是这些。有些是网上掏来的代码,其他都是自己写的。错误请指正。
2018年5月29日更新:想了下,那些常见的工具网上随便都有。这里只会让我的文章变得臃肿。还是把那些去掉吧。留下自己写的。顺便添加了一些最近写的工具类
类中的R.string.xxx改成掉就行了