diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 4e3844e..526b4c2 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -1,5 +1,6 @@
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 8e44fc4..94e3584 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -25,10 +25,12 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 46429d1..5a0ca79 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -40,4 +40,6 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+
+ implementation 'com.google.code.gson:gson:2.8.6'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f1bce59..dd2bcfe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.OxygenToolbox">
+
{
LayoutParams layoutParams = (LayoutParams) content.getLayoutParams();
@@ -101,7 +101,7 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{
}
});
- hideAnimator = ValueAnimator.ofInt(contentHeight,0);
+ hideAnimator = ValueAnimator.ofInt(contentHeight, 0);
hideAnimator.addUpdateListener(animation -> {
LayoutParams layoutParams = (LayoutParams) content.getLayoutParams();
layoutParams.height = (int) animation.getAnimatedValue();
@@ -119,7 +119,6 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{
}
});
init = true;
- hide();
showItem();
}
@@ -133,22 +132,13 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{
final int position = i;
content.addView(views.get(i));
views.get(i).setOnClickListener(v -> {
- if(null != mOnItemClickListener) {
- mOnItemClickListener.onItemClick(v,position);
+ if (null != mOnItemClickListener) {
+ mOnItemClickListener.onItemClick(v, position);
}
});
}
}
- /**
- * Auto hide
- */
- public void hide() {
- LinearLayout.LayoutParams layoutParams = (LayoutParams) content.getLayoutParams();
- layoutParams.height = 0;
- content.setLayoutParams(layoutParams);
- }
-
@SuppressLint("UseCompatLoadingForDrawables")
public void showItem() {
isShow = true;
@@ -170,7 +160,7 @@ public class FoldLayout extends LinearLayout implements View.OnClickListener{
}
interface OnItemClickListener {
- void onItemClick(View view,int position);
+ void onItemClick(View view, int position);
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java b/app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java
new file mode 100644
index 0000000..e458b9a
--- /dev/null
+++ b/app/src/main/java/com/fatapp/oxygentoolbox/tools/TimeScreenActivity.java
@@ -0,0 +1,16 @@
+package com.fatapp.oxygentoolbox.tools;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.fatapp.oxygentoolbox.R;
+
+public class TimeScreenActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_time_screen);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java b/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java
index 3bde98c..35f754b 100644
--- a/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java
+++ b/app/src/main/java/com/fatapp/oxygentoolbox/ui/home/HomeFragment.java
@@ -1,27 +1,25 @@
package com.fatapp.oxygentoolbox.ui.home;
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
import android.os.Bundle;
-import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
-import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import com.fatapp.oxygentoolbox.MainActivity;
import com.fatapp.oxygentoolbox.R;
import com.fatapp.oxygentoolbox.layout.FoldLayout;
+import com.fatapp.oxygentoolbox.util.BasicToolsLauncher;
+import com.fatapp.oxygentoolbox.util.ToolsList;
import java.util.ArrayList;
import java.util.List;
@@ -32,8 +30,7 @@ public class HomeFragment extends Fragment {
private HomeViewModel homeViewModel;
- private FoldLayout foldLayout;
- private FoldLayout foldLayout1;
+ private LinearLayout foldLayoutsLinearLayout;
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
homeViewModel =
@@ -44,21 +41,56 @@ public class HomeFragment extends Fragment {
}
private void initView() {
- foldLayout = root.findViewById(R.id.foldLayout);
- List viewList = new ArrayList<>();
- View layout_item = getLayoutInflater().inflate(R.layout.layout_item, null);
- ViewGroup layout_item_AutoLinefeedLayout = layout_item.findViewById(R.id.layout_item_AutoLinefeedLayout);
- for (int i = 1; i < 1000; i++) {
- View toolButton = getLayoutInflater().inflate(R.layout.tool_button, null);
- ((Button) toolButton.findViewById(R.id.toolButton)).setText("Bt" + i);
- layout_item_AutoLinefeedLayout.addView(toolButton);
- }
- viewList.add(layout_item);
- foldLayout.addItemView(viewList);
+ for (ToolsList.Tool tool : ToolsList.getToolList()) {
- foldLayout1 = root.findViewById(R.id.foldLayout1);
- List viewList1 = new ArrayList<>();
- viewList1.add(getLayoutInflater().inflate(R.layout.layout_item, null));
- foldLayout1.addItemView(viewList1);
+ View foldLayoutBody = getLayoutInflater().inflate(R.layout.fold_layout_body, null);
+ ViewGroup layout_item_AutoLinefeedLayout = foldLayoutBody.findViewById(R.id.layout_item_AutoLinefeedLayout);
+
+ for (ToolsList.Button button : tool.getButtonList()) {
+ View toolButton = getLayoutInflater().inflate(R.layout.tool_button, null);
+ ((Button) toolButton.findViewById(R.id.toolButton)).setText(button.getText());
+ toolButton.findViewById(R.id.toolButton).setOnClickListener(v -> {
+ BasicToolsLauncher.launch(button.getActivity(), getContext());
+ });
+ layout_item_AutoLinefeedLayout.addView(toolButton);
+ }
+
+ List viewList = new ArrayList<>();
+ viewList.add(foldLayoutBody);
+
+ View foldLayoutHead = getLayoutInflater().inflate(R.layout.fold_layout, null);
+ FoldLayout foldLayout = foldLayoutHead.findViewById(R.id.foldLayout);
+ ((TextView) foldLayout.findViewById(R.id.foldLayoutTextView)).setText(tool.getFoldLayoutTitle());
+ ((TextView) foldLayout.findViewById(R.id.foldLayoutIcon)).setTypeface(Typeface.createFromAsset(getContext().getAssets(), tool.getFont()));
+ ((TextView) foldLayout.findViewById(R.id.foldLayoutIcon)).setText(tool.getIcon());
+
+ foldLayout.addItemView(viewList);
+
+ foldLayoutsLinearLayout = root.findViewById(R.id.foldLayoutsLinearLayout);
+ foldLayoutsLinearLayout.addView(foldLayoutHead);
+ }
+
+ /*for (int i = 0; i < 10; i++) {
+ View toolButton = getLayoutInflater().inflate(R.layout.tool_button, null);
+ ((Button) toolButton.findViewById(R.id.toolButton)).setText("Button");
+ toolButton.findViewById(R.id.toolButton).setOnClickListener(v -> {
+ BasicToolsLauncher.launch(0, getContext());
+ });
+
+ View foldLayoutBody = getLayoutInflater().inflate(R.layout.fold_layout_body, null);
+ ViewGroup layout_item_AutoLinefeedLayout = foldLayoutBody.findViewById(R.id.layout_item_AutoLinefeedLayout);
+ layout_item_AutoLinefeedLayout.addView(toolButton);
+
+ List viewList = new ArrayList<>();
+ viewList.add(foldLayoutBody);
+
+ View foldLayoutHead = getLayoutInflater().inflate(R.layout.fold_layout, null);
+ FoldLayout foldLayout = foldLayoutHead.findViewById(R.id.foldLayout);
+ ((TextView) foldLayout.findViewById(R.id.foldLayoutTextView)).setText("FoldLayout_" + i);
+ foldLayout.addItemView(viewList);
+
+ foldLayoutsLinearLayout = root.findViewById(R.id.foldLayoutsLinearLayout);
+ foldLayoutsLinearLayout.addView(foldLayoutHead);
+ }*/
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java
new file mode 100644
index 0000000..8fe6922
--- /dev/null
+++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/BasicToolsLauncher.java
@@ -0,0 +1,20 @@
+package com.fatapp.oxygentoolbox.util;
+
+import static androidx.core.content.ContextCompat.startActivity;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.fatapp.oxygentoolbox.tools.TimeScreenActivity;
+
+public class BasicToolsLauncher {
+ public static void launch(int activity, Context context) {
+ switch (activity) {
+ case 0:
+ startActivity(context, new Intent(context, TimeScreenActivity.class), null);
+ break;
+ case 1:
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java
new file mode 100644
index 0000000..7a361f1
--- /dev/null
+++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/Config.java
@@ -0,0 +1,4 @@
+package com.fatapp.oxygentoolbox.util;
+
+public class Config {
+}
diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java
new file mode 100644
index 0000000..b7a6baf
--- /dev/null
+++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsJson.java
@@ -0,0 +1,233 @@
+package com.fatapp.oxygentoolbox.util;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.util.List;
+
+public class ToolsJson {
+ @SerializedName("id")
+ private String id;
+ @SerializedName("content")
+ private Content content;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Content getContent() {
+ return content;
+ }
+
+ public void setContent(Content content) {
+ this.content = content;
+ }
+
+ public static class Content {
+ @SerializedName("version")
+ private String version;
+ @SerializedName("versionID")
+ private Integer versionID;
+ @SerializedName("mainVersion")
+ private Integer mainVersion;
+ @SerializedName("font")
+ private String font;
+ @SerializedName("icon")
+ private String icon;
+ @SerializedName("title")
+ private Title title;
+ @SerializedName("desc")
+ private Desc desc;
+ @SerializedName("buttons")
+ private List buttons;
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public Integer getVersionID() {
+ return versionID;
+ }
+
+ public void setVersionID(Integer versionID) {
+ this.versionID = versionID;
+ }
+
+ public Integer getMainVersion() {
+ return mainVersion;
+ }
+
+ public void setMainVersion(Integer mainVersion) {
+ this.mainVersion = mainVersion;
+ }
+
+ public Title getTitle() {
+ return title;
+ }
+
+ public void setTitle(Title title) {
+ this.title = title;
+ }
+
+ public String getFont() {
+ return font;
+ }
+
+ public void setFont(String font) {
+ this.font = font;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+
+ public Desc getDesc() {
+ return desc;
+ }
+
+ public void setDesc(Desc desc) {
+ this.desc = desc;
+ }
+
+ public List getButtons() {
+ return buttons;
+ }
+
+ public void setButtons(List buttons) {
+ this.buttons = buttons;
+ }
+
+ public static class Title {
+ @SerializedName("cn")
+ private String cn;
+ @SerializedName("tc")
+ private String tc;
+ @SerializedName("en")
+ private String en;
+
+ public String getCn() {
+ return cn;
+ }
+
+ public void setCn(String cn) {
+ this.cn = cn;
+ }
+
+ public String getTc() {
+ return tc;
+ }
+
+ public void setTc(String tc) {
+ this.tc = tc;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public void setEn(String en) {
+ this.en = en;
+ }
+ }
+
+ public static class Desc {
+ @SerializedName("cn")
+ private String cn;
+ @SerializedName("tc")
+ private String tc;
+ @SerializedName("en")
+ private String en;
+
+ public String getCn() {
+ return cn;
+ }
+
+ public void setCn(String cn) {
+ this.cn = cn;
+ }
+
+ public String getTc() {
+ return tc;
+ }
+
+ public void setTc(String tc) {
+ this.tc = tc;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public void setEn(String en) {
+ this.en = en;
+ }
+ }
+
+ public static class Buttons {
+ @SerializedName("text")
+ private Text text;
+ @SerializedName("activity")
+ private Integer activity;
+
+ public Text getText() {
+ return text;
+ }
+
+ public void setText(Text text) {
+ this.text = text;
+ }
+
+ public Integer getActivity() {
+ return activity;
+ }
+
+ public void setActivity(Integer activity) {
+ this.activity = activity;
+ }
+
+ public static class Text {
+ @SerializedName("cn")
+ private String cn;
+ @SerializedName("tc")
+ private String tc;
+ @SerializedName("en")
+ private String en;
+
+ public String getCn() {
+ return cn;
+ }
+
+ public void setCn(String cn) {
+ this.cn = cn;
+ }
+
+ public String getTc() {
+ return tc;
+ }
+
+ public void setTc(String tc) {
+ this.tc = tc;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public void setEn(String en) {
+ this.en = en;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java
new file mode 100644
index 0000000..9b6682d
--- /dev/null
+++ b/app/src/main/java/com/fatapp/oxygentoolbox/util/ToolsList.java
@@ -0,0 +1,106 @@
+package com.fatapp.oxygentoolbox.util;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ToolsList {
+ private static List toolList = new ArrayList<>();
+
+ public static void init(InputStream file) throws IOException {
+ int i;
+ StringBuilder jsonStringBuilder = new StringBuilder();
+
+ while ((i = file.read()) != -1) {
+ jsonStringBuilder.append((char) i);
+ }
+ file.close();
+ List toolsJsonList = new Gson().fromJson(jsonStringBuilder.toString(), new TypeToken>(){}.getType());
+
+ for (ToolsJson toolsJson : toolsJsonList) {
+ Tool tool = new Tool();
+ tool.setFont(toolsJson.getContent().getFont());
+ tool.setIcon(toolsJson.getContent().getIcon());
+ tool.setFoldLayoutTitle(toolsJson.getContent().getTitle().getCn());
+ for (ToolsJson.Content.Buttons cButton : toolsJson.getContent().getButtons()) {
+ Button button = new Button();
+ button.setText(cButton.getText().getCn());
+ button.setActivity(cButton.getActivity());
+ tool.buttonList.add(button);
+ }
+ toolList.add(tool);
+ }
+ }
+
+ public static List getToolList() {
+ return toolList;
+ }
+
+ public void setToolList(List toolList) {
+ ToolsList.toolList = toolList;
+ }
+
+ public static class Tool {
+ private String font;
+ private String icon;
+ private String foldLayoutTitle;
+ private List