Android-адаптеры и общие инструменты
allprojects {
repositories {
/** Github packages **/
maven {
url = "https://maven.pkg.github.com/VeiZhang/GitHubPackages-Android"
credentials {
// Введите свои учётные данные и личный токен (требуется разрешение на чтение пакетов)
// Можно поместить в файл gradle.properties или local.properties в корне проекта
username = getPropertyValue("GITHUB_USER") ?: project.properties['GITHUB_USER']
password = getPropertyValue("GITHUB_READ_TOKEN") ?: project.properties['GITHUB_READ_TOKEN']
}
}
}
}
Добавьте удалённый репозиторий jCenter в build.gradle модуля:
dependencies {
compile 'com.excellence:basetools:_latestVersion'
}
Или напрямую добавьте локальную библиотеку:
compile project(':basetoolslibrary')
Примечание
При использовании адаптера DataBinding не забудьте включить конфигурацию:
android {
dataBinding {
enabled true
}
}
Приглашаем к сотрудничеству
![icon_adapter][icon_adapter]
![icon_common_adapter][icon_common_adapter]
![icon_multi_adapter][icon_multi_adaptor]
Пример: [CommonAdapterActivity][CommonAdapterActivity]
// Создание класса адаптера, наследуемого от CommonAdapter
private 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, параметр — идентификатор элемента
public ViewHolder setText(int viewId, int strId); // Используется для установки текста, параметры — идентификатор элемента и идентификатор строки
public ViewHolder setBackgroundResource(int viewId, int resId); // Используется для установки фонового изображения, параметры — идентификатор элемента и идентификатор ресурса
public ViewHolder setImageResource(int viewId, int resId); // Используется для установки ресурса ImageView, параметры — идентификатор элемента и идентификатор ресурса
public ViewHolder setOnClickListener(int viewId, View.OnClickListener listener); // Используется для прослушивания событий щелчка, параметры — идентификатор элемента и прослушиватель
*
*
*
// Можно расширить другие методы
// Обновить адаптер
adapter.notifyNewData(data);
Пример: [MultiItemAdapterActivity][MultiItemAdapterActivity]
// Многомакетный адаптер
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
``` Вот перевод текста на русский язык:
void convert(ViewHolder viewHolder, People item, int position) { viewHolder.setText(R.id.computer_text, item.getMsg()); } }
## CommonBindingAdapter
### Открытие DataBinding, ListView и GridView — универсальный адаптер
Пример: CommonBindingAdapterActivity
// Открытие DataBinding, создание универсального адаптера для ListView и GridView CommonBindingAdapter adapter = new CommonBindingAdapter<>(mFlowers, R.layout.item_flower, BR.flower); // Установка адаптера, аналогично ListView.setAdapter() или GridView.setAdapter() mBinding.setAdapter(adapter);
### Открытие DataBinding, ListView, GridView — многоформатный универсальный адаптер
Пример: MultiItemTypeBindingAdapterActivity
// Использование аналогично предыдущему примеру, основная реализация интерфейса ViewDelegate для представления макета MultiItemTypeBindingAdapter adapter = new MultiItemTypeBindingAdapter<>(mFlowers); adapter.addItemViewDelegate(new RoseViewDelegate()); adapter.addItemViewDelegate(new TulipViewDelegate()); mBinding.setAdapter(adapter);
## BaseRecyclerAdapter
### Универсальный адаптер RecyclerView
Пример: RecyclerAdapterActivity
// Создание класса адаптера, наследуемого от BaseRecyclerAdapter private class AppRecyclerAdapter extends BaseRecyclerAdapter { 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));
}
}
### Многоформатный универсальный адаптер RecyclerView
Пример: MultiItemRecyclerAdapterActivity
// Многоформатный адаптер RecyclerView private class WarAdapter extends MultiItemTypeRecyclerAdapter { public WarAdapter(List data) { super(data); addItemViewDelegate(new ComputerRecyclerDelegate()); addItemViewDelegate(new BlueRecyclerDelegate()); addItemViewDelegate(new PurpleRecyclerDelegate()); } }
// Различные макеты представления private class ComputerRecyclerDelegate implements ItemViewDelegate { @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
// Непосредственное создание BaseRecyclerBindingAdapter BaseRecyclerBindingAdapter 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 adapter = new MultiItemTypeBindingRecyclerAdapter<>(mFlowers); adapter.addItemViewDelegate(new RoseViewDelegate()); adapter.addItemViewDelegate(new TulipViewDelegate()); mBinding.setAdapter(adapter); mBinding.setLayoutManager(new LinearLayoutManager(this));
## BasePagerAdapter
### ViewPager — универсальный адаптер
Пример: ViewPagerAdapterActivity Вот перевод текста на русский язык:
```java
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;
}
}
<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=«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"/>
- Activity相关→[ActivityUtils.kt][ActivityUtils]
startAnotherActivity : Activity跳转
setActivityWindowAlpha : 设置Activity窗口透明值
isActivityTopStack : 判断Activity是否在栈顶
getLauncherActivity : 获取某应用入口Activity
- 算法相关→[AlgorithmUtils.java][AlgorithmUtils]
getMD5 : 生成MD5
checkMD5 : 检测MD5
- AlphaUtils相关→[AlphaUtils.kt][AlphaUtils]
setAlpha : 设置Window透明度
setAlpha : 设置Activity的Window透明度
setAlpha : 设置Dialog的Window透明ность
setAlpha : 设置DialogFragment的Window透明性
- 补间动画相关→[AnimationUtils.kt][AnimationUtils]
scaleView : 放大缩小动画
translateView : 平移动画
alphaView : 透明度动画
- 属性动画相关→[AnimatorUtils.kt][AnimatorUtils]
marginLeftTranslateIn : 相邻View联动
marginLeftTranslateOut : 相邻View联动
marginUpTranslateIn : 相邻View联动
marginUpTranslateOut : 相邻View联动
marginTranslateIn : 相邻View联动
marginTranslateOut : 相邻View联动
marginByLayout : 在原基础上,移动View的外边距
marginToLayout : 设置View的外边距
heightToLayout : 变化View的高度动画
scaleView : 放大缩小动画
translateView : 平移动画
alphaView : 透明度动画
- 应用相关→[AppUtils.kt][AppUtils]
getInstalledApps : 获取安装的全部应用
getSystemInstalledApps : 获取安装的系统应用
getUserInstalledApps : 获取安装的第三方应用
getRunningApps : 获取正在运行的应用
getPermissionList : 获取某应用的所有权限
checkPermission : 检测某应用是否有某权限
getAppVersionName : 获取当前应用版本名
getAppVersionCode : 获取当前应用版本号
getAppSize : 获取当前应用大小
getAppTime : 获取当前应用安装时间
getAppPath : 获取当前应用路径
getAPKFileSignature : 获取apk文件的签名
getPackageSignature : 获取某安装应用的签名
isAppExist : 判断应用是否存在
isAppDebug : 判断当前应用是否是Debug版本
getMaxMemory : 当前应用分配的最大内存
getTotalMemory : 当前应用分配的总内存
getFreeMemory : 当前应用分配的剩余内存
- 音频相关→[AudioUtils.kt][AudioUtils]
getMaxVolume : 获取最大音量
getMinVolume : 获取最小音量
getVolume : 获取音量
setVolume : 设置音量
adjustVolume : 调整音量
- 广播相关→[BroadcastUtils.kt][BroadcastUtils]
registerMountAction : USB广播
registerScreenAction : 屏幕熄亮广播
registerPackageAction : 安装卸载广播
registerNetworkStateAction : 网络状态广播
registerBootAction : 开机广播
- 关闭相关→[CloseUtils.kt][CloseUtils]
closeIO : 关闭IO
closeIOQuietly : 安静关闭IO
- 关闭相关→[CollectionUtils.kt][CollectionUtils]
removeEmptyElement : 清除集合里的空元素
listEquals : 比较两个列表元素对象是否一致
listContentEquals : 比较两个列表元素内容是否一致
- 转换相关→[ConvertUtils.kt][ConvertUtils]
bytes2Short : byte转short
shortToByte : short转byte
byte2BinStr : byte转二进制
byte2BinStr : byte数组转二进制
str2BinStr : 字符串转二进制字符串
bytes2HexString : byte数组转16进制字符串
hexString2Bytes
``` **16-битная строка в массив байтов**
* string2HexString: строка в 16-битную строку.
* hexString2String: 16-битная строка в строку.
* string2Bytes: строка в массив байтов.
* bytes2String: массив байтов в строку.
* byte2Int: массив байтов в знаковое int.
* int2Byte: int в 4-байтовый массив.
* uintbyte2long: четырёхбайтовый массив без знака в long.
* inputStream2OutputStream: inputStream в outputStream.
* inputStream2Bytes: inputStream в байты.
* inputStream2String: inputStream в строку.
* inputStream2StringBuilder: inputStream в StringBuilder.
**Конфигурация хранилища → [DBUtils.kt][DBUtils]**
* init: инициализация, установка имени файла для хранения.
* contains: проверка наличия ключа и значения.
* setSetting: сохранение конфигурации.
* getString: чтение конфигурации строки.
* getBoolean: чтение конфигурации Boolean.
* getInt: чтение конфигурации int.
* getLong: чтение конфигурации long.
* getFloat: чтение конфигурации float.
* getStringSet: чтение конфигурации Set<String>.
* remove: удаление конфигурации.
* clear: очистка конфигурации.
**Разрешение экрана → [DensityUtils.kt][DensityUtils]**
* getDensity: получение текущего разрешения экрана.
* getScaleDensity: получение текущей плотности текста.
* getScreenWidth: получение ширины экрана.
* getScreenHeight: получение высоты экрана.
* getScreenSize: получение размера экрана (ширина и высота).
* dp2px: преобразование dp в px.
* px2dp: преобразование px в dp.
* sp2px: преобразование sp в px.
* px2sp: преобразование px в sp.
**Устройство → [DeviceUtils.kt][DeviceUtils]**
* getIMEI: получение IMEI.
* getIMSI: получение IMSI.
* getPhone: получение номера телефона.
* getSIM: получение серийного номера SIM-карты.
* getSimCountry: получение страны SIM-карты.
* getSimOperator: получение оператора SIM-карты.
* getSimOperatorName: получение имени оператора SIM-карты.
* getSimState: получение состояния SIM-карты.
**Пустота → [EmptyUtils.kt][EmptyUtils]**
* isEmpty: проверка объекта на пустоту.
* isNotEmpty: проверка объекта непустоту.
**Шифрование и дешифрование → [EncryptUtils.java][EncryptUtils]**
* hashTemplate: шаблон хеширования.
* encryptMD5: шифрование MD5.
* encryptDES: шифрование DES.
* decryptDES: расшифровка DES.
* encrypt3DES: шифрование 3DES.
* decrypt3DES: расшифровка 3DES.
* encryptAES: шифрование AES.
* decryptAES: расшифровка AES.
* rsaTemplate: шаблон RSA.
* encryptRSA: шифрование RSA.
* printException: печать информации об исключении.
**Исключения → [ExceptionUtils.kt][ExceptionUtils]**
* printException: вывод информации об исключении в виде строки.
**Поток файлов → [FileIOUtils.kt][FileIOUtils]**
* writeFile: запись строки, массива байтов или входного потока в файл.
* readFile2Bytes: чтение файла или входного потока как массива байтов.
* readFile2String: чтение файла или входного потока как строки.
* copyFile: копирование файла.
**Файлы → [FileUtils.kt][FileUtils]**
* createNewFile: создание файла.
* deleteFile: удаление файла.
* mkDir: создание каталога.
* deleteDir: удаление каталога.
* deletePostfixFiles: удаление файлов с определённым расширением в каталоге.
* formatFileSize: форматирование размера файла.
* getAvailableSize: получение используемого размера файла.
* getTotalSize: получение общего размера файла.
* getFilesSize: обход каталога и получение размера файлов.
* getFileSize: получение размера файла.
* getDirSize: обход директории и получение её размера.
* getDirFreeSpace: получение свободного пространства в директории.
* getDirTotalSpace: получение общего пространства в директории.
* getDirUsableSpace: получение доступного пространства в директории.
* chmod: изменение прав доступа к каталогу или файлу.
* isFileExists: проверка существования файла или каталога.
* getFileLastModified: получение времени последнего изменения файла.
* getFileMd5: получение MD5-значения файла.
**Handler → [HandlerUtils.java][HandlerUtils]**
* HandlerHolder: использование обязательного чтения.
**HTTP → [HttpUtils.kt][HttpUtils]**
* checkURL: проверка действительного URL.
* checkHttpURL: проверка HTTP или HTTPS, добавление префикса http:// при отсутствии.
* appendURLPath: объединение URL-пути.
* isUrlExists: проверка доступности ссылки по способу доступа.
* convertHttpUrl: преобразование символов китайского языка в ссылке.
* convertInputStream: преобразование потока по типу.
* setConnectParam: установка параметров запроса.
* printHeader: печать всех заголовков запросов.
* getHeader: получение конкретного заголовка запроса.
**Изображения → [ImageUtils.kt][ImageUtils]**
* resource2Drawable: ресурс в Drawable.
* resource2Bitmap: ресурс в Bitmap.
* drawable2Bitmap: Drawable в Bitmap.
* bitmap2Drawable: Bitmap в Drawable.
* view2Bitmap: View в Bitmap.
* shotActivity: снимок Activity.
* createBitmap: создание пустого Bitmap.
* addBitmapShadows: добавление теней к Bitmap.
* zoomImg: уменьшение изображения с сохранением пропорций.
* setRendScriptCacheDir: настройка высокого размытия, может привести к сбою приложения на Android 7.0.
**Общие намерения → [IntentUtils.kt][IntentUtils]**
* isIntentAvailable: проверка наличия Intent.
* startIntent: запуск Intent. **getSettingIntent**: переход в настройки.
**getWiFiIntent**: неявное включение Wi-Fi.
**getDirectWiFiIntent**: прямое включение Wi-Fi.
**getRoamingIntent**: переход к настройкам мобильной сети.
**getPermissionIntent**: открытие настроек разрешений.
**getLocationIntent**: включение настроек геолокации.
**getBluetoothIntent**: включение настроек Bluetooth.
**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**: нажать на пустую область экрана, чтобы скрыть программную клавиатуру.
* * *
**dispatchKeyEvent**: управление скоростью нажатия клавиш.
* * *
**listKeyUp**: цикл вверх.
**listKeyDown**: цикл вниз.
**listKeyLeft**: цикл влево.
**listKeyRight**: цикл вправо.
**listPageUp**: цикл перелистывания вверх.
**listPageDown**: цикл перелистывания вниз.
* * *
**TIMESTAMP_LIVE_DATA**: время в секундах.
**MILL_TIMESTAMP_LIVE_DATA**: время в миллисекундах.
**timer**: таймер.
* * *
**gcd**: наибольший общий делитель.
**fraction**: деление.
* * *
**getKey**: чтение ключа мультимедийной информации.
**getAlbum**: чтение альбома мультимедийной информации.
**getArtist**: чтение исполнителя мультимедийной информации.
**getAuthor**: чтение автора мультимедийной информации.
**getDate**: чтение даты мультимедийной информации.
**getGenre**: чтение жанра мультимедийной информации.
**getTitle**: чтение названия мультимедийной информации.
**getYear**: чтение года мультимедийной информации.
**getDuration**: чтение длительности мультимедийной информации.
**getMimeType**: чтение типа мультимедийной информации.
**getHasAudio**: проверка наличия аудио в мультимедийной информации.
**getHasVideo**: проверка наличия видео в мультимедийной информации.
**getWidth**: чтение ширины мультимедийной информации.
**getHeight**: чтение высоты мультимедийной информации.
**getBitrate**: чтение битрейта мультимедийной информации.
* * *
**getActiveNetworkInfo**: получение активной сетевой информации.
**isConnected**: проверка подключения к сети.
**isAvailableByPing**: определение доступности сети по ping.
**isMobileDataEnabled**: проверка доступности мобильной передачи данных.
**setMobileDataEnabled**: включить или отключить мобильную передачу данных (отбрасывает недоступные).
**is4G**: проверка 4G-сети.
**isWiFiEnabled**: проверка включения Wi-Fi.
**setWiFiEnabled**: включить или выключить Wi-Fi.
**isEthConnected**: проверка соединения Ethernet.
**isEthAvailable**: проверка доступности Ethernet.
**isWiFiConnected**: проверка соединения Wi-Fi.
**isWiFiAvailable**: проверка доступности Wi-Fi.
**isWiFiAvailableByPing**: проверка доступности Wi-Fi по ping.
**getNetworkOperatorName**: получение имени сетевого оператора.
**getNetworkType**: получение текущего типа сети.
**getIPAddress**: получение IP-адреса сети.
**getDomainAddress**: получение адреса домена по IP.
**readMac**: чтение MAC-адреса: приоритет Eth, если Eth пуст, то WiFi.
**getMac**: получение MAC-адреса: использование Eth при наличии, в противном случае — WiFi.
**getWiredMac**: получение проводного MAC-адреса.
**getWirelessMac**: получение беспроводного MAC-адреса.
**formatTcpSpeed**: форматирование скорости TCP.
**formatNetSpeed**: форматирование сетевой скорости.
* * *
**number**: анализ числовых значений/оценок.
**timestamp**: анализ текстовых значений времени.
**year**: анализ текстового значения года.
* * *
**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-данным приложения на внешнем накопителе.
**Также в запросе есть фрагменты кода на разных языках программирования, которые не были переведены.** Данный текст представляет собой фрагмент исходного кода на языке Kotlin.
В тексте содержатся объявления функций, которые связаны с преобразованием времени и дат, а также с наблюдением за макетом View и использованием WebView. Кроме того, в тексте упоминаются классы WeakHandler и HanziToPinyin.
Также в тексте есть информация о библиотеке BaseToolsLibrary, её версиях и авторах.
К сожалению, без контекста невозможно точно определить, что делает каждая функция и класс, поэтому перевод может быть неполным или неточным. Вот перевод текста:
string2Millisec : преобразование строки времени в миллисекунды date2String : преобразование Date в строку времени getTimeSpan : получение разницы между двумя временами getNowTimeMillis : получение текущего времени в миллисекундах getNowTimeDate : получение текущей даты getNowTimeString : получение текущего времени в виде строки getTimeSpanByNow : получение разницы между текущим временем и другим временем isSameDay : проверка, является ли время тем же днём isToday : проверка, является ли время сегодняшним getTodayZero : получение нулевого значения текущего дня isLeapYear : проверка, является ли год високосным getWeek : получение номера недели getWeekOfMonth : получение номера недели месяца getWeekOfYear : получение номера недели года getChineseZodiac : получение знака зодиака по китайскому календарю getZodiac : получение знака зодиака is24HoursFormat : проверка формата времени на 24-часовой формат seconds2String : преобразование секунд в формат «минуты: секунды» в виде строки milliSeconds2String : преобразование миллисекунд в формат «минуты: секунды» в виде строки seconds2HourString : преобразование секунд в формат «часы: минуты: секунды» в виде строки milliSeconds2HourString : преобразование миллисекунд в формат «часы: минуты: секунды» в виде строки createSimpleDateFormat : создание формата времени
> - **View相关→[ViewUtils.kt][ViewUtils]**
observeViewLayout : наблюдение за завершением отрисовки макета observeViewLayoutForever : наблюдение за завершением отрисовки макета навсегда
> - **WebView相关→[WebViewUtils.java][WebViewUtils]**
callOnWebviewThread : отправка команды JS callJavaScript : отправка команды JS hookWebView : обход проверки UID системы для приложения с правами root
## Assist
> - **WeakHandler转载→[WeakHandler.java][WeakHandler]**
WeakHandler : описание использования, оптимизация производительности, предотвращение утечек памяти
> - **HanziToPinyin转载→[HanziToPinyin.java][HanziToPinyin]**
HanziToPinyin : класс для преобразования китайских иероглифов в пиньинь на Android
## Версия обновления
| версия | описание |
|------------------------- | -------------------------------------------------------------- |
| [1.3.1][BaseToolsV1.3.1] | добавлены инструменты и методы **2022-05-27** |
| [1.3.0][BaseToolsV1.3.0] | переведён на Kotlin **2022-04-15** |
| [1.2.9][BaseToolsV1.2.9] | добавлен ListAdapter, дополнены некоторые инструменты **2020-08-24** |
| [1.2.8][BaseToolsV1.2.8] | совместимость с AndroidX **2020-04-09** |
| [1.2.7][BaseToolsV1.2.7] | добавлены новые инструменты **2019-10-15** |
| [1.2.6][BaseToolsV1.2.6] | добавлены новые инструменты, оптимизирован адаптер **2018-9-13** |
| [1.2.5][BaseToolsV1.2.5] | оптимизированы события наблюдения RecyclerView, исправлены ошибки в нескольких менеджерах компоновки **2018-3-7** |
| [1.2.4][BaseToolsV1.2.4] | добавлено: включено DataBinding, ListView, GridView, RecyclerView универсальный адаптер, некоторые вспомогательные методы **2017-10-18** |
| [1.2.3][BaseToolsV1.2.3] | добавлен универсальный адаптер ViewPager; расширены инструменты: файлы, ресурсы, рефлексия, клавиатура и т. д. **2017-7-21** |
| [1.2.2][BaseToolsV1.2.2] | расширено хранилище конфигурационных файлов **2017-5-12** |
| [1.2.1][BaseToolsV1.2.1] | поддержка универсальных адаптеров для различных макетов **2017-4-20** |
| [1.2.0][BaseToolsV1.2.0] | добавлены сетевые инструменты, инструменты для пиньиня, инструменты для обработки исключений и другие **2017-4-13** |
| [1.1.0][BaseToolsV1.1.0] | в Utils добавлены некоторые общие инструменты: приложение, база данных, разрешение экрана, файл, регулярное выражение, команда, время и т.д. **2017-2-23** |
| [1.0.0][BaseToolsV1.0.0] | создан ListView, GridView, RecyclerView универсальный адаптер и некоторые вспомогательные методы **2016-12-20** | **Конвертация данных**: ConvertUtils
**Работа с базой данных**: DBUtils
**Плотность отображения**: DensityUtils
**Информация об устройстве**: DeviceUtils
**Проверка на пустоту**: EmptyUtils
**Шифрование и расшифровка данных**: EncryptUtils
**Обработка исключений**: ExceptionUtils
**Файловый ввод-вывод**: FileIOUtils
**Операции с файлами**: FileUtils
**Обработчики событий**: HandlerUtils
**HTTP-запросы**: HttpUtils
**Изображения**: ImageUtils
**Намерения**: IntentUtils
**Клавиатура**: KeyboardUtils
**Контроллер клавиш**: KeyController
**События клавиатуры**: KeyEventUtils
**LiveData**: LiveDataUtils
**Математические операции**: MathUtils
**Мультимедиа**: MediaUtils
**Сеть**: NetworkUtils
**Парсинг**: ParseUtils
**Путь к файлу**: PathUtils
**Пиньинь**: PinyinUtils
**Рефлексия**: ReflectUtils
**Регулярные выражения**: RegexUtils
**Ресурсы**: ResourceUtils
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )