+Copyright 2017 Tuyen Monkey
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
+ http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index c4192631f25b34d77a7f159aa0da0e3ae99c4ef4..0000000000000000000000000000000000000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-cayman
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
deleted file mode 100644
index 3a562cf1429c6aef443b8388d81f9d32f0535ca6..0000000000000000000000000000000000000000
--- a/app/build.gradle
+++ /dev/null
@@ -1,35 +0,0 @@
-apply plugin: 'com.android.application'
-
-android {
- compileSdkVersion rootProject.ext.compileSdkVersion
- buildToolsVersion rootProject.ext.buildToolsVersion
- defaultConfig {
- applicationId "com.tuyenmonkey.sample"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode rootProject.ext.versionCode
- versionName rootProject.ext.versionName
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
- exclude group: 'com.android.support', module: 'support-annotations'
- })
- compile "com.android.support:appcompat-v7:${supportLibVersion}"
- compile "com.android.support:recyclerview-v7:${supportLibVersion}"
- testCompile 'junit:junit:4.12'
- compile project(':library')
-
- debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
- releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
- testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
-}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
deleted file mode 100644
index 8813ceee80f3d0523df01ebe636e70a08296a12f..0000000000000000000000000000000000000000
--- a/app/proguard-rules.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /Users/Tiki/Library/Android/sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/app/src/androidTest/java/com/tuyenmonkey/sample/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/tuyenmonkey/sample/ExampleInstrumentedTest.java
deleted file mode 100644
index 46f18db2f93a1332483c8d1ce790e4aefc254bde..0000000000000000000000000000000000000000
--- a/app/src/androidTest/java/com/tuyenmonkey/sample/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest {
- @Test public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("com.tuyenmonkey.sample", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 73b8ddd95a1ebd9816d44168a3628c301987717a..0000000000000000000000000000000000000000
--- a/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/tuyenmonkey/sample/App.java b/app/src/main/java/com/tuyenmonkey/sample/App.java
deleted file mode 100644
index 558c9d1e6e7a76025c6bd2de857b9af92c72d27d..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/tuyenmonkey/sample/App.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import android.app.Application;
-import com.squareup.leakcanary.LeakCanary;
-
-/**
- * Created by Tuyen Monkey on 3/10/17.
- */
-
-public class App extends Application {
-
- @Override public void onCreate() {
- super.onCreate();
-
- LeakCanary.install(this);
- }
-}
diff --git a/app/src/main/java/com/tuyenmonkey/sample/ContactsAdapter.java b/app/src/main/java/com/tuyenmonkey/sample/ContactsAdapter.java
deleted file mode 100644
index ed809a02267531108b83da9eb97b158bcfd0f287..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/tuyenmonkey/sample/ContactsAdapter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Created by Tuyen Monkey on 8/1/17.
- */
-
-public class ContactsAdapter extends RecyclerView.Adapter {
- private List contacts;
-
- public ContactsAdapter() {
- contacts = new ArrayList<>();
-
- for (int i = 0; i < 100; i++) {
- contacts.add(String.format(Locale.US, "contact %d", i));
- }
- }
-
- @Override public ContactViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
- View itemView = inflater.inflate(R.layout.item_contact, parent, false);
- return new ContactViewHolder(itemView);
- }
-
- @Override public void onBindViewHolder(ContactViewHolder holder, int position) {
- final String contact = contacts.get(position);
- holder.bind(contact);
- }
-
- @Override public int getItemCount() {
- return contacts != null ? contacts.size() : 0;
- }
-
- public static class ContactViewHolder extends RecyclerView.ViewHolder {
- TextView tvName;
-
- public ContactViewHolder(View itemView) {
- super(itemView);
- tvName = (TextView)itemView.findViewById(R.id.tvName);
- }
-
- public void bind(String contact) {
- tvName.setText(contact);
- }
- }
-}
diff --git a/app/src/main/java/com/tuyenmonkey/sample/ListTestActivity.java b/app/src/main/java/com/tuyenmonkey/sample/ListTestActivity.java
deleted file mode 100644
index da6e4e40301af1cbf9df57ae42cf579c8e811510..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/tuyenmonkey/sample/ListTestActivity.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-
-/**
- * Created by Tuyen Monkey on 8/1/17.
- */
-
-public class ListTestActivity extends AppCompatActivity {
- RecyclerView rvContacts;
-
- private ContactsAdapter adapter;
-
- @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_list_test);
-
- rvContacts = (RecyclerView)findViewById(R.id.rvContacts);
-
- adapter = new ContactsAdapter();
-
- rvContacts.setAdapter(adapter);
- rvContacts.setLayoutManager(new LinearLayoutManager(this));
- }
-}
diff --git a/app/src/main/java/com/tuyenmonkey/sample/MainActivity.java b/app/src/main/java/com/tuyenmonkey/sample/MainActivity.java
deleted file mode 100644
index 387b61ab8bdf21d9fdd6ee5cc4d6063e671b2c6a..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/tuyenmonkey/sample/MainActivity.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-
-public class MainActivity extends AppCompatActivity {
-
- @Override protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_loader1);
- }
-}
diff --git a/app/src/main/java/com/tuyenmonkey/sample/TestActivity.java b/app/src/main/java/com/tuyenmonkey/sample/TestActivity.java
deleted file mode 100644
index f62ce136c8cbf8404d1fab38bc68e38196c99bf6..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/tuyenmonkey/sample/TestActivity.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.app.AppCompatActivity;
-
-/**
- * Created by Tuyen Monkey on 3/10/17.
- */
-
-public class TestActivity extends AppCompatActivity {
-
- public static Intent getCallingIntent(Context context) {
- return new Intent(context, TestActivity.class);
- }
-
- @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_test);
- }
-}
diff --git a/app/src/main/res/layout/activity_list_test.xml b/app/src/main/res/layout/activity_list_test.xml
deleted file mode 100644
index b359db721416fadc4af1c76664f4fe37f4e32e0f..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/activity_list_test.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_loader1.xml b/app/src/main/res/layout/activity_loader1.xml
deleted file mode 100644
index 921d06b02e1d433123a5abdd66fd062a65410f31..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/activity_loader1.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_loader2.xml b/app/src/main/res/layout/activity_loader2.xml
deleted file mode 100644
index f67ef22c8dc2112fc58e31805b6d2db80d6fd3d6..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/activity_loader2.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml
deleted file mode 100644
index ba4d0cc7efa139a3ed12191ce6357fe5e782fc89..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/activity_test.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_contact.xml b/app/src/main/res/layout/item_contact.xml
deleted file mode 100644
index c23cb97b76333c0cffa67c56514a5a6672f594c4..0000000000000000000000000000000000000000
--- a/app/src/main/res/layout/item_contact.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index cde69bcccec65160d92116f20ffce4fce0b5245c..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index c133a0cbd379f5af6dbf1a899a0293ca5eccfad0..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bfa42f0e7b91d006d22352c9ff2f134e504e3c1d..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 324e72cdd7480cb983fa1bcc7ce686e51ef87fe7..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index aee44e138434630332d88b1680f33c4b24c70ab3..0000000000000000000000000000000000000000
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml
deleted file mode 100644
index 308a1947aff5c01e627df392276d1f06cdd73b95..0000000000000000000000000000000000000000
--- a/app/src/main/res/values-w820dp/dimens.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- 64dp
-
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
deleted file mode 100644
index 5a077b3a78f713f74f666c1bc67f2f0d05f0f0d7..0000000000000000000000000000000000000000
--- a/app/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- #3F51B5
- #303F9F
- #FF4081
-
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
deleted file mode 100644
index acf94cc67b3ce250848c9f601eac7596c15e9ed8..0000000000000000000000000000000000000000
--- a/app/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- 16dp
- 16dp
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
deleted file mode 100644
index 509a7a2dfda919d98a097578a218daa6bffd4348..0000000000000000000000000000000000000000
--- a/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- MK Loader
-
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
deleted file mode 100644
index c5bc7da44a327064fb857a21e85252f3ad323a49..0000000000000000000000000000000000000000
--- a/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/test/java/com/tuyenmonkey/sample/ExampleUnitTest.java b/app/src/test/java/com/tuyenmonkey/sample/ExampleUnitTest.java
deleted file mode 100644
index 86c93c61b34e3021874b32b4489d01433a66016f..0000000000000000000000000000000000000000
--- a/app/src/test/java/com/tuyenmonkey/sample/ExampleUnitTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.tuyenmonkey.sample;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 18f382a3b0816cce6b26412af127564f86dd28c0..0f37d1b371f1632aaf2af4a2814463596cc0ddf0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,35 +1,37 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
-buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:2.3.0'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- jcenter()
- }
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
}
-ext {
- buildToolsVersion = "25.0.2"
- compileSdkVersion = 25
- targetSdkVersion = compileSdkVersion
- minSdkVersion = 11
-
- versionCode = 3
- versionName = "1.3.0"
-
- supportLibVersion = '25.1.0'
+buildscript {
+ repositories {
+ maven {
+ url 'https://mirrors.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.huawei.ohos:hap:2.4.2.5'
+ classpath 'com.huawei.ohos:decctest:1.0.0.6'
+ }
}
-task clean(type: Delete) {
- delete rootProject.buildDir
+allprojects {
+ repositories {
+ maven {
+ url 'https://mirrors.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
+ }
}
diff --git a/app/.gitignore b/entry/.gitignore
similarity index 100%
rename from app/.gitignore
rename to entry/.gitignore
diff --git a/entry/build.gradle b/entry/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..2c275c2e7b681469fd4956241e2b538b00462b2d
--- /dev/null
+++ b/entry/build.gradle
@@ -0,0 +1,13 @@
+apply plugin: 'com.huawei.ohos.hap'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ testCompile 'junit:junit:4.12'
+ compile project(path: ':library')
+}
diff --git a/entry/src/main/config.json b/entry/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..8b1d186b4f3eb8e2146e032b776c75dee7170087
--- /dev/null
+++ b/entry/src/main/config.json
@@ -0,0 +1,50 @@
+{
+ "app": {
+ "bundleName": "com.tuyenmonkey.sample",
+ "vendor": "tuyenmonkey",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.tuyenmonkey.sample",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone",
+ "tablet"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.tuyenmonkey.sample.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "HM_mkloader",
+ "type": "page",
+ "launchType": "standard"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/java/com/tuyenmonkey/sample/MainAbility.java b/entry/src/main/java/com/tuyenmonkey/sample/MainAbility.java
new file mode 100644
index 0000000000000000000000000000000000000000..5d41ef62c09eebc01e2b255c3c4945da8f95abae
--- /dev/null
+++ b/entry/src/main/java/com/tuyenmonkey/sample/MainAbility.java
@@ -0,0 +1,13 @@
+package com.tuyenmonkey.sample;
+
+import com.tuyenmonkey.sample.slice.MainAbilitySlice;
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setMainRoute(MainAbilitySlice.class.getName());
+ }
+}
diff --git a/entry/src/main/java/com/tuyenmonkey/sample/MyApplication.java b/entry/src/main/java/com/tuyenmonkey/sample/MyApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..487e9c6b42aeb2e29011d84c3387f5b2bac013f5
--- /dev/null
+++ b/entry/src/main/java/com/tuyenmonkey/sample/MyApplication.java
@@ -0,0 +1,11 @@
+package com.tuyenmonkey.sample;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+
+ }
+}
diff --git a/entry/src/main/java/com/tuyenmonkey/sample/slice/MainAbilitySlice.java b/entry/src/main/java/com/tuyenmonkey/sample/slice/MainAbilitySlice.java
new file mode 100644
index 0000000000000000000000000000000000000000..45b74d83c1d211b4e23ece47b553876f2378989b
--- /dev/null
+++ b/entry/src/main/java/com/tuyenmonkey/sample/slice/MainAbilitySlice.java
@@ -0,0 +1,31 @@
+package com.tuyenmonkey.sample.slice;
+
+import com.tuyenmonkey.mkloader.MKLoader;
+import com.tuyenmonkey.sample.ResourceTable;
+import ohos.aafwk.ability.AbilitySlice;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.element.Element;
+
+public class MainAbilitySlice extends AbilitySlice {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ initView();
+ }
+
+ private void initView() {
+ }
+
+ @Override
+ public void onActive() {
+ super.onActive();
+
+ }
+
+ @Override
+ public void onForeground(Intent intent) {
+ super.onForeground(intent);
+ }
+
+}
diff --git a/entry/src/main/resources/base/element/color.json b/entry/src/main/resources/base/element/color.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c9e03b77eae5ee965d6e7830ce58a4dd03be0b3
--- /dev/null
+++ b/entry/src/main/resources/base/element/color.json
@@ -0,0 +1,61 @@
+{
+ "color":[
+ {
+ "name":"red",
+ "value":"#ff0000"
+ },
+ {
+ "name":"colorPrimary",
+ "value":"#008577"
+ },
+ {
+ "name":"colorPrimaryDark",
+ "value":"#00574B"
+ },
+ {
+ "name":"colorAccent",
+ "value":"#D81B60"
+ },
+ {
+ "name": "holo_green_dark",
+ "value": "#ff669900"
+ },
+ {
+ "name": "white",
+ "value": "#ffffffff"
+ },
+ {
+ "name": "black",
+ "value": "#000000"
+ },
+ {
+ "name": "red_dark",
+ "value": "#CC0000"
+ },
+ {
+ "name": "blue_dark",
+ "value": "#0DC5C1"
+ },
+ {
+ "name": "blue",
+ "value": "#0099cc"
+ },
+ {
+ "name": "orange",
+ "value": "#ff8800"
+ },
+ {
+ "name": "gray",
+ "value": "#aaaaaa"
+ },
+ {
+ "name": "test",
+ "value": "#00000000"
+ },
+ {
+ "name": "pink",
+ "value": "#ff4081"
+ }
+ ]
+}
+
diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..5ce91a5b9cada85c72d0d9a48b89ba614fdc8301
--- /dev/null
+++ b/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,16 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "HM_mkloader"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "HelloWorld",
+ "value": "Hello World"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/entry/src/main/resources/base/graphic/background_ability_main.xml b/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 0000000000000000000000000000000000000000..47a2d3e00aea59206e521f2e2c2491c629528df9
--- /dev/null
+++ b/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/layout/ability_main.xml b/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b979e96d7f7dbb5a292827d66d889a1999dfd350
--- /dev/null
+++ b/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/media/icon.png b/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
Binary files /dev/null and b/entry/src/main/resources/base/media/icon.png differ
diff --git a/entry/src/test/java/com/tuyenmonkey/sample/ExampleTest.java b/entry/src/test/java/com/tuyenmonkey/sample/ExampleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..837fd742820f65c72ca64d4bf5dac2fb34de7df2
--- /dev/null
+++ b/entry/src/test/java/com/tuyenmonkey/sample/ExampleTest.java
@@ -0,0 +1,9 @@
+package com.tuyenmonkey.sample;
+
+import org.junit.Test;
+
+public class ExampleTest {
+ @Test
+ public void onStart() {
+ }
+}
diff --git a/gradle.properties b/gradle.properties
index 1f0ef10435ceded108777c0eaa962a788cc7f753..0daf1830fbdef07e50a44d74210c8c82f1b66278 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,32 +1,10 @@
# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
+# IDE (e.g. DevEco Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
-
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
-
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-# org.gradle.jvmargs=-Xmx1536m
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-org.gradle.parallel=true
-
-VERSION_NAME=1.5.0-SNAPSHOT
-VERSION_CODE=5
-GROUP=com.tuyenmonkey
-
-POM_DESCRIPTION=Beautiful and smooth custom loading views
-POM_URL=https://github.com/nntuyen/mkloader
-POM_SCM_URL=https://github.com/nntuyen/mkloader
-POM_SCM_CONNECTION=scm:git@github.com:nntuyen/mkloader.git
-POM_SCM_DEV_CONNECTION=scm:git@github.com:nntuyen/mkloader.git
-POM_LICENCE_NAME=The Apache Software License, Version 2.0
-POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
-POM_LICENCE_DIST=repo
-POM_DEVELOPER_ID=nntuyen
-POM_DEVELOPER_NAME=Tuyen Nguyen
+# If the Chinese output is garbled, please configure the following parameter.
+# org.gradle.jvmargs=-Dfile.encoding=GBK
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 13372aef5e24af05341d49695ee84e5f9b594659..490fda8577df6c95960ba7077c43220e5bb2c0d9 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 75a6086e88b30d511c6851e4c111ee2413cd8ed5..f59159e865d4b59feb1b8c44b001f62fc5d58df4 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Wed Mar 08 13:33:44 GMT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/gradlew b/gradlew
index 9d82f78915133e1c35a6ea51252590fb38efac2f..2fe81a7d95e4f9ad2c9b2a046707d36ceb3980b3 100755
--- a/gradlew
+++ b/gradlew
@@ -1,4 +1,20 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
##############################################################################
##
@@ -6,20 +22,38 @@
##
##############################################################################
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
-warn ( ) {
+warn () {
echo "$*"
}
-die ( ) {
+die () {
echo
echo "$*"
echo
@@ -30,6 +64,7 @@ die ( ) {
cygwin=false
msys=false
darwin=false
+nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
@@ -40,26 +75,11 @@ case "`uname`" in
MINGW* )
msys=true
;;
+ NONSTOP* )
+ nonstop=true
+ ;;
esac
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -85,7 +105,7 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -105,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
@@ -134,27 +154,30 @@ if $cygwin ; then
else
eval `echo args$i`="\"$arg\""
fi
- i=$((i+1))
+ i=`expr $i + 1`
done
case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
index aec99730b4e8fcd90b57a0e8e01544fea7c31a89..62bd9b9ccefea2b65ae41e5d9a545e2021b90a1d 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,90 +1,103 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/img/mkloader.gif b/img/mkloader.gif
new file mode 100644
index 0000000000000000000000000000000000000000..56f8416be9cf0ddcf36519cc0227dec8bb2a3555
Binary files /dev/null and b/img/mkloader.gif differ
diff --git a/library/build.gradle b/library/build.gradle
index a02f7bae6bde7a233b791ef460a647bdcee1ad85..312bc1c336a2b750048a182991e5872344e45dbf 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -1,31 +1,13 @@
-apply plugin: 'com.android.library'
-apply from: 'maven-push.gradle'
-
-android {
- compileSdkVersion rootProject.ext.compileSdkVersion
- buildToolsVersion rootProject.ext.buildToolsVersion
-
- defaultConfig {
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode rootProject.ext.versionCode
- versionName rootProject.ext.versionName
-
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+apply plugin: 'com.huawei.ohos.library'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
}
- }
+
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
- exclude group: 'com.android.support', module: 'support-annotations'
- })
- compile "com.android.support:appcompat-v7:${supportLibVersion}"
- testCompile 'junit:junit:4.12'
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ testCompile 'junit:junit:4.12'
}
diff --git a/library/gradle.properties b/library/gradle.properties
deleted file mode 100644
index 300c4dd4fa11527497e02c01a7a76ef02361a4b6..0000000000000000000000000000000000000000
--- a/library/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-POM_NAME=MkLoader
-POM_ARTIFACT_ID=mkloader
-POM_PACKAGING=aar
\ No newline at end of file
diff --git a/library/maven-push.gradle b/library/maven-push.gradle
deleted file mode 100644
index aa9c9993b9c3c7844b5424a9e076ae531fa04c59..0000000000000000000000000000000000000000
--- a/library/maven-push.gradle
+++ /dev/null
@@ -1,105 +0,0 @@
-apply plugin: 'maven'
-apply plugin: 'signing'
-
-def isReleaseBuild() {
- return VERSION_NAME.contains("SNAPSHOT") == false
-}
-
-def getReleaseRepositoryUrl() {
- return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
- : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
-}
-
-def getSnapshotRepositoryUrl() {
- return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
- : "https://oss.sonatype.org/content/repositories/snapshots/"
-}
-
-def getRepositoryUsername() {
- return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
-}
-
-def getRepositoryPassword() {
- return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
-}
-
-afterEvaluate { project ->
- uploadArchives {
- repositories {
- mavenDeployer {
- beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
- pom.groupId = GROUP
- pom.artifactId = POM_ARTIFACT_ID
- pom.version = VERSION_NAME
-
- repository(url: getReleaseRepositoryUrl()) {
- authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
- }
- snapshotRepository(url: getSnapshotRepositoryUrl()) {
- authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
- }
-
- pom.project {
- name POM_NAME
- packaging POM_PACKAGING
- description POM_DESCRIPTION
- url POM_URL
-
- scm {
- url POM_SCM_URL
- connection POM_SCM_CONNECTION
- developerConnection POM_SCM_DEV_CONNECTION
- }
-
- licenses {
- license {
- name POM_LICENCE_NAME
- url POM_LICENCE_URL
- distribution POM_LICENCE_DIST
- }
- }
-
- developers {
- developer {
- id POM_DEVELOPER_ID
- name POM_DEVELOPER_NAME
- }
- }
- }
- }
- }
- }
-
- signing {
- required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
- sign configurations.archives
- }
-
- task androidJavadocs(type: Javadoc) {
- if (!project.plugins.hasPlugin('kotlin-android')) {
- source = android.sourceSets.main.java.srcDirs
- }
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
- exclude '**/internal/*'
-
- if (JavaVersion.current().isJava8Compatible()) {
- options.addStringOption('Xdoclint:none', '-quiet')
- }
- }
-
- task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
- classifier = 'javadoc'
- from androidJavadocs.destinationDir
- }
-
- task androidSourcesJar(type: Jar) {
- classifier = 'sources'
- from android.sourceSets.main.java.sourceFiles
- }
-
- artifacts {
- archives androidSourcesJar
- archives androidJavadocsJar
- }
-}
\ No newline at end of file
diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro
deleted file mode 100644
index 8813ceee80f3d0523df01ebe636e70a08296a12f..0000000000000000000000000000000000000000
--- a/library/proguard-rules.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /Users/Tiki/Library/Android/sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/library/src/androidTest/java/com/tuyenmonkey/mkloader/ExampleInstrumentedTest.java b/library/src/androidTest/java/com/tuyenmonkey/mkloader/ExampleInstrumentedTest.java
deleted file mode 100644
index 1bb74c1954605776f4a4b82a6e4e0ff41e9e3c8a..0000000000000000000000000000000000000000
--- a/library/src/androidTest/java/com/tuyenmonkey/mkloader/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.tuyenmonkey.mkloader;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest {
- @Test public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("com.tuyenmonkey.mkloader.test", appContext.getPackageName());
- }
-}
diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml
deleted file mode 100644
index 61a7420d228de2f164b379bb4803ab21c9ac325e..0000000000000000000000000000000000000000
--- a/library/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/library/src/main/config.json b/library/src/main/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..f145db610322e56b984295fdc53ef310e11fa64f
--- /dev/null
+++ b/library/src/main/config.json
@@ -0,0 +1,27 @@
+{
+ "app": {
+ "bundleName": "com.tuyenmonkey.sample",
+ "vendor": "tuyenmonkey",
+ "version": {
+ "code": 1,
+ "name": "1.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5,
+ "releaseType": "Beta1"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.tuyenmonkey.mkloader",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "library",
+ "moduleType": "har"
+ }
+ }
+}
\ No newline at end of file
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/MKLoader.java b/library/src/main/java/com/tuyenmonkey/mkloader/MKLoader.java
index 1895ebe90ffffd56b4219db0ebd0f50d16034613..6381f9a73bfba768627e84287aff14458f8e2275 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/MKLoader.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/MKLoader.java
@@ -1,20 +1,21 @@
package com.tuyenmonkey.mkloader;
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.util.AttributeSet;
-import android.view.View;
import com.tuyenmonkey.mkloader.callback.InvalidateListener;
import com.tuyenmonkey.mkloader.type.LoaderView;
import com.tuyenmonkey.mkloader.util.LoaderGenerator;
+import ohos.agp.utils.Color;
+import ohos.agp.components.AttrSet;
+import ohos.agp.components.Component;
+import ohos.agp.render.Canvas;
+
+import ohos.app.Context;
/**
* Created by Tuyen Nguyen on 2/5/17.
*/
-public class MKLoader extends View implements InvalidateListener {
+public class MKLoader extends Component implements Component.BindStateChangedListener,InvalidateListener,
+ Component.DrawTask {
private LoaderView loaderView;
public MKLoader(Context context) {
@@ -22,60 +23,49 @@ public class MKLoader extends View implements InvalidateListener {
initialize(context, null, 0);
}
- public MKLoader(Context context, AttributeSet attrs) {
+ public MKLoader(Context context, AttrSet attrs) {
super(context, attrs);
initialize(context, attrs, 0);
}
- public MKLoader(Context context, AttributeSet attrs, int defStyleAttr) {
+ public MKLoader(Context context, AttrSet attrs, String defStyleAttr) {
super(context, attrs, defStyleAttr);
- initialize(context, attrs, defStyleAttr);
}
- private void initialize(Context context, AttributeSet attrs, int defStyleAttr) {
- TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MKLoader);
- int loaderType = typedArray.getInt(R.styleable.MKLoader_mk_type,-1);
-
- loaderView = LoaderGenerator.generateLoaderView(loaderType);
- loaderView.setColor(typedArray.getColor(R.styleable.MKLoader_mk_color, Color.parseColor("#ffffff")));
-
- typedArray.recycle();
+ private void initialize(Context context, AttrSet attrs, int defStyleAttr) {
+ int loaderType = attrs.getAttr("mk_type").get().getIntegerValue();
+ loaderView = LoaderGenerator.generateLoaderView(context,loaderType);
+ loaderView.setSize();
+ loaderView.initializeObjects();
+ this.setBindStateChangedListener(this);
+ invalidate();
+ }
+ @Override
+ public void invalidate() {
+ addDrawTask(this::onDraw);
}
- @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- final int measuredWidth = resolveSize(loaderView.getDesiredWidth(), widthMeasureSpec);
- final int measuredHeight = resolveSize(loaderView.getDesiredHeight(), heightMeasureSpec);
-
- setMeasuredDimension(measuredWidth, measuredHeight);
+ @Override
+ public void onDraw(Component component, Canvas canvas) {
+ this.loaderView.draw(canvas);
}
- @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- loaderView.setSize(getWidth(), getHeight());
- loaderView.initializeObjects();
- loaderView.setUpAnimation();
+ @Override
+ public void onComponentBoundToWindow(Component component) {
+ loaderView.setInvalidateListener(this);
+ loaderView.setUpAnimation();
}
- @Override protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- loaderView.draw(canvas);
+ @Override
+ public void onComponentUnboundFromWindow(Component component) {
+ loaderView.onDetach();
}
- @Override public void reDraw() {
+ @Override
+ public void reDraw() {
invalidate();
}
+}
+
- @Override protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- if (loaderView != null && loaderView.isDetached()) {
- loaderView.setInvalidateListener(this);
- }
- }
- @Override protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
- if (loaderView != null) {
- loaderView.onDetach();
- }
- }
-}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/model/Arc.java b/library/src/main/java/com/tuyenmonkey/mkloader/model/Arc.java
index b5a28b18ec03d5413b12d326ac05a2f7bc24c4c1..8c62282e2ceb73cbba6913ea907c647412d82a6c 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/model/Arc.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/model/Arc.java
@@ -1,19 +1,20 @@
package com.tuyenmonkey.mkloader.model;
-import android.graphics.Canvas;
-import android.graphics.RectF;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.RectFloat;
/**
* Created by Tuyen Nguyen on 2/13/17.
*/
public class Arc extends GraphicObject {
- private RectF oval;
+ private RectFloat oval;
private float startAngle;
private float sweepAngle;
private boolean useCenter;
+ private ohos.agp.render.Arc mInnerCircleArc;
- public void setOval(RectF oval) {
+ public void setOval(RectFloat oval) {
this.oval = oval;
}
@@ -34,6 +35,8 @@ public class Arc extends GraphicObject {
}
@Override public void draw(Canvas canvas) {
- canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint);
+ mInnerCircleArc = new ohos.agp.render.Arc();
+ mInnerCircleArc.setArc( startAngle, sweepAngle, useCenter);
+ canvas.drawArc(oval,mInnerCircleArc, paint);
}
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/model/Circle.java b/library/src/main/java/com/tuyenmonkey/mkloader/model/Circle.java
index 41e094975ac5bac0f64513ab786fb0f46616ef3b..a4b9caad73c3340ad965b19ba1cd9cd6e850081b 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/model/Circle.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/model/Circle.java
@@ -1,29 +1,29 @@
package com.tuyenmonkey.mkloader.model;
-import android.graphics.Canvas;
-import android.graphics.PointF;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.Point;
/**
* Created by Tuyen Nguyen on 2/10/17.
*/
public class Circle extends GraphicObject {
- private PointF center;
+ private Point center;
private float radius;
public Circle() {
- center = new PointF();
+ center = new Point();
}
public void setRadius(float radius) {
this.radius = radius;
}
- public void setCenter(float x, float y) {
- center.set(x, y);
+ public void setCenter(float x,float y) {
+ center.modify(x, y);
}
@Override public void draw(Canvas canvas) {
- canvas.drawCircle(center.x, center.y, radius, paint);
+ canvas.drawCircle(center.getPointX(), center.getPointY(), radius, paint);
}
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/model/GraphicObject.java b/library/src/main/java/com/tuyenmonkey/mkloader/model/GraphicObject.java
index ef5d65e465ab6bd9f7b6723b9cbc80ac9d4c6f9b..dc44a6fac66919bd13724acfdf855811f3fda341 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/model/GraphicObject.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/model/GraphicObject.java
@@ -1,7 +1,8 @@
package com.tuyenmonkey.mkloader.model;
-import android.graphics.Canvas;
-import android.graphics.Paint;
+import ohos.agp.render.Canvas;
+import ohos.agp.render.Paint;
+import ohos.agp.utils.Color;
/**
* Created by Tuyen Nguyen on 2/12/17.
@@ -15,11 +16,11 @@ public abstract class GraphicObject {
paint.setAntiAlias(true);
}
- public void setColor(int color) {
- paint.setColor(color);
+ public void setColor(Color color) {
+ paint.setColor(Color.WHITE);
}
- public void setAlpha(int alpha) {
+ public void setAlpha(float alpha) {
paint.setAlpha(alpha);
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/model/Line.java b/library/src/main/java/com/tuyenmonkey/mkloader/model/Line.java
index 4b97b459c433fad97b306dd0b03d4fbef43317e0..1ca545bd92a9925f14653d209aada1a61e885e23 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/model/Line.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/model/Line.java
@@ -1,33 +1,33 @@
package com.tuyenmonkey.mkloader.model;
-import android.graphics.Canvas;
-import android.graphics.PointF;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.Point;
/**
* Created by Tuyen Nguyen on 2/12/17.
*/
public class Line extends GraphicObject {
- private PointF point1;
- private PointF point2;
+ private Point point1;
+ private Point point2;
- public void setPoint1(PointF point1) {
+ public void setPoint1(Point point1) {
this.point1 = point1;
}
- public void setPoint2(PointF point2) {
+ public void setPoint2(Point point2) {
this.point2 = point2;
}
- public PointF getPoint1() {
+ public Point getPoint1() {
return point1;
}
- public PointF getPoint2() {
+ public Point getPoint2() {
return point2;
}
@Override public void draw(Canvas canvas) {
- canvas.drawLine(point1.x, point1.y, point2.x, point2.y, paint);
+ canvas.drawLine(point1,point2, paint);
}
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/Balloon.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/Balloon.java
index 748322550e13af56ba2ec441b5320db33d7fbf48..f881f1493aa4e615ade63e94099fe3a8429d17fe 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/Balloon.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/Balloon.java
@@ -1,21 +1,28 @@
package com.tuyenmonkey.mkloader.type;
-import android.graphics.Canvas;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
/**
* Created by Tuyen Monkey on 3/13/17.
*/
-public class Balloon extends LoaderView {
- @Override public void initializeObjects() {
+public class Balloon extends LoaderView {
+
+
+ @Override
+ public void initializeObjects() {
}
- @Override public void setUpAnimation() {
+ @Override
+ public void setUpAnimation() {
}
- @Override public void draw(Canvas canvas) {
+ @Override
+ public void draw(Canvas canvas) {
}
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/ClassicSpinner.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/ClassicSpinner.java
index 5236e82d706c4cfbe7fbe0f726dd034e4a84ea0d..bbdc142f8da6b1d6a6bcaf8ec131973510b225cc 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/ClassicSpinner.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/ClassicSpinner.java
@@ -1,12 +1,11 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
import com.tuyenmonkey.mkloader.model.Circle;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.render.Canvas;
+
+
-/**
- * Created by Tuyen Nguyen on 2/10/17.
- */
public class ClassicSpinner extends LoaderView {
private Circle[] circles;
@@ -23,30 +22,30 @@ public class ClassicSpinner extends LoaderView {
for (int i = 0; i < circlesSize; i++) {
circles[i] = new Circle();
- circles[i].setCenter(center.x, circleRadius);
+ circles[i].setCenter(center.getPointX(), circleRadius);
circles[i].setColor(color);
circles[i].setAlpha(126);
circles[i].setRadius(circleRadius);
}
}
+
@Override public void setUpAnimation() {
for (int i = 0; i < circlesSize; i++) {
final int index = i;
-
- ValueAnimator fadeAnimator = ValueAnimator.ofInt(126, 255, 126);
- fadeAnimator.setRepeatCount(ValueAnimator.INFINITE);
+ AnimatorValue fadeAnimator =new AnimatorValue();
+ fadeAnimator.setLoopedCount(AnimatorValue.INFINITE);
fadeAnimator.setDuration(1000);
- fadeAnimator.setStartDelay(index * 120);
- fadeAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- circles[index].setAlpha((int)animation.getAnimatedValue());
+ fadeAnimator.setDelay(index * 120);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ circles[index].setAlpha(v);
if (invalidateListener != null) {
invalidateListener.reDraw();
}
}
});
-
fadeAnimator.start();
}
}
@@ -54,7 +53,7 @@ public class ClassicSpinner extends LoaderView {
@Override public void draw(Canvas canvas) {
for (int i = 0; i < circlesSize; i++) {
canvas.save();
- canvas.rotate(45 * i, center.x, center.y);
+ canvas.rotate(45 * i, center.getPointX(), center.getPointY());
circles[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/FishSpinner.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/FishSpinner.java
index 68620faf2515a04d733fb3ad63eb4a98b7f164c6..a0ed9ef49527988d1af536852ca5299b8a1cef60 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/FishSpinner.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/FishSpinner.java
@@ -1,31 +1,36 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
+import com.tuyenmonkey.mkloader.callback.InvalidateListener;
import com.tuyenmonkey.mkloader.model.Circle;
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.ComponentContainer;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
/**
* Created by Tuyen Nguyen on 2/12/17.
*/
-public class FishSpinner extends LoaderView {
+public class FishSpinner extends LoaderView{
private Circle[] circles;
private int numberOfCircle;
private float[] rotates;
+ private Canvas canvas;
public FishSpinner() {
numberOfCircle = 5;
rotates = new float[numberOfCircle];
}
+
@Override public void initializeObjects() {
final float size = Math.min(width, height);
final float circleRadius = size / 10.0f;
circles = new Circle[numberOfCircle];
-
for (int i = 0; i < numberOfCircle; i++) {
circles[i] = new Circle();
- circles[i].setCenter(center.x, circleRadius);
+ circles[i].setCenter(center.getPointX(), circleRadius);
circles[i].setColor(color);
circles[i].setRadius(circleRadius - circleRadius * i / 6);
}
@@ -34,28 +39,29 @@ public class FishSpinner extends LoaderView {
@Override public void setUpAnimation() {
for (int i = 0; i < numberOfCircle; i++) {
final int index = i;
-
- ValueAnimator fadeAnimator = ValueAnimator.ofFloat(0, 360);
- fadeAnimator.setRepeatCount(ValueAnimator.INFINITE);
+ AnimatorValue fadeAnimator = new AnimatorValue();
+ fadeAnimator.setLoopedCount(-1);
fadeAnimator.setDuration(1700);
- fadeAnimator.setStartDelay(index * 100);
- fadeAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- rotates[index] = (float)animation.getAnimatedValue();
+ fadeAnimator.setDelay(index * 100);
+ fadeAnimator.setCurveType(Animator.CurveType.ACCELERATE);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ rotates[index] = v * 360;
if (invalidateListener != null) {
invalidateListener.reDraw();
}
}
});
-
fadeAnimator.start();
}
}
@Override public void draw(Canvas canvas) {
+ this.canvas = canvas;
for (int i = 0; i < numberOfCircle; i++) {
canvas.save();
- canvas.rotate(rotates[i], center.x, center.y);
+ canvas.rotate(rotates[i], center.getPointX(), center.getPointY());
circles[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/LineSpinner.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/LineSpinner.java
index 64c086919944ac0acb84def6669df2fd43464343..a76b0fd40796fe1af7e0e2f8811be17e7f474804 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/LineSpinner.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/LineSpinner.java
@@ -1,15 +1,11 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
-import android.graphics.PointF;
import com.tuyenmonkey.mkloader.model.Line;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.Point;
-/**
- * Created by Tuyen Nguyen on 2/12/17.
- */
-
-public class LineSpinner extends LoaderView {
+public class LineSpinner extends LoaderView{
private Line[] lines;
private int numberOfLine;
@@ -27,38 +23,39 @@ public class LineSpinner extends LoaderView {
lines[i].setColor(color);
lines[i].setAlpha(126);
lines[i].setWidth(lineWidth);
- lines[i].setPoint1(new PointF(center.x, center.y - size / 2f + lineWidth));
- lines[i].setPoint2(new PointF(center.x, lines[i].getPoint1().y + 2 * lineWidth));
+ lines[i].setPoint1(new Point(center.getPointX(), center.getPointY() - size / 2f + lineWidth));
+ lines[i].setPoint2(new Point(center.getPointX(), lines[i].getPoint1().getPointY() + 2 * lineWidth));
}
}
@Override public void setUpAnimation() {
for (int i = 0; i < numberOfLine; i++) {
final int index = i;
-
- ValueAnimator fadeAnimator = ValueAnimator.ofInt(126, 255, 126);
- fadeAnimator.setRepeatCount(ValueAnimator.INFINITE);
+ AnimatorValue fadeAnimator = new AnimatorValue();
+ fadeAnimator.setLoopedCount(AnimatorValue.INFINITE);
fadeAnimator.setDuration(1000);
- fadeAnimator.setStartDelay(index * 120);
- fadeAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- lines[index].setAlpha((int)animation.getAnimatedValue());
+ fadeAnimator.setDelay(index * 120);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ lines[index].setAlpha(v);
if (invalidateListener != null) {
invalidateListener.reDraw();
}
}
});
-
fadeAnimator.start();
}
}
+
@Override public void draw(Canvas canvas) {
for (int i = 0; i < numberOfLine; i++) {
canvas.save();
- canvas.rotate(45 * i, center.x, center.y);
+ canvas.rotate(45 * i, center.getPointX(), center.getPointY());
lines[i].draw(canvas);
canvas.restore();
}
}
+
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/LoaderView.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/LoaderView.java
index e4f7456398c599d7c16f0a2ca8faf2c7876c3c74..38957756e0976dcb928a06e8db64dcaa4fe29514 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/LoaderView.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/LoaderView.java
@@ -1,33 +1,38 @@
package com.tuyenmonkey.mkloader.type;
-import android.graphics.Canvas;
-import android.graphics.PointF;
import com.tuyenmonkey.mkloader.callback.InvalidateListener;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.Color;
+import ohos.agp.utils.Point;
+
/**
* Created by Tuyen Nguyen on 2/11/17.
*/
-public abstract class LoaderView {
- protected int color;
+public abstract class LoaderView{
+ protected Color color;
protected int width, height;
protected int desiredWidth, desiredHeight;
- protected PointF center;
+ protected Point center;
protected InvalidateListener invalidateListener;
+ private Element.OnChangeListener mCallback;
public LoaderView() {
this.desiredWidth = 150;
this.desiredHeight = 150;
}
- public void setColor(int color) {
+ public void setColor(Color color) {
this.color = color;
}
- public void setSize(int width, int height) {
- this.width = width;
- this.height = height;
- this.center = new PointF(width / 2.0f, height / 2.0f);
+
+ public void setSize() {
+ this.width = desiredWidth;
+ this.height = desiredHeight;
+ this.center = new Point(desiredWidth / 2.0f, desiredHeight / 2.0f);
}
public void setInvalidateListener(InvalidateListener invalidateListener) {
@@ -57,4 +62,5 @@ public abstract class LoaderView {
invalidateListener = null;
}
}
+
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/PhoneWave.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/PhoneWave.java
index c4b23af79577b19be2f047f50294df00da3f245c..5859da5a50e877e3fb7de123764b9ef312911a5e 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/PhoneWave.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/PhoneWave.java
@@ -1,14 +1,13 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.RectF;
import com.tuyenmonkey.mkloader.model.Arc;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
+import ohos.agp.render.Paint;
+import ohos.agp.utils.RectFloat;
+
-/**
- * Created by Tuyen Nguyen on 2/13/17.
- */
public class PhoneWave extends LoaderView {
private Arc[] arcs;
@@ -27,10 +26,10 @@ public class PhoneWave extends LoaderView {
arcs[i] = new Arc();
arcs[i].setColor(color);
arcs[i].setAlpha(126);
- arcs[i].setOval(new RectF(center.x - d, center.y - d + r / 3, center.x + d, center.y + d + r / 3));
+ arcs[i].setOval(new RectFloat(center.getPointX() - d, center.getPointY() - d + r / 3, center.getPointX() + d, center.getPointY() + d + r / 3));
arcs[i].setStartAngle(225);
arcs[i].setSweepAngle(90);
- arcs[i].setStyle(Paint.Style.STROKE);
+ arcs[i].setStyle(Paint.Style.STROKE_STYLE);
arcs[i].setWidth(r / 10f);
}
}
@@ -39,13 +38,14 @@ public class PhoneWave extends LoaderView {
for (int i = 0; i < numberOfArc; i++) {
final int index = i;
- ValueAnimator fadeAnimator = ValueAnimator.ofInt(126, 255, 126);
- fadeAnimator.setRepeatCount(ValueAnimator.INFINITE);
+ AnimatorValue fadeAnimator = new AnimatorValue();
+ fadeAnimator.setLoopedCount(AnimatorValue.INFINITE);
fadeAnimator.setDuration(1000);
- fadeAnimator.setStartDelay(i * 120);
- fadeAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- arcs[index].setAlpha((int)animation.getAnimatedValue());
+ fadeAnimator.setDelay(i * 120);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ arcs[index].setAlpha(v);
if (invalidateListener != null) {
invalidateListener.reDraw();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/Pulse.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/Pulse.java
index 801c4aa36e0b29621cad7aea050325b609e341f0..5239bb14460b210836379d5672173237b04bd829 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/Pulse.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/Pulse.java
@@ -1,14 +1,14 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
-import android.graphics.PointF;
import com.tuyenmonkey.mkloader.exception.InvalidNumberOfPulseException;
import com.tuyenmonkey.mkloader.model.Line;
+import com.tuyenmonkey.mkloader.util.AnimatorValueUtil;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.Point;
+
-/**
- * Created by Tuyen Nguyen on 2/12/17.
- */
public class Pulse extends LoaderView {
private Line[] lines;
@@ -16,6 +16,7 @@ public class Pulse extends LoaderView {
private float lineWidth;
private float lineDistance;
private float[] scaleY;
+ private AnimatorValueUtil animatorValueUtil;
public Pulse(int numberOfLines) throws InvalidNumberOfPulseException {
if (numberOfLines < 3 || numberOfLines > 5) {
@@ -35,23 +36,27 @@ public class Pulse extends LoaderView {
lines[i] = new Line();
lines[i].setColor(color);
lines[i].setWidth(lineWidth);
- lines[i].setPoint1(new PointF(firstX, center.y - height / 4f));
- lines[i].setPoint2(new PointF(firstX, center.y + height / 4f));
+ lines[i].setPoint1(new Point(firstX, center.getPointY() - height / 4f));
+ lines[i].setPoint2(new Point(firstX, center.getPointY() + height / 4f));
}
}
@Override public void setUpAnimation() {
for (int i = 0; i < numberOfLines; i++) {
final int index = i;
- ValueAnimator scaleAnimator = ValueAnimator.ofFloat(1f, 1.5f, 1f);
+ AnimatorValue scaleAnimator = new AnimatorValue();
scaleAnimator.setDuration(1000);
- scaleAnimator.setStartDelay(i * 120);
- scaleAnimator.setRepeatCount(ValueAnimator.INFINITE);
- scaleAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- scaleY[index] = (float)animation.getAnimatedValue();
+ scaleAnimator.setDelay(i * 120);
+ scaleAnimator.setLoopedCount(AnimatorValue.INFINITE);
+ animatorValueUtil = new AnimatorValueUtil();
+ animatorValueUtil.ofFloat(1f, 1.5f, 1f);
+ scaleAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ scaleY[index] = animatorValueUtil.getValue(v);
if (invalidateListener != null) {
invalidateListener.reDraw();
+
}
}
});
@@ -64,7 +69,7 @@ public class Pulse extends LoaderView {
for (int i = 0; i < numberOfLines; i++) {
canvas.save();
canvas.translate(i * (lineWidth + lineDistance), 0);
- canvas.scale(1, scaleY[i], lines[i].getPoint1().x, center.y);
+ canvas.scale(1, scaleY[i], lines[i].getPoint1().getPointX(), center.getPointY());
lines[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/Radar.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/Radar.java
index aa1f5f41b63332387be501f2d30a096797e174d7..419f71aff4ca697d515a33e9287ba3994f5a81cf 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/Radar.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/Radar.java
@@ -1,9 +1,12 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
-import android.graphics.PointF;
import com.tuyenmonkey.mkloader.model.Line;
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorProperty;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
+import ohos.agp.utils.Point;
/**
* Created by Tuyen Nguyen on 2/12/17.
@@ -13,34 +16,41 @@ public class Radar extends LoaderView {
private Line line;
private float degree;
+
+
@Override public void initializeObjects() {
+ System.out.println("width : " + width + "height: " + height);
final float size = Math.min(width, height);
line = new Line();
line.setPoint1(center);
- line.setPoint2(new PointF(0, size / 2f));
+ line.setPoint2(new Point(0, size / 2f));
line.setColor(color);
line.setWidth(5);
}
- @Override public void setUpAnimation() {
- ValueAnimator animator = ValueAnimator.ofFloat(0, 359);
- animator.setDuration(1000);
- animator.setRepeatCount(ValueAnimator.INFINITE);
- animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- degree = (float)animation.getAnimatedValue();
+ @Override
+ public void setUpAnimation() {
+ AnimatorValue fadeAnimator = new AnimatorValue();
+ fadeAnimator.setLoopedCount(-1);
+ fadeAnimator.setDuration(1700);
+ fadeAnimator.setCurveType(Animator.CurveType.ACCELERATE);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ degree = (float)v * 360;
if (invalidateListener != null) {
invalidateListener.reDraw();
+ System.out.println("reDraw()");
}
}
});
-
- animator.start();
+ fadeAnimator.start();
}
+
@Override public void draw(Canvas canvas) {
canvas.save();
- canvas.rotate(degree, center.x, center.y);
+ canvas.rotate(degree, center.getPointX(), center.getPointY());
line.draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/Sharingan.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/Sharingan.java
index 6c9ee5245a01799dda976c2a8b1ced7a9204280d..fed5122d393db701972816782a33eb9a9c11f3e0 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/Sharingan.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/Sharingan.java
@@ -1,16 +1,19 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.AnimatorSet;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
-import android.graphics.Paint;
import com.tuyenmonkey.mkloader.model.Circle;
+import com.tuyenmonkey.mkloader.util.AnimatorValueUtil;
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorGroup;
+import ohos.agp.animation.AnimatorScatter;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.render.Canvas;
+import ohos.agp.render.Paint;
-/**
- * Created by Tuyen Nguyen on 2/13/17.
- */
+import java.util.ArrayList;
+import java.util.List;
public class Sharingan extends LoaderView {
+
private Circle eye;
private Circle eyeBound;
private Circle[] sharingans;
@@ -19,75 +22,82 @@ public class Sharingan extends LoaderView {
private float scale;
private float eyeBoundRadius;
private float eyeBoundRadiusScale;
+ private AnimatorValueUtil animatorValueUtil;
public Sharingan() {
numberOfSharingan = 3;
}
@Override public void initializeObjects() {
+
float r = Math.min(width, height) / 2f;
eyeBoundRadius = r / 1.5f;
eye = new Circle();
- eye.setCenter(center.x, center.y);
+ eye.setCenter(center.getPointX(), center.getPointY());
eye.setColor(color);
eye.setRadius(r / 4);
eyeBound = new Circle();
- eyeBound.setCenter(center.x, center.y);
+ eyeBound.setCenter(center.getPointX(), center.getPointY());
eyeBound.setColor(color);
eyeBound.setRadius(eyeBoundRadius);
- eyeBound.setStyle(Paint.Style.STROKE);
+ eyeBound.setStyle(Paint.Style.STROKE_STYLE);
eyeBound.setWidth(r / 20f);
sharingans = new Circle[numberOfSharingan];
for (int i = 0; i < numberOfSharingan; i++) {
sharingans[i] = new Circle();
- sharingans[i].setCenter(center.x, center.y - eyeBoundRadius);
+ sharingans[i].setCenter(center.getPointX(), center.getPointY() - eyeBoundRadius);
sharingans[i].setColor(color);
sharingans[i].setRadius(r / 6);
}
}
@Override public void setUpAnimation() {
- ValueAnimator rotateAnimator = ValueAnimator.ofFloat(0, 360);
+ AnimatorValue rotateAnimator = new AnimatorValue();
rotateAnimator.setDuration(1500);
- rotateAnimator.setRepeatCount(ValueAnimator.INFINITE);
- rotateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- rotate = (float)animation.getAnimatedValue();
+ rotateAnimator.setLoopedCount(AnimatorValue.INFINITE);
+ rotateAnimator.setCurveType(Animator.CurveType.ACCELERATE);
+ rotateAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ rotate = v * 360;
if (invalidateListener != null) {
invalidateListener.reDraw();
}
}
});
+ rotateAnimator.start();
+ AnimatorValue scaleAnimator = new AnimatorValue();
+ scaleAnimator.setDuration(1000);
+ scaleAnimator.setLoopedCount(AnimatorValue.INFINITE);
+ scaleAnimator.setCurveType(Animator.CurveType.LINEAR);
- ValueAnimator scaleAnimator = ValueAnimator.ofFloat(1f, 0.8f, 1f);
- scaleAnimator.setDuration(1000);
- scaleAnimator.setRepeatCount(ValueAnimator.INFINITE);
- scaleAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- scale = (float)animation.getAnimatedValue();
+ animatorValueUtil = new AnimatorValueUtil();
+ animatorValueUtil.ofFloat(1,0.8f, 1);
+
+ scaleAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ scale = animatorValueUtil.getValue(v);
if (invalidateListener != null) {
invalidateListener.reDraw();
}
}
});
-
- AnimatorSet animatorSet = new AnimatorSet();
- animatorSet.play(rotateAnimator).with(scaleAnimator);
- animatorSet.start();
+ scaleAnimator.start();
}
@Override public void draw(Canvas canvas) {
canvas.save();
- canvas.scale(scale, scale, center.x, center.y);
- canvas.rotate(rotate, center.x, center.y);
+ canvas.scale(scale, scale, center.getPointX(), center.getPointY());
+ canvas.rotate(rotate, center.getPointX(), center.getPointY());
eye.draw(canvas);
eyeBound.draw(canvas);
for (int i = 0; i < numberOfSharingan; i++) {
canvas.save();
- canvas.rotate(i * 120, center.x, center.y);
+ canvas.rotate(i * 120, center.getPointX(), center.getPointY());
sharingans[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/TwinFishesSpinner.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/TwinFishesSpinner.java
index 086378022da42c57d67ffb64a60de4cc29b249cf..8c56cacecac964d4d3b3a7255ca7c3074332018a 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/TwinFishesSpinner.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/TwinFishesSpinner.java
@@ -1,17 +1,15 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
import com.tuyenmonkey.mkloader.model.Circle;
-
-/**
- * Created by Tuyen Nguyen on 2/13/17.
- */
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.render.Canvas;
public class TwinFishesSpinner extends LoaderView {
private Circle[] circles;
private int numberOfCircle;
private float[] rotates;
+ private int delayTime;
public TwinFishesSpinner() {
numberOfCircle = 10;
@@ -25,14 +23,14 @@ public class TwinFishesSpinner extends LoaderView {
for (int i = 0; i < numberOfCircle / 2; i++) {
circles[i] = new Circle();
- circles[i].setCenter(center.x, circleRadius);
+ circles[i].setCenter(center.getPointX(), circleRadius);
circles[i].setColor(color);
circles[i].setRadius(circleRadius - circleRadius * i / 6);
}
for (int i = numberOfCircle / 2; i < numberOfCircle; i++) {
circles[i] = new Circle();
- circles[i].setCenter(center.x, size - circleRadius);
+ circles[i].setCenter(center.getPointX(), size - circleRadius);
circles[i].setColor(color);
circles[i].setRadius(circleRadius - circleRadius * (i - 5) / 6);
}
@@ -41,14 +39,16 @@ public class TwinFishesSpinner extends LoaderView {
@Override public void setUpAnimation() {
for (int i = 0; i < numberOfCircle; i++) {
final int index = i;
-
- ValueAnimator fadeAnimator = ValueAnimator.ofFloat(0, 360);
- fadeAnimator.setRepeatCount(ValueAnimator.INFINITE);
- fadeAnimator.setDuration(1700);
- fadeAnimator.setStartDelay((index >= 5 ? index - 5 : index) * 100);
- fadeAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- rotates[index] = (float)animation.getAnimatedValue();
+ AnimatorValue fadeAnimator = new AnimatorValue();
+ fadeAnimator.setLoopedCount(AnimatorValue.INFINITE);
+ fadeAnimator.setDuration(1800);
+ delayTime = (index >= 5 ? index - 5 : index) * 100;
+ fadeAnimator.setDelay(delayTime);
+ fadeAnimator.setCurveType(Animator.CurveType.ACCELERATE);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ rotates[index] = v * 360;
if (invalidateListener != null) {
invalidateListener.reDraw();
}
@@ -62,7 +62,7 @@ public class TwinFishesSpinner extends LoaderView {
@Override public void draw(Canvas canvas) {
for (int i = 0; i < numberOfCircle; i++) {
canvas.save();
- canvas.rotate(rotates[i], center.x, center.y);
+ canvas.rotate(rotates[i], center.getPointX(), center.getPointY());
circles[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/Whirlpool.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/Whirlpool.java
index f3b33eebb791aea5fbb1480cde48227f686190ac..b0242b914c7a04a212f7823e5e2b1f2426ba4575 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/Whirlpool.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/Whirlpool.java
@@ -1,14 +1,12 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.RectF;
import com.tuyenmonkey.mkloader.model.Arc;
-
-/**
- * Created by Tuyen Nguyen on 2/13/17.
- */
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
+import ohos.agp.render.Paint;
+import ohos.agp.utils.RectFloat;
public class Whirlpool extends LoaderView {
private Arc[] arcs;
@@ -28,10 +26,10 @@ public class Whirlpool extends LoaderView {
float d = r / 4 + i * r / 4;
arcs[i] = new Arc();
arcs[i].setColor(color);
- arcs[i].setOval(new RectF(center.x - d, center.y - d, center.x + d, center.y + d));
+ arcs[i].setOval(new RectFloat(center.getPointX() - d, center.getPointY() - d, center.getPointX() + d, center.getPointY() + d));
arcs[i].setStartAngle(i * 45);
arcs[i].setSweepAngle(i * 45 + 90);
- arcs[i].setStyle(Paint.Style.STROKE);
+ arcs[i].setStyle(Paint.Style.STROKE_STYLE);
arcs[i].setWidth(r / 10f);
}
}
@@ -40,19 +38,24 @@ public class Whirlpool extends LoaderView {
for (int i = numberOfArc - 1; i >= 0; i--) {
final int index = i;
- ValueAnimator fadeAnimator = ValueAnimator.ofFloat(arcs[i].getStartAngle(),
- arcs[i].getStartAngle() + 360* (i % 2 == 0 ? -1 : 1));
- fadeAnimator.setRepeatCount(ValueAnimator.INFINITE);
- fadeAnimator.setDuration((i + 1) * 500);
- fadeAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- rotates[index] = (float)animation.getAnimatedValue();
+ AnimatorValue fadeAnimator = new AnimatorValue();
+ fadeAnimator.setLoopedCount(AnimatorValue.INFINITE);
+ fadeAnimator.setDuration((i + 1) * 1000);
+ fadeAnimator.setCurveType(Animator.CurveType.ACCELERATE);
+ fadeAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ if (index/2 == 0){
+ rotates[index] = v * -360;
+ }else {
+ rotates[index] = v * 360;
+ }
+
if (invalidateListener != null) {
invalidateListener.reDraw();
}
}
});
-
fadeAnimator.start();
}
}
@@ -60,7 +63,7 @@ public class Whirlpool extends LoaderView {
@Override public void draw(Canvas canvas) {
for (int i = 0; i < numberOfArc; i++) {
canvas.save();
- canvas.rotate(rotates[i], center.x, center.y);
+ canvas.rotate(rotates[i], center.getPointX(), center.getPointY());
arcs[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/type/Worm.java b/library/src/main/java/com/tuyenmonkey/mkloader/type/Worm.java
index d5c641db544494a370ee529aa9903502c8de8c85..58f357f8d5bd2d7bb01623e59ec5a71a6eaa1927 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/type/Worm.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/type/Worm.java
@@ -1,18 +1,20 @@
package com.tuyenmonkey.mkloader.type;
-import android.animation.ValueAnimator;
-import android.graphics.Canvas;
import com.tuyenmonkey.mkloader.model.Circle;
+import com.tuyenmonkey.mkloader.util.AnimatorValueUtil;
+import ohos.agp.animation.Animator;
+import ohos.agp.animation.AnimatorValue;
+import ohos.agp.components.element.Element;
+import ohos.agp.render.Canvas;
+
-/**
- * Created by Tuyen Nguyen on 2/12/17.
- */
public class Worm extends LoaderView {
private Circle[] circles;
private int circlesSize;
private float radius;
private int[] transformations;
+ private AnimatorValueUtil animatorValueUtil;
public Worm() {
circlesSize = 5;
@@ -27,20 +29,24 @@ public class Worm extends LoaderView {
circles[i] = new Circle();
circles[i].setColor(color);
circles[i].setRadius(radius);
- circles[i].setCenter(center.x, center.y);
+ circles[i].setCenter(center.getPointX(), center.getPointY());
}
}
@Override public void setUpAnimation() {
for (int i = 0; i < circlesSize; i++) {
final int index = i;
- ValueAnimator translateAnimator = ValueAnimator.ofFloat(center.y, height / 4f, height * 3 / 4f, center.y);
+ AnimatorValue translateAnimator =new AnimatorValue();
translateAnimator.setDuration(1000);
- translateAnimator.setStartDelay(index * 120);
- translateAnimator.setRepeatCount(ValueAnimator.INFINITE);
- translateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override public void onAnimationUpdate(ValueAnimator animation) {
- circles[index].setCenter(center.x, (float)animation.getAnimatedValue());
+ translateAnimator.setDelay(index * 120);
+ translateAnimator.setLoopedCount(AnimatorValue.INFINITE);
+ translateAnimator.setCurveType(Animator.CurveType.ACCELERATE);
+ animatorValueUtil = new AnimatorValueUtil();
+ animatorValueUtil.ofFloat(center.getPointY(), height / 4f, height * 3 / 4f, center.getPointY());
+ translateAnimator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
+ @Override
+ public void onUpdate(AnimatorValue animatorValue, float v) {
+ circles[index].setCenter(center.getPointX(),animatorValueUtil.getValue(v));
if (invalidateListener != null) {
invalidateListener.reDraw();
}
@@ -51,10 +57,12 @@ public class Worm extends LoaderView {
}
}
+
@Override public void draw(Canvas canvas) {
for (int i = 0; i < circlesSize; i++) {
canvas.save();
canvas.translate(2 * radius * transformations[i], 0);
+ System.out.println("rotates---" + 2 * radius * transformations[i] + "center : " + center.getPointX());
circles[i].draw(canvas);
canvas.restore();
}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/util/AnimatorValueUtil.java b/library/src/main/java/com/tuyenmonkey/mkloader/util/AnimatorValueUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..514b25dd2835932e3e53315036d4052597be6164
--- /dev/null
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/util/AnimatorValueUtil.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2021 The Chinese Software International Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain an copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.tuyenmonkey.mkloader.util;
+
+/**
+ * ex.
+ * AnimatorValueUtil animatorValueUtil = new AnimatorValueUtil();
+ * animatorValueUtil.ofFloat(0.1f,-3f,2f)
+ * public void onUpdate(AnimatorValue animatorValue, float v) {
+ * float currentV = animatorValueUtil.getValue(v);
+ * }
+ *
+ * @author gongcheng
+ * @since 2021-04-06
+ */
+public class AnimatorValueUtil {
+ private static final String TAG = "AnimatorValueUtil";
+ private final int rateSize = 2;
+ private final int negative = -1;
+ private float[]values;
+ private float[][]rate;
+
+ /**
+ * 如传一个参数,则getValue 返回值与传入的 V 值一致
+ * 如传入连续两个相同参数,则会出现除0异常
+ * 传参试例: 0.8f,-1.2f,3.5f,0,5
+ *
+ * @param tempValues 说明
+ */
+ public void ofFloat(float...tempValues) {
+ this.values = tempValues;
+
+ rate = new float[this.values.length - 1][rateSize];
+
+ float sum = 0;
+
+ for (int i = 1; i < this.values.length; i++) {
+ sum += Math.abs(this.values[i] - this.values[i - 1]);
+ }
+
+ // 计算每个变化值的占比和达到该变化值系数
+ for (int i = 0; i < rate.length; i++) {
+ float tempRate = Math.abs((this.values[i + 1] - this.values[i]) / sum);
+ rate[i][0] = tempRate + (i == 0 ? 0 : rate[i - 1][0]);
+ float tempDuration = this.values[i + 1] - this.values[i];
+ rate[i][1] = (this.values[i] > this.values[i + 1] ? negative : 1) * Math.abs(tempDuration / tempRate);
+ }
+ }
+
+ /**
+ * 根据 属性动画中value的值,计算当前值
+ *
+ * @param value 属性动画中的value
+ * @return 通过计算后的值
+ */
+ public float getValue(float value) {
+ for (int i = 0; i < rate.length; i++) {
+ // 如果是进入当前变化值占比,则按当前系数进行计算实际值(bounce回弹效果最后v会大于1)
+ if (value <= rate[i][0] || value > 1) {
+ return values[i] + (i == 0 ? value : value - rate[i - 1][0]) * rate[i][1];
+ }
+ }
+ return value;
+ }
+}
diff --git a/library/src/main/java/com/tuyenmonkey/mkloader/util/LoaderGenerator.java b/library/src/main/java/com/tuyenmonkey/mkloader/util/LoaderGenerator.java
index 181c69308209351894e4abe33229300c9f7ea721..a59f89eb028d177fdf566ebb9035b6eee1a2107a 100644
--- a/library/src/main/java/com/tuyenmonkey/mkloader/util/LoaderGenerator.java
+++ b/library/src/main/java/com/tuyenmonkey/mkloader/util/LoaderGenerator.java
@@ -5,13 +5,14 @@ import com.tuyenmonkey.mkloader.type.ClassicSpinner;
import com.tuyenmonkey.mkloader.type.FishSpinner;
import com.tuyenmonkey.mkloader.type.LineSpinner;
import com.tuyenmonkey.mkloader.type.LoaderView;
-import com.tuyenmonkey.mkloader.type.PhoneWave;
import com.tuyenmonkey.mkloader.type.Pulse;
+import com.tuyenmonkey.mkloader.type.PhoneWave;
import com.tuyenmonkey.mkloader.type.Radar;
import com.tuyenmonkey.mkloader.type.Sharingan;
import com.tuyenmonkey.mkloader.type.TwinFishesSpinner;
import com.tuyenmonkey.mkloader.type.Whirlpool;
import com.tuyenmonkey.mkloader.type.Worm;
+import ohos.app.Context;
/**
* Created by Tuyen Nguyen on 2/13/17.
@@ -19,7 +20,7 @@ import com.tuyenmonkey.mkloader.type.Worm;
public class LoaderGenerator {
- public static LoaderView generateLoaderView(int type) {
+ public static LoaderView generateLoaderView(Context context, int type) {
switch (type) {
case 0:
return new ClassicSpinner();
@@ -65,11 +66,11 @@ public class LoaderGenerator {
public static LoaderView generateLoaderView(String type) {
switch (type) {
case "ClassicSpinner":
- return new ClassicSpinner();
+ // return new ClassicSpinner();
case "FishSpinner":
return new FishSpinner();
case "LineSpinner":
- return new LineSpinner();
+ // return new LineSpinner();
case "ThreePulse":
try {
return new Pulse(3);
@@ -91,7 +92,7 @@ public class LoaderGenerator {
case "Radar":
return new Radar();
case "TwinFishesSpinner":
- return new TwinFishesSpinner();
+ // return new TwinFishesSpinner();
case "Worm":
return new Worm();
case "Whirlpool":
diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml
deleted file mode 100644
index 116f27d14653b997bcafa59e81eb20e99cfc8563..0000000000000000000000000000000000000000
--- a/library/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml
deleted file mode 100644
index 509a7a2dfda919d98a097578a218daa6bffd4348..0000000000000000000000000000000000000000
--- a/library/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- MK Loader
-
diff --git a/library/src/main/resources/base/element/string.json b/library/src/main/resources/base/element/string.json
new file mode 100644
index 0000000000000000000000000000000000000000..6c298286373e6266fd910aac81429792f08df437
--- /dev/null
+++ b/library/src/main/resources/base/element/string.json
@@ -0,0 +1,8 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "Library"
+ }
+ ]
+}
diff --git a/library/src/test/java/com/tuyenmonkey/mkloader/ExampleUnitTest.java b/library/src/test/java/com/tuyenmonkey/mkloader/ExampleUnitTest.java
deleted file mode 100644
index 455b40c6063e92fe640b585820ca4bb6baf265d5..0000000000000000000000000000000000000000
--- a/library/src/test/java/com/tuyenmonkey/mkloader/ExampleUnitTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.tuyenmonkey.mkloader;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
diff --git a/screenshot/screenshot.gif b/screenshot/screenshot.gif
deleted file mode 100644
index 701408fbdf649a84e419c09f62430b9330b06efe..0000000000000000000000000000000000000000
Binary files a/screenshot/screenshot.gif and /dev/null differ
diff --git a/settings.gradle b/settings.gradle
index 33069973b21ca48fd9db7889bf3865384837327a..d0c7ee8440156d4a9324ac5357770747425fef57 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':library'
+include ':entry', ':library'