在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:BaseToolsLibrary开源软件地址:https://gitee.com/VeiZhang/BaseToolsLibrary开源软件介绍:Android通用适配器和常用的工具类
目录
导入Android Studio添加jCenter远程依赖到module里的build.gradle: dependencies { compile 'com.excellence:basetools:_latestVersion'} 或者直接添加本地Library依赖 compile project(':basetoolslibrary') 注意 在使用DataBinding通用适配器时,记得开启配置 android { dataBinding { enabled true }} 大家来找茬 CommonAdapterListView,GridView的通用适配器// 创建adapter类继承CommonAdapterprivate class AppGridAdapter extends CommonAdapter<ResolveInfo>{ public AppGridAdapter(List<ResolveInfo> data, int layoutId) { super(data, layoutId); } @Override public void convert(ViewHolder viewHolder, ResolveInfo item, int position) { ImageView iconView = viewHolder.getView(android.R.id.icon); iconView.setImageDrawable(item.loadIcon(mPackageManager)); viewHolder.setText(android.R.id.text1, item.loadLabel(mPackageManager).toString()); }} // ViewHolder辅助方法public <T extends View> T getView(int viewId); // 用于获取Item内的子控件,参数为控件的idpublic ViewHolder setText(int viewId, int strId); // 用于设置文本,参数控件id、字符串idpublic ViewHolder setBackgroundResource(int viewId, int resId); // 用于设置背景图片,参数控件id、图片idpublic ViewHolder setImageResource(int viewId, int resId); // 用于设置ImageView图片资源,参数控件id、图片idpublic ViewHolder setOnClickListener(int viewId, View.OnClickListener listener); // 用于点击事件监听***// 可拓展其他方法 // 刷新适配器adapter.notifyNewData(data); ListView,GridView的多布局通用适配器// 多布局适配器private class ChatAdapter extends MultiItemTypeAdapter<People>{ public ChatAdapter(List<People> messages) { super(messages); addItemViewDelegate(new ComputerDelegate()); addItemViewDelegate(new BlueDelegate()); addItemViewDelegate(new PurpleDelegate()); }}// 不同的布局视图private class ComputerDelegate implements ItemViewDelegate<People>{ @Override public int getItemViewLayoutId() { return R.layout.item_computer; } @Override public boolean isForViewType(People item, int position) { return item instanceof ComputerData; } @Override public void convert(ViewHolder viewHolder, People item, int position) { viewHolder.setText(R.id.computer_text, item.getMsg()); }} CommonBindingAdapter开启DataBinding,ListView、GridView通用适配器示例:CommonBindingAdapterActivity // 直接创建CommonBindingAdapterCommonBindingAdapter<Flower> adapter = new CommonBindingAdapter<>(mFlowers, R.layout.item_flower, BR.flower);// 设置适配器,等同于ListView.setAdapter()、GridView.setAdapter()mBinding.setAdapter(adapter); 开启DataBinding,ListView,GridView的多布局通用适配器示例:MultiItemTypeBindingAdapterActivity // 使用方式同上,主要实现ViewDelegate布局视图接口MultiItemTypeBindingAdapter<Flower> adapter = new MultiItemTypeBindingAdapter<>(mFlowers);adapter.addItemViewDelegate(new RoseViewDelegate());adapter.addItemViewDelegate(new TulipViewDelegate());mBinding.setAdapter(adapter); BaseRecyclerAdapterRecyclerView的通用适配器// 创建adapter类继承BaseRecyclerAdapterprivate class AppRecyclerAdapter extends BaseRecyclerAdapter<ResolveInfo>{ private PackageManager mPackageManager = null; public AppRecyclerAdapter(List<ResolveInfo> data, int layoutId) { super(data, layoutId); mPackageManager = getPackageManager(); } @Override public void convert(RecyclerViewHolder viewHolder, ResolveInfo item, int position) { viewHolder.setText(android.R.id.text1, item.loadLabel(mPackageManager)); viewHolder.setImageDrawable(android.R.id.icon, item.loadIcon(mPackageManager)); }} // RecyclerViewHolder辅助方法类同ViewHolder辅助方法*** RecyclerView的多布局通用适配器示例:MultiItemRecyclerAdapterActivity // 多布局适配器private class WarAdapter extends MultiItemTypeRecyclerAdapter<People>{ public WarAdapter(List<People> data) { super(data); addItemViewDelegate(new ComputerRecyclerDelegate()); addItemViewDelegate(new BlueRecyclerDelegate()); addItemViewDelegate(new PurpleRecyclerDelegate()); }}// 不同的布局视图private class ComputerRecyclerDelegate implements ItemViewDelegate<People>{ @Override public int getItemViewLayoutId() { return R.layout.item_computer; } @Override public boolean isForViewType(People item, int position) { return item instanceof ComputerData; } @Override public void convert(RecyclerViewHolder viewHolder, People item, int position) { viewHolder.setText(R.id.computer_text, item.getMsg()); }} BaseRecyclerBindingAdapter开启DataBinding,RecyclerView的通用适配器示例:BaseRecyclerBindingAdapterActivity // 直接创建BaseRecyclerBindingAdapterBaseRecyclerBindingAdapter<Flower> adapter = new BaseRecyclerBindingAdapter<>(mFlowers, R.layout.item_flower, BR.flower);// 设置适配器,等同于RecyclerView.setAdapter()mBinding.setAdapter(adapter);// 注意设置LayoutManager,等同于RecyclerView.setLayoutManager()mBinding.setLayoutManager(new LinearLayoutManager(this)); 开启DataBinding,RecyclerView的多布局通用适配器示例:MultiItemTypeBindingRecyclerAdapterActivity // 使用方式同上,主要实现ViewDelegate布局视图接口MultiItemTypeBindingRecyclerAdapter<Flower> adapter = new MultiItemTypeBindingRecyclerAdapter<>(mFlowers);adapter.addItemViewDelegate(new RoseViewDelegate());adapter.addItemViewDelegate(new TulipViewDelegate());mBinding.setAdapter(adapter);mBinding.setLayoutManager(new LinearLayoutManager(this)); BasePagerAdapterViewPager通用适配器private class NumAdapter extends BasePagerAdapter{ public NumAdapter(int pageCount) { super(pageCount); } @Override protected View loadView(Context context, int pageIndex) { // 加载每页 TextView textView = new TextView(context); textView.setText(String.valueOf(pageIndex * mNumScale)); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mNumScale *= 10; mPageCount += 1; // 刷新每页 mAdapter.notifyNewData(mPageCount); } }); return textView; }} Utils权限<uses-permission android:name="android.permission.GET_TASKS"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/> 常用工具类
startAnotherActivity : Activity跳转setActivityWindowAlpha : 设置Activity窗口透明值isActivityTopStack : 判断Activity是否在栈顶getLauncherActivity : 获取某应用入口Activity
getInstalledApps : 获取安装的全部应用getSystemInstalledApps : 获取安装的系统应用getUserInstalledApps : 获取安装的第三方应用getPermissionList : 获取某应用的所有权限checkPermission : 检测某应用是否有某权限getAppVersionName : 获取当前应用版本名getAppVersionCode : 获取当前应用版本号getAppSize : 获取当前应用大小getAppTime : 获取当前应用安装时间getAppPath : 获取当前应用路径getAPKFileSignature : 获取apk文件的签名getPackageSignature : 获取某安装应用的签名isAppInstalled : 判断应用是否安装isAppDebug : 判断当前应用是否是Debug版本
closeIO : 关闭IOcloseIOQuietly : 安静关闭IO
bytes2Short : byte转shortshortToByte : short转bytebyte2BinStr : byte转二进制byte2BinStr : byte数组转二进制str2BinStr : 字符串转二进制字符串bytes2HexString : byte数组转16进制字符串hexString2Bytes : 16进制字符串转byte数组string2HexString : 字符串转16进制字符串hexString2String : 16进制字符串转字符串string2Bytes : 字符串转byte数组bytes2String : byte数组转字符串byte2Int : byte数组转有符号intint2Byte : int转4位byte数组unintbyte2long : 四字节byte数组转无符号longinputStream2OutputStream : inputStream转outPutStreaminputStream2Bytes : inputStream转bytesinputStream2String : inputStream转字符串inputStream2StringBuilder : inputStream转StringBuilder
init : 初始化,设置存储文件名contains : 判断键值是否存在setSetting : 存储配置getString : 读取字符串配置getBoolean : 读取Boolean配置getInt : 读取int配置getLong : 读取long配置getFloat : 读取float配置getStringSet : 读取Set<String>配置remove : 删除配置clear : 清空配置
getDensity : 获取当前屏幕分辨率getScaleDensity : 获取当前文字分辨率getScreenWidth : 获取屏幕宽度getScreenHeight : 获取屏幕高度getScreenSize : 获取屏幕宽、高dp2px : dp转pxpx2dp : px转dpsp2px : sp转pxpx2sp : px转sp
getIMEI : 获取IMEIgetIMSI : 获取IMSIgetPhone : 获取手机号getSIM : 获取SIM卡序列号getSimCountry : 获取SIM卡国家getSimOperator : 获取SIM卡运营商getSimOperatorName : 获取SIM卡运营商名字getSimState : 获取SIM卡状态
isEmpty : 判断对象是否为空isNotEmpty : 判断对象是否非空
hashTemplate : 散列加密算法encryptMD5 : MD5加密encryptMD5HexString : MD5加密转16进制字符串symmetricTemplate : 对称加密算法encryptDES : DES加密encryptDES2HexString : DES加密转16进制字符串decryptDES : DES解密decryptHexStringDES : 16进制字符串DES解密encrypt3DES : 3DES加密encrypt3DES2HexString : 3DES加密转16进制字符串decrypt3DES : 3DES解密decryptHexString3DES : 16进制字符串3DES解密encryptAES : AES加密encryptAES2HexString : AES加密转16进制字符串decryptAES : AES解密decryptHexStringAES : 16进制字符串AES解密rsaTemplate : 非对称加密算法encryptRSA : RSA加密encryptRSA2HexString : RSA加密转16进制decryptRSA : RSA解密decryptHexStringRSA : 16进制字符串RSA解密
printException : 打印异常信息字符串
writeFile : 将字符串、字节数组、输入流写入文件readStream2Bytes : 读取输入流为字节数组readFile2Bytes : 读取文件为字节数组readFile2String : 读取文件为字符串copyFile : 拷贝文件
createNewFile : 创建文件deleteFile : 删除文件mkDir : 创建目录deleteDir : 删除目录deletePostfixFiles : 删除目录下的某后缀文件formatFileSize : 格式化文件大小getFilesSize : 遍历目录、获取文件大小getFileSize : 获取文件大小getDirSize : 遍历目录大小getDirFreeSpace : 获取目录剩余空间getDirTotalSpace : 获取目录总空间getDirUsableSpace : 获取目录可用空间chmod : 修改目录、文件权限isFileExists : 判断文件或目录是否存在getFileLastModified : 读取文件最后的修改时间getFileMd5 : 读取文件MD5值
HandlerHolder : 使用必读
drawable2Bitmap : drawable转bitmapbitmap2Drawable : bitmap转drawableview2Bitmap : view转Bitmap
isIntentAvailable : 判断Intent是否存在startIntent : Intent跳转getSettingIntent : 跳转SettingsgetWiFiIntent : 隐式开启WiFigetDirectWiFiIntent : 直接开启WiFigetRoamingIntent : 跳转到移动网络设置getPermissionIntent : 开启权限设置getLocationIntent : 开启定位设置getBluetoothIntent : 开启蓝牙设置getLocaleIntent : 开启语言设置getAppIntent : 跳转应用程序列表界面getAllAppIntent : 跳转到应用程序界面(所有的)getInstalledAppIntent : 跳转到应用程序界面(已安装的)getStorageIntent : 开启存储设置getAccessibilityIntent : 开启辅助设置getSearchIntent : 跳转到搜索设置getInputMethodIntent : 跳转输入法设置getInstallIntent : 安装应用getUninstallIntent : 卸载应用getShareTextIntent : 分享文本getShareImageIntent : 分享图片getDialIntent : 跳转拨号界面getCallIntent : 拨打电话getSmsIntent : 跳转短信界面getSendSmsIntent : 发送短信getEmailIntent : 发送邮件getCaptureIntent : 打开相机getVideoIntent : 播放本地视频getNetVideoIntent : 播放网络视频getAudioIntent : 播放本地音乐
hideSoftInput : 隐藏软键盘showSoftInput : 打开软键盘toggleSoftInput : 如果输入法在窗口上已经显示,则隐藏,反之则显示clickBlankArea2HideSoftInput : 击屏幕空白区域隐藏软键盘
getActiveNetworkInfo : 获取活动的网络信息isConnected : 检查网络是否连接isAvailableByPing : 判断网络是否可用isMobileDataEnabled : 判断移动数据是否打开setMobileDataEnabled : 打开或关闭移动数据(舍弃不可用)is4G : 判断是否是4G网络isWiFiEnabled : 判断是否打开WiFisetWiFiEnabled : 打开或关闭WiFiisEthConnected : 判断以太网是否连接isEthAvailable : 判断以太网是否可用isWiFiConnected : 判断WiFi是否连接isWiFiAvailable : 判断WiFi是否可用isWiFiAvailableByPing : 通过ping的方式判断WiFi是否可用getNetworkOperatorName : 获取网络运营商名称getNetworkType : 获取当前网络类型getIPAddress : 获取网络IP地址getDomainAddress : 根据域名获取ipreadMac : 读取Mac地址getWiredMac : 获取有线Mac地址getWirelessMac : 获取无线Mac地址
getRootPath : 获取根路径getDataPath : 获取数据路径getDownloadCachePath : 获取下载缓存路径getInternalAppDataPath : 获取内存应用数据路径getInternalAppCodeCacheDir : 获取内存应用代码缓存路径getInternalAppCachePath : 获取内存应用缓存路径getInternalAppDbsPath : 获取内存应用数据库路径getInternalAppDbPath : 获取内存应用数据库路径getInternalAppFilesPath : 获取内存应用文件路径getInternalAppSpPath : 获取内存应用 SP 路径getInternalAppNoBackupFilesPath : 获取内存应用未备份文件路径getExternalStoragePath : 获取外存路径getExternalMusicPath : 获取外存音乐路径getExternalPodcastsPath : 获取外存播客路径getExternalRingtonesPath : 获取外存铃声路径getExternalAlarmsPath : 获取外存闹铃路径getExternalNotificationsPath : 获取外存通知路径getExternalPicturesPath : 获取外存图片路径getExternalMoviesPath : 获取外存影片路径getExternalDownloadsPath : 获取外存下载路径getExternalDcimPath : 获取外存数码相机图片路径getExternalDocumentsPath : 获取外存文档路径getExternalAppDataPath : 获取外存应用数据路径getExternalAppCachePath : 获取外存应用缓存路径getExternalAppFilesPath : 获取外存应用文件路径getExternalAppMusicPath : 获取外存应用音乐路径getExternalAppPodcastsPath : 获取外存应用播客路径getExternalAppRingtonesPath : 获取外存应用铃声路径getExternalAppAlarmsPath : 获取外存应用闹铃路径getExternalAppNotificationsPath : 获取外存应用通知路径getExternalAppPicturesPath : 获取外存应用图片路径getExternalAppMoviesPath : 获取外存应用影片路径getExternalAppDownloadPath : 获取外存应用下载路径getExternalAppDcimPath : 获取外存应用数码相机图片路径getExternalAppDocumentsPath : 获取外存应用文档路径getExternalAppObbPath : 获取外存应用 OBB 路径 |
请发表评论