├── entry ├── .gitignore ├── src │ └── main │ │ ├── resources │ │ ├── rawfile │ │ │ ├── A.gif │ │ │ └── A.png │ │ └── base │ │ │ ├── media │ │ │ ├── A.png │ │ │ ├── B.jpg │ │ │ └── icon.png │ │ │ ├── graphic │ │ │ ├── background_ability_gif.xml │ │ │ ├── background_ability_list.xml │ │ │ ├── background_ability_local.xml │ │ │ ├── background_ability_main.xml │ │ │ ├── background_ability_second.xml │ │ │ ├── background_ability_server.xml │ │ │ └── background_ability_resources_change.xml │ │ │ ├── layout │ │ │ ├── ability_gif.xml │ │ │ ├── ability_server.xml │ │ │ ├── ability_local.xml │ │ │ ├── ability_list.xml │ │ │ ├── ability_two.xml │ │ │ ├── ability_second.xml │ │ │ ├── list_item_layout.xml │ │ │ ├── ability_resources_change.xml │ │ │ └── ability_main.xml │ │ │ └── element │ │ │ └── string.json │ │ ├── java │ │ └── com │ │ │ └── istone │ │ │ └── myapplication │ │ │ ├── HarmonyOS.java │ │ │ ├── GifAbility.java │ │ │ ├── ListAbility.java │ │ │ ├── LocalAbility.java │ │ │ ├── ServerAbility.java │ │ │ ├── ResourcesChangeAbility.java │ │ │ ├── MainAbility.java │ │ │ ├── slice │ │ │ ├── BAbilitySlice.java │ │ │ ├── ResourcesChangeAbilitySlice.java │ │ │ ├── GifAbilitySlice.java │ │ │ ├── ServerAbilitySlice.java │ │ │ ├── LocalAbilitySlice.java │ │ │ ├── MainAbilitySlice.java │ │ │ └── ListAbilitySlice.java │ │ │ ├── domain │ │ │ └── TopicDomain.java │ │ │ ├── utils │ │ │ └── LogUtils.java │ │ │ └── adapter │ │ │ └── TopicItemProvider.java │ │ └── config.json └── build.gradle ├── glidelibrary ├── .gitignore ├── src │ └── main │ │ ├── resources │ │ └── base │ │ │ ├── element │ │ │ └── string.json │ │ │ └── layout │ │ │ └── ability_main.xml │ │ ├── java │ │ └── com │ │ │ └── isotne │ │ │ └── glidelibrary │ │ │ ├── FileType.java │ │ │ ├── constant │ │ │ └── Constents.java │ │ │ ├── interceptor │ │ │ └── NetCacheInterceptor.java │ │ │ ├── cache │ │ │ ├── util │ │ │ │ ├── DiskLruCacheUtil.java │ │ │ │ ├── CacheUtils.java │ │ │ │ ├── MemoryCacheUtil.java │ │ │ │ ├── ImageUtils.java │ │ │ │ ├── Utils.java │ │ │ │ ├── DiskLruCacheImpl.java │ │ │ │ ├── StrictLineReader.java │ │ │ │ └── DiskLruCache.java │ │ │ └── loader │ │ │ │ └── CacheLoader.java │ │ │ ├── utils │ │ │ ├── LogUtils.java │ │ │ └── OhosGlide.java │ │ │ ├── okhttp │ │ │ └── OkHttpManager.java │ │ │ └── gif │ │ │ └── LoadGif.java │ │ └── config.json └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .idea ├── previewer │ ├── previewConfig.json │ └── phone │ │ └── phoneSettingConfig_106113203.json ├── vcs.xml ├── misc.xml └── gradle.xml ├── .gitignore ├── gradle.properties ├── gradlew.bat └── gradlew /entry/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /glidelibrary/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':entry', ':glidelibrary' 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/isoftstone-dev/Gilde_HarmonyOS/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /.idea/previewer/previewConfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "1.0.0": { 3 | "LastPreviewDevice": { 4 | "E:\\MyApplication\\entry": [] 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /entry/src/main/resources/rawfile/A.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/isoftstone-dev/Gilde_HarmonyOS/HEAD/entry/src/main/resources/rawfile/A.gif -------------------------------------------------------------------------------- /entry/src/main/resources/rawfile/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/isoftstone-dev/Gilde_HarmonyOS/HEAD/entry/src/main/resources/rawfile/A.png -------------------------------------------------------------------------------- /entry/src/main/resources/base/media/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/isoftstone-dev/Gilde_HarmonyOS/HEAD/entry/src/main/resources/base/media/A.png -------------------------------------------------------------------------------- /entry/src/main/resources/base/media/B.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/isoftstone-dev/Gilde_HarmonyOS/HEAD/entry/src/main/resources/base/media/B.jpg -------------------------------------------------------------------------------- /entry/src/main/resources/base/media/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/isoftstone-dev/Gilde_HarmonyOS/HEAD/entry/src/main/resources/base/media/icon.png -------------------------------------------------------------------------------- /glidelibrary/src/main/resources/base/element/string.json: -------------------------------------------------------------------------------- 1 | { 2 | "string": [ 3 | { 4 | "name": "app_name", 5 | "value": "GlideLibrary" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_gif.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_local.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_second.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_server.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/graphic/background_ability_resources_change.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /glidelibrary/src/main/java/com/isotne/glidelibrary/FileType.java: -------------------------------------------------------------------------------- 1 | package com.isotne.glidelibrary; 2 | 3 | /** 4 | * description glide 网络文件类型 5 | * 6 | * @author baihe 7 | * created 2021/2/8 11:53 8 | */ 9 | public enum FileType { 10 | /** 11 | * png gif 12 | */ 13 | PNG, GIF 14 | } 15 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/HarmonyOS.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import ohos.aafwk.ability.AbilityPackage; 4 | 5 | /** 6 | * description harmonyos 7 | * @author baihe 8 | * created 2021/2/8 14:51 9 | */ 10 | public class HarmonyOS extends AbilityPackage { 11 | @Override 12 | public void onInitialize() { 13 | 14 | super.onInitialize(); 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_gif.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /glidelibrary/src/main/java/com/isotne/glidelibrary/constant/Constents.java: -------------------------------------------------------------------------------- 1 | package com.isotne.glidelibrary.constant; 2 | 3 | /** 4 | * description 常量 5 | * 6 | * @author baihe 7 | * created 2021/2/8 14:37 8 | */ 9 | public class Constents { 10 | /** 11 | * 缓存目录 12 | */ 13 | public static final String DISK_CACHE_PATH = "cache"; 14 | /** 15 | * 缓存大小 16 | */ 17 | public static final long DISK_CACHE_SIZE = 10 * 1024 * 1024; 18 | } 19 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_server.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_local.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/previewer/phone/phoneSettingConfig_106113203.json: -------------------------------------------------------------------------------- 1 | { 2 | "setting": { 3 | "1.0.1": { 4 | "Language": { 5 | "args": { 6 | "Language": "zh-CN" 7 | } 8 | } 9 | } 10 | }, 11 | "frontend": { 12 | "1.0.0": { 13 | "Resolution": { 14 | "args": { 15 | "Resolution": "360*750" 16 | } 17 | }, 18 | "DeviceType": { 19 | "args": { 20 | "DeviceType": "phone" 21 | } 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/GifAbility.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import com.istone.myapplication.slice.GifAbilitySlice; 4 | import ohos.aafwk.ability.Ability; 5 | import ohos.aafwk.content.Intent; 6 | 7 | /** 8 | * description gif 9 | * @author baihe 10 | * created 2021/2/8 14:51 11 | */ 12 | public class GifAbility extends Ability { 13 | @Override 14 | public void onStart(Intent intent) { 15 | super.onStart(intent); 16 | super.setMainRoute(GifAbilitySlice.class.getName()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/ListAbility.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import com.istone.myapplication.slice.ListAbilitySlice; 4 | import ohos.aafwk.ability.Ability; 5 | import ohos.aafwk.content.Intent; 6 | 7 | /** 8 | * description list 9 | * @author baihe 10 | * created 2021/2/8 14:50 11 | */ 12 | public class ListAbility extends Ability { 13 | @Override 14 | public void onStart(Intent intent) { 15 | super.onStart(intent); 16 | super.setMainRoute(ListAbilitySlice.class.getName()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/LocalAbility.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import com.istone.myapplication.slice.LocalAbilitySlice; 4 | import ohos.aafwk.ability.Ability; 5 | import ohos.aafwk.content.Intent; 6 | 7 | /** 8 | *description local 9 | *@author baihe 10 | *created 2021/2/8 14:52 11 | * 12 | */ 13 | public class LocalAbility extends Ability { 14 | @Override 15 | public void onStart(Intent intent) { 16 | super.onStart(intent); 17 | super.setMainRoute(LocalAbilitySlice.class.getName()); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/ServerAbility.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import com.istone.myapplication.slice.ServerAbilitySlice; 4 | import ohos.aafwk.ability.Ability; 5 | import ohos.aafwk.content.Intent; 6 | 7 | /** 8 | * description server 9 | * @author baihe 10 | * created 2021/2/8 14:51 11 | */ 12 | public class ServerAbility extends Ability { 13 | @Override 14 | public void onStart(Intent intent) { 15 | super.onStart(intent); 16 | super.setMainRoute(ServerAbilitySlice.class.getName()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /glidelibrary/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.huawei.ohos.library' 2 | ohos { 3 | compileSdkVersion 4 4 | defaultConfig { 5 | compatibleSdkVersion 4 6 | } 7 | 8 | } 9 | 10 | dependencies { 11 | implementation fileTree(dir: 'libs', include: ['*.jar']) 12 | implementation 'com.squareup.okhttp3:okhttp:4.4.0' 13 | implementation 'com.github.bumptech.glide:glide:4.4.0' 14 | annotationProcessor 'com.github.bumptech.glide:compiler:4.4.0' 15 | implementation 'com.jakewharton:disklrucache:2.0.2' 16 | testCompile'junit:junit:4.12' 17 | } 18 | -------------------------------------------------------------------------------- /glidelibrary/src/main/resources/base/layout/ability_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. DevEco Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | # If the Chinese output is garbled, please configure the following parameter. 10 | # org.gradle.jvmargs=-Dfile.encoding=GBK 11 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/ResourcesChangeAbility.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import com.istone.myapplication.slice.ResourcesChangeAbilitySlice; 4 | import ohos.aafwk.ability.Ability; 5 | import ohos.aafwk.content.Intent; 6 | 7 | /** 8 | * description resources 9 | * @author baihe 10 | * created 2021/2/8 14:51 11 | */ 12 | public class ResourcesChangeAbility extends Ability { 13 | @Override 14 | public void onStart(Intent intent) { 15 | super.onStart(intent); 16 | super.setMainRoute(ResourcesChangeAbilitySlice.class.getName()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 15 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_two.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_second.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/MainAbility.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication; 2 | 3 | import com.istone.myapplication.slice.BAbilitySlice; 4 | import com.istone.myapplication.slice.MainAbilitySlice; 5 | import ohos.aafwk.ability.Ability; 6 | import ohos.aafwk.content.Intent; 7 | 8 | /** 9 | * description main 10 | * @author baihe 11 | * created 2021/2/8 14:50 12 | */ 13 | public class MainAbility extends Ability { 14 | @Override 15 | public void onStart(Intent intent) { 16 | super.onStart(intent); 17 | super.setMainRoute(MainAbilitySlice.class.getName()); 18 | addActionRoute("action.goto.page", BAbilitySlice.class.getName()); 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/slice/BAbilitySlice.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication.slice; 2 | 3 | import com.istone.myapplication.ResourceTable; 4 | import ohos.aafwk.ability.AbilitySlice; 5 | import ohos.aafwk.content.Intent; 6 | 7 | /** 8 | * description resourcesslice 9 | * 10 | * @author baihe 11 | * created 2021/2/8 14:52 12 | */ 13 | public class BAbilitySlice extends AbilitySlice { 14 | 15 | @Override 16 | public void onStart(Intent intent) { 17 | super.onStart(intent); 18 | super.setUIContent(ResourceTable.Layout_ability_resources_change); 19 | 20 | } 21 | 22 | @Override 23 | public void onActive() { 24 | super.onActive(); 25 | } 26 | 27 | @Override 28 | public void onForeground(Intent intent) { 29 | super.onForeground(intent); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/list_item_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 16 | 21 | 25 | -------------------------------------------------------------------------------- /entry/src/main/java/com/istone/myapplication/domain/TopicDomain.java: -------------------------------------------------------------------------------- 1 | package com.istone.myapplication.domain; 2 | 3 | 4 | /** 5 | * description list domain 6 | * 7 | * @author baihe 8 | * created 2021/2/8 14:37 9 | */ 10 | public class TopicDomain { 11 | /** 12 | * topic 13 | */ 14 | private String topic; 15 | /** 16 | * url 17 | */ 18 | private String url; 19 | 20 | public TopicDomain(String topic, String url) { 21 | this.topic = topic; 22 | this.url = url; 23 | 24 | } 25 | 26 | public String getTopic() { 27 | return topic; 28 | } 29 | 30 | public void setTopic(String topic) { 31 | this.topic = topic; 32 | } 33 | 34 | public String getUrl() { 35 | return url; 36 | } 37 | 38 | public void setUrl(String url) { 39 | this.url = url; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /entry/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.huawei.ohos.hap' 2 | ohos { 3 | signingConfigs { 4 | debug { 5 | storeFile file('D:/keystore.p12') 6 | storePassword '0000001C7688E2D7631C7D58FCC70E03015ECA5A955E6ADC78A7F0B119A36EEB6AAD3AD6C78D35BA70F7D2D1' 7 | keyAlias 'keystore' 8 | keyPassword '0000001C7E6B08B19B7DADEC085D2DA48449510520B84BD1DA40759BF553E0B74029FB8926E204A8619FE83D' 9 | signAlg 'SHA256withECDSA' 10 | profile file('D:/ohosGlideDebug.p7b') 11 | certpath file('D:/keystore.cer') 12 | } 13 | } 14 | compileSdkVersion 4 15 | defaultConfig { 16 | compatibleSdkVersion 3 17 | } 18 | } 19 | 20 | dependencies { 21 | implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) 22 | testCompile'junit:junit:4.12' 23 | implementation project(path: ':glidelibrary') 24 | } 25 | -------------------------------------------------------------------------------- /glidelibrary/src/main/java/com/isotne/glidelibrary/interceptor/NetCacheInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.isotne.glidelibrary.interceptor; 2 | 3 | import okhttp3.Interceptor; 4 | import okhttp3.Request; 5 | import okhttp3.Response; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * description 网络拦截器 11 | * 12 | * @author baihe 13 | * created 2021/2/8 14:35 14 | */ 15 | public class NetCacheInterceptor implements Interceptor { 16 | @Override 17 | public Response intercept(Chain chain) throws IOException { 18 | Request request = chain.request(); 19 | Response originResponse = chain.proceed(request); 20 | 21 | //设置响应的缓存时间为60秒,即设置Cache-Control头,并移除pragma消息头,因为pragma也是控制缓存的一个消息头属性 22 | originResponse = originResponse.newBuilder() 23 | .removeHeader("pragma") 24 | .header("Cache-Control", "max-age=60") 25 | .build(); 26 | 27 | return originResponse; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /entry/src/main/resources/base/layout/ability_resources_change.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 16 |