最近积累的Android的一个工具类合集

版权声明:本文为博主原创文章,未经博主允许不得转载。 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改成掉就行了

猜你喜欢

转载自blog.csdn.net/Moing557/article/details/78597009