From 578f9ca2d7288af1b1c91b69712b9ac3e2cd5b65 Mon Sep 17 00:00:00 2001 From: niushuai233 Date: Tue, 5 Dec 2023 09:58:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:rocket:=E4=B8=BB=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- .../cc/niushuai/didicheck/MainActivity.java | 36 +++++-- ...agerAdapter.java => TabsPagerAdapter.java} | 14 +-- .../didicheck/ui/main/home/HomeFragment.java | 3 +- .../{data => records}/DataListFragment.java | 2 +- .../cc/niushuai/didicheck/util/Toasts.java | 29 ++++++ app/src/main/res/layout/activity_main.xml | 17 ---- app/src/main/res/layout/item_list.xml | 3 - .../res/mipmap-hdpi/fab_icon_swimming.png | Bin 0 -> 3751 bytes .../res/mipmap-mdpi/fab_icon_swimming.png | Bin 0 -> 1727 bytes .../res/mipmap-xhdpi/fab_icon_swimming.png | Bin 0 -> 4291 bytes .../res/mipmap-xxhdpi/fab_icon_swimming.png | Bin 0 -> 4548 bytes .../res/mipmap-xxxhdpi/fab_icon_swimming.png | Bin 0 -> 5140 bytes app/src/main/res/values/strings.xml | 96 +----------------- icon/swimming.png | Bin 0 -> 1157 bytes 15 files changed, 71 insertions(+), 131 deletions(-) rename app/src/main/java/cc/niushuai/didicheck/ui/main/{SectionsPagerAdapter.java => TabsPagerAdapter.java} (74%) rename app/src/main/java/cc/niushuai/didicheck/ui/main/{data => records}/DataListFragment.java (66%) create mode 100644 app/src/main/java/cc/niushuai/didicheck/util/Toasts.java create mode 100644 app/src/main/res/mipmap-hdpi/fab_icon_swimming.png create mode 100644 app/src/main/res/mipmap-mdpi/fab_icon_swimming.png create mode 100644 app/src/main/res/mipmap-xhdpi/fab_icon_swimming.png create mode 100644 app/src/main/res/mipmap-xxhdpi/fab_icon_swimming.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/fab_icon_swimming.png create mode 100644 icon/swimming.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 31b5e1d..d369e49 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ diff --git a/app/src/main/java/cc/niushuai/didicheck/MainActivity.java b/app/src/main/java/cc/niushuai/didicheck/MainActivity.java index 89b07e6..ef39af2 100644 --- a/app/src/main/java/cc/niushuai/didicheck/MainActivity.java +++ b/app/src/main/java/cc/niushuai/didicheck/MainActivity.java @@ -1,5 +1,6 @@ package cc.niushuai.didicheck; +import android.content.Context; import android.os.Bundle; import android.view.View; @@ -8,35 +9,52 @@ import androidx.viewpager.widget.ViewPager; import com.github.clans.fab.FloatingActionButton; import com.github.clans.fab.FloatingActionMenu; -import com.google.android.material.snackbar.Snackbar; import cc.niushuai.didicheck.databinding.ActivityMainBinding; -import cc.niushuai.didicheck.ui.main.SectionsPagerAdapter; +import cc.niushuai.didicheck.ui.main.TabsPagerAdapter; +import cc.niushuai.didicheck.util.Toasts; +import cn.hutool.core.date.DateUtil; public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; + private Context context; @Override protected void onCreate(Bundle savedInstanceState) { + context = this; super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); - SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager()); + TabsPagerAdapter tabsPagerAdapter = new TabsPagerAdapter(this, getSupportFragmentManager()); ViewPager viewPager = binding.viewPager; - viewPager.setAdapter(sectionsPagerAdapter); + viewPager.setAdapter(tabsPagerAdapter); FloatingActionMenu didiCheckMenu = binding.didiCheckMenu; - - didiCheckMenu.setOnClickListener(new View.OnClickListener() { + FloatingActionButton swimActionButton = new FloatingActionButton(this); + swimActionButton.showButtonInMenu(true); + swimActionButton.show(true); + swimActionButton.setLabelText("游泳"); + swimActionButton.setImageDrawable(this.getResources().getDrawable(R.mipmap.fab_icon_swimming, getTheme())); +// swimActionButton.setImageIcon(R.mipmap.fab_icon_swimming); + swimActionButton.setButtonSize(FloatingActionButton.SIZE_NORMAL); + swimActionButton.setColorNormal(this.getResources().getColor(R.color.white)); + swimActionButton.setColorPressed(this.getResources().getColor(R.color.white)); + swimActionButton.setTag("SWIM_TAG"); + + swimActionButton.setOnClickListener(new View.OnClickListener() { @Override - public void onClick(View view) { - Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAction("Action", null).show(); + public void onClick(View v) { + Toasts.shortShow(context, DateUtil.now() + swimActionButton.getLabelText() + "打卡完成"); + // 打卡完成 关闭动画 + didiCheckMenu.close(true); } }); + + didiCheckMenu.addMenuButton(swimActionButton); + } } \ No newline at end of file diff --git a/app/src/main/java/cc/niushuai/didicheck/ui/main/SectionsPagerAdapter.java b/app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java similarity index 74% rename from app/src/main/java/cc/niushuai/didicheck/ui/main/SectionsPagerAdapter.java rename to app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java index d0948ef..aedb8ab 100644 --- a/app/src/main/java/cc/niushuai/didicheck/ui/main/SectionsPagerAdapter.java +++ b/app/src/main/java/cc/niushuai/didicheck/ui/main/TabsPagerAdapter.java @@ -9,28 +9,30 @@ import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import cc.niushuai.didicheck.R; -import cc.niushuai.didicheck.ui.main.data.DataListFragment; import cc.niushuai.didicheck.ui.main.home.HomeFragment; +import cc.niushuai.didicheck.ui.main.records.DataListFragment; /** * A [FragmentPagerAdapter] that returns a fragment corresponding to * one of the sections/tabs/pages. */ -public class SectionsPagerAdapter extends FragmentPagerAdapter { +public class TabsPagerAdapter extends FragmentPagerAdapter { @StringRes - private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2}; + private static final int[] TAB_TITLES = new int[]{R.string.tab_home, R.string.tab_records, R.string.tab_settings}; private final Context mContext; - public SectionsPagerAdapter(Context context, FragmentManager fm) { + public TabsPagerAdapter(Context context, FragmentManager fm) { super(fm); mContext = context; } @Override public Fragment getItem(int position) { - if (position == 1) { + if (position == 0) { return new HomeFragment(); + } else if (position == 1) { + return new DataListFragment(); } else if (position == 2) { return new DataListFragment(); } @@ -45,6 +47,6 @@ public class SectionsPagerAdapter extends FragmentPagerAdapter { @Override public int getCount() { - return 2; + return 3; } } \ No newline at end of file diff --git a/app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java b/app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java index 97f5796..01b8280 100644 --- a/app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java +++ b/app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java @@ -13,7 +13,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.fragment.app.Fragment; -import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.DividerItemDecoration; @@ -59,7 +58,7 @@ public class HomeFragment extends Fragment { homeMainCalendar.setDate(DateUtil.date().getTime()); homeMainCalendar.setOnDateChangeListener((calendarView, year, month, day) -> { long date = calendarView.getDate(); - Log.d("tagxx", "tag = " + DateUtil.date(date).toDateStr()); + Log.d("tagxx", "tag = " + DateUtil.date(date).toDateStr() + ", ==>" + year + month + day); }); RecyclerView homeDataZoneRecyclerView = fragmentHomeBinding.homeDataZoneRecyclerView; diff --git a/app/src/main/java/cc/niushuai/didicheck/ui/main/data/DataListFragment.java b/app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java similarity index 66% rename from app/src/main/java/cc/niushuai/didicheck/ui/main/data/DataListFragment.java rename to app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java index b0495c6..ccad604 100644 --- a/app/src/main/java/cc/niushuai/didicheck/ui/main/data/DataListFragment.java +++ b/app/src/main/java/cc/niushuai/didicheck/ui/main/records/DataListFragment.java @@ -1,4 +1,4 @@ -package cc.niushuai.didicheck.ui.main.data; +package cc.niushuai.didicheck.ui.main.records; import androidx.fragment.app.Fragment; diff --git a/app/src/main/java/cc/niushuai/didicheck/util/Toasts.java b/app/src/main/java/cc/niushuai/didicheck/util/Toasts.java new file mode 100644 index 0000000..de94a63 --- /dev/null +++ b/app/src/main/java/cc/niushuai/didicheck/util/Toasts.java @@ -0,0 +1,29 @@ +package cc.niushuai.didicheck.util; + +import android.content.Context; +import android.widget.Toast; + +import cn.hutool.core.util.StrUtil; + +public class Toasts { + + public static void shortShow(Context context, String msg) { + shortShow(context, msg, null); + } + + public static void shortShow(Context context, String msg, String... params) { + show(context, Toast.LENGTH_SHORT, msg, params); + } + + public static void longShow(Context context, String msg) { + longShow(context, msg, null); + } + + public static void longShow(Context context, String msg, String... params) { + show(context, Toast.LENGTH_SHORT, msg, params); + } + + public static void show(Context context, int duration, String msg, String... params) { + Toast.makeText(context, StrUtil.format(msg, params), duration).show(); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index fcdc0b0..1aafee9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -60,22 +60,5 @@ app:menu_fab_label="" app:menu_fab_show_animation="@anim/fab_scale_up" app:menu_fab_hide_animation="@anim/fab_scale_down"> - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml index b93bf40..99c321f 100644 --- a/app/src/main/res/layout/item_list.xml +++ b/app/src/main/res/layout/item_list.xml @@ -1,7 +1,6 @@ @@ -11,7 +10,6 @@ android:layout_height="wrap_content" android:layout_marginStart="29dp" android:layout_marginTop="33dp" - android:text="标题" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -21,7 +19,6 @@ android:layout_height="wrap_content" android:layout_marginStart="4dp" android:layout_marginTop="18dp" - android:text="内容" app:layout_constraintStart_toStartOf="@id/item_list_title_textView" app:layout_constraintTop_toBottomOf="@id/item_list_title_textView" /> diff --git a/app/src/main/res/mipmap-hdpi/fab_icon_swimming.png b/app/src/main/res/mipmap-hdpi/fab_icon_swimming.png new file mode 100644 index 0000000000000000000000000000000000000000..c7cd7be7d27946e599c38b54567fb8fa0db84ca8 GIT binary patch literal 3751 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 R1)%@{002ovPDHLkV1mj|HyQu{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/fab_icon_swimming.png b/app/src/main/res/mipmap-mdpi/fab_icon_swimming.png new file mode 100644 index 0000000000000000000000000000000000000000..c86882a4b7be54539b029675441c7be0c0ce5395 GIT binary patch literal 1727 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 b{*4?f&vJY5xES~EIRVguK-H>MVUhm>(`!V! literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/fab_icon_swimming.png b/app/src/main/res/mipmap-xxhdpi/fab_icon_swimming.png new file mode 100644 index 0000000000000000000000000000000000000000..c71a6e606a0177cdefcbf8f8d42fd5dd3aa7a7c1 GIT binary patch literal 4548 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 E05SEvng9R* literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/fab_icon_swimming.png b/app/src/main/res/mipmap-xxxhdpi/fab_icon_swimming.png new file mode 100644 index 0000000000000000000000000000000000000000..032368133a6c039d7812a83749b816433eac5541 GIT binary patch literal 5140 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 Wq@TvtSKR&_ZFJvEuR+J{)qeqS>g%-t literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 285dbd5..f1b1f53 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,96 +1,8 @@ DiDiCheck - MainActivity - Tab 1 - Tab 2 - Tab 3 - - "Material is the metaphor.\n\n" + 滴滴打卡 + Home + Records + Settings - "A material metaphor is the unifying theory of a rationalized space and a system of motion." - "The material is grounded in tactile reality, inspired by the study of paper and ink, yet " - "technologically advanced and open to imagination and magic.\n" - "Surfaces and edges of the material provide visual cues that are grounded in reality. The " - "use of familiar tactile attributes helps users quickly understand affordances. Yet the " - "flexibility of the material creates new affordances that supercede those in the physical " - "world, without breaking the rules of physics.\n" - "The fundamentals of light, surface, and movement are key to conveying how objects move, " - "interact, and exist in space and in relation to each other. Realistic lighting shows " - "seams, divides space, and indicates moving parts.\n\n" - - "Bold, graphic, intentional.\n\n" - - "The foundational elements of print based design typography, grids, space, scale, color, " - "and use of imagery guide visual treatments. These elements do far more than please the " - "eye. They create hierarchy, meaning, and focus. Deliberate color choices, edge to edge " - "imagery, large scale typography, and intentional white space create a bold and graphic " - "interface that immerse the user in the experience.\n" - "An emphasis on user actions makes core functionality immediately apparent and provides " - "waypoints for the user.\n\n" - - "Motion provides meaning.\n\n" - - "Motion respects and reinforces the user as the prime mover. Primary user actions are " - "inflection points that initiate motion, transforming the whole design.\n" - "All action takes place in a single environment. Objects are presented to the user without " - "breaking the continuity of experience even as they transform and reorganize.\n" - "Motion is meaningful and appropriate, serving to focus attention and maintain continuity. " - "Feedback is subtle yet clear. Transitions are efficient yet coherent.\n\n" - - "3D world.\n\n" - - "The material environment is a 3D space, which means all objects have x, y, and z " - "dimensions. The z-axis is perpendicularly aligned to the plane of the display, with the " - "positive z-axis extending towards the viewer. Every sheet of material occupies a single " - "position along the z-axis and has a standard 1dp thickness.\n" - "On the web, the z-axis is used for layering and not for perspective. The 3D world is " - "emulated by manipulating the y-axis.\n\n" - - "Light and shadow.\n\n" - - "Within the material environment, virtual lights illuminate the scene. Key lights create " - "directional shadows, while ambient light creates soft shadows from all angles.\n" - "Shadows in the material environment are cast by these two light sources. In Android " - "development, shadows occur when light sources are blocked by sheets of material at " - "various positions along the z-axis. On the web, shadows are depicted by manipulating the " - "y-axis only. The following example shows the card with a height of 6dp.\n\n" - - "Resting elevation.\n\n" - - "All material objects, regardless of size, have a resting elevation, or default elevation " - "that does not change. If an object changes elevation, it should return to its resting " - "elevation as soon as possible.\n\n" - - "Component elevations.\n\n" - - "The resting elevation for a component type is consistent across apps (e.g., FAB elevation " - "does not vary from 6dp in one app to 16dp in another app).\n" - "Components may have different resting elevations across platforms, depending on the depth " - "of the environment (e.g., TV has a greater depth than mobile or desktop).\n\n" - - "Responsive elevation and dynamic elevation offsets.\n\n" - - "Some component types have responsive elevation, meaning they change elevation in response " - "to user input (e.g., normal, focused, and pressed) or system events. These elevation " - "changes are consistently implemented using dynamic elevation offsets.\n" - "Dynamic elevation offsets are the goal elevation that a component moves towards, relative " - "to the component’s resting state. They ensure that elevation changes are consistent " - "across actions and component types. For example, all components that lift on press have " - "the same elevation change relative to their resting elevation.\n" - "Once the input event is completed or cancelled, the component will return to its resting " - "elevation.\n\n" - - "Avoiding elevation interference.\n\n" - - "Components with responsive elevations may encounter other components as they move between " - "their resting elevations and dynamic elevation offsets. Because material cannot pass " - "through other material, components avoid interfering with one another any number of ways, " - "whether on a per component basis or using the entire app layout.\n" - "On a component level, components can move or be removed before they cause interference. " - "For example, a floating action button (FAB) can disappear or move off screen before a " - "user picks up a card, or it can move if a snackbar appears.\n" - "On the layout level, design your app layout to minimize opportunities for interference. " - "For example, position the FAB to one side of stream of a cards so the FAB won’t interfere " - "when a user tries to pick up one of cards.\n\n" - \ No newline at end of file diff --git a/icon/swimming.png b/icon/swimming.png new file mode 100644 index 0000000000000000000000000000000000000000..8126523cc5586f1c3189a817c740cef959e5a032 GIT binary patch literal 1157 zcmV;01bX|4P)Px(KS@MER9HvtmVIbdbr{D#&pF$jZ0G9Te7A(<8@`kcO+n3ksURa8S_>*l6ep6A z1$CSDqN2FDEDV*jRY+unLYWfLLNHSI#|Vd+Mx@PYX}axR-QC)~-gBP#-Ay?gn>DwP zzz6O>zw_MZ`@P@i`}^J_+~ks*jL$6s|7!(i0tdS5p&L~o3~T^K04KXc;zkH82Fidn z!0PURo9}j&z!2bfU~UgQ>vRz#O0&Fse)e zUOKe%^)plRMh^9pNGO99KI(}T7(ipfafU^|kW&@=E8#T96DEubTeE=$`S*UYV}0Sg z%{$90!f)^H-}=0>Tl24Tzy!`J%aXb!1+$KSy!X&;;e~S|kItUZ$H?6rPZ*~!1-1bp z-)fqG*MLpkxrWPtEqC1Bukyong?(mC8a>KC?2~L3E;@} z!bqH=Xn}a@ct}lSX=s1D=F~5r_*nSZj7OfV&#*ncGZf8yYWUen{=PADizLwz&1VW+4j`@nEj2=|L-LosMk`UhwyI^?jhnJ$Z}3Ed~At X$8nF`c%d?^00000NkvXXu0mjf3r#FJ literal 0 HcmV?d00001