27.ZXSystemUtil 系统相关工具类
该类用于处理系统相关
ZXSystemUtil.getSDCardPath();
ZXSystemUtil.getMobileBrand();
ZXSystemUtil.getMacAddress();
ZXSystemUtil.getManufacturer()
ZXSystemUtil.isSimCardReady();
上面的五个方法分别代表了获取sd卡路径、获取手机厂商、获取mac地址、获取手机品牌、判断sim卡是否准备就绪。
该类方法很多,包含了手机型号、拨打电话、获取联系人、获取手机号、获取设备型号、判断是否为手机等等方法。
28.ZXTimeUtil 日期相关工具类
该类用于处理日期相关操作
ZXTimeUtil.getCurrentTime();
ZXTimeUtil.getTime(timeInMillis);
上面两个方法代表了获取当前时间的毫秒值,根据默认时间格式获取当前时间。
默认的时间格式为 "yyyy-MM-dd HH:mm:ss"
也可以传入自定义的SimpleDateFormat
同时还提供了获取当前日期描述的方法,例如星期五凌晨两点,三天前,昨天等等。
29.ZXToastUtil Toast相关工具类
该类用于打印Toast,并且包含了打印SnackBar的方法。
ZXToastUtil.showToast(msg);
ZXToastUtil.showImgToast(msg, drawable);
ZXToastUtil.showSnackBar(view, msg);
上面三个方法代表了打印简单toast,打印带图片的toast,展示snackbar。
请注意如果要打印snackbar,传入的view必须为CoordinatorLayout,且该layout必须存在于布局文件中
<LinearLayout>
...
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coorContent"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
注意:由于系统默认的Toast,如果出现短时间连续打印,会出现Toast一直要等很久才能打印完的情况出现,十分影响使用。
故本Toast工具,如果打印toast的时候前一个Toast还没有消失,就直接替换前一个Toast的文字,并重新开始计时。也就是说,无论短时间内打印多少个Toast,都会很快切换最后一个Toast上。
30.ZXUniqueIdUtil 唯一码工具类
此类专用于部分需要获取手机唯一码的应用。
ZXUniqueIdUtil.getUniqueId();
注意:获取的唯一码优先度是根据市面上的手机各个唯一码的稳定程度排序的。
首先获取的是缓存,也就是存再ZXSharedPrefUtil中的唯一码。如果缓存中不存在就进行下一级获取
然后获取的是androidID,通过:
Settings.Secure.getString(ZXApp.getContext().getContentResolver(), Settings.Secure.ANDROID_ID);
进行获取,获取成功就返回该id并将id存入缓存中。如果获取失败或者获取的为“9774d56d682e549c”这一固定id,就进行下一级获取
然后获取的是deviceid,通过:
((TelephonyManager) ZXApp.getContext().getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
进行获取,获取成功就返回该id并将id存入缓存中。如果获取失败就进行下一级获取
然后获取的是serial序列号,通过:
android.os.Build.SERIAL;
获取成功就返回该id并将id存入缓存中。如果获取失败就进行下一级获取
最后获取的自造uuid,通过:
UUID.randomUUID().toString();
进行获取,该方式一定你那个获取到,但是由于uuid为不固定的,获取一次后,保存到缓存中,但是如果清空缓存就会导致uuid不一致了。
但是该方式之前已经有四种获取方式了,所以该方式仅仅是作为最后的备选方式。
31.ZXUnZipRarUtil 解压工具
该类用于解压压缩包
ZXUnZipRarUtil.unRar(ZXSystemUtil.getSDCardPath() + "rartest.rar", ZXSystemUtil.getSDCardPath(), new ZXUnZipRarListener() {
@Override
public void onStart() {
ZXLogUtil.loge("解压开始");
}
@Override
public void onPregress(int progress) {
ZXLogUtil.loge("解压:" + progress);
}
@Override
public void onComplete(String outputPath) {
ZXLogUtil.loge("解压结束");
}
@Override
public void onError(String message) {
ZXLogUtil.loge("解压错误" + message);
}
});
如上,解压需要传入文件路径、解压路径、解压监听,除了unRar,还有unZip,以及UnFile,unFile会自动根据文件类型解压。
32.ZXWindowUtil 窗口工具类
该类是用于处理窗口相关操作ZXWindowUtil.dimBackground(from, to, context);
ZXWindowUtil.getDisplayRotation(activity);
上面两个方法为调整窗口透明度,获取窗口旋转角。
同样的还有判断横竖屏等操作。
33.ZXThreadPool 线程池
用于使用线程池管理线程 ZXThreadPool.execute(new ZXRunnable() {
@Override
public void IRun() {
try {
Thread.sleep(((int) (Math.random() * 1500)));
} catch (Exception e) {
e.printStackTrace();
}
String threadName = Thread.currentThread().getName();
ZXLogUtil.loge(threadName + ":" + finalI);
}
});
开启线程
if (ZXThreadPool.isPaused()) {
ZXThreadPool.resume();
} else {
ZXThreadPool.pause();
}
暂停线程
33.ZXbroadCastManager 广播封装
ZXBroadCastManager.getInstance(this)
.setAction("com.zx.default_action")
.addExtra("string", "字符串类型")
.addExtra("boolean", "布尔类型")
.send();
发送广播
ZXBroadCastManager.getInstance(this).getAction("com.zx.default_action", new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.zx.default_action")) {
ZXToastUtil.showToast(intent.getStringExtra("boolean"));
}
}
});
接收广播
同样的操作其实也可以使用RXBus来实现。
34.ZXInScrollRecylerManager 可以嵌套进ScrollView中的Recylerview的Manager
该类用于解决scrollview嵌套recyvlerview时,出现的问题,目前大部分的解决办法都需要重写Recyclerview或者scrollview,本类可以不需要重写,仅仅将该manager设置进去即可recyclerview.setLayoutManager(new LinearlayoutManger(this));
35.ZXItemClickSupport recylerview的点击事件
该类是用于设置recyclerview的点击事件,传统的设置方法为自定义点击事件,然后在adapter中监听点击事件再响应自定义点击事件。十分麻烦。 ZXItemClickSupport.addTo(rvRecord)
.setOnItemClickListener(new ZXItemClickSupport.OnItemClickListener() {
@Override
public void onItemClicked(RecyclerView recyclerView, int position, View view) {
recordUtil.playMedia(dataList.get(position).getFile());
}
});
如上,是设置item单击事件
ZXItemClickSupport.addTo(rvRecord)
.setOnItemLongClickListener(new ZXItemClickSupport.OnItemLongClickListener() {
@Override
public void onItemLongClicked(RecyclerView recyclerView, int position, View view) {
recordUtil.playMedia(dataList.get(position).getFile());
}
});
如上,是设置item长按事件
36.ZXOnDoubleClickListener 双击监听
该方法是双击监听事件
sb_bub.setOnClickListener(new ZXOnDoubleClickListener() {
@Override
protected void onDoubleClick(View v) {
}
});
使用方法如上,像普通点击事件设置一样就可以了。