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