diff --git a/app/build.gradle b/app/build.gradle index debf2a4..4082ecb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ android { sourceSets { main { res { - srcDirs 'src/main/res', 'src/main/res/layout/resetpwd', 'src/main/res/layout/resetpwd/layout' + srcDirs 'src/main/res', 'src/main/res/layout/resetpwd', 'src/main/res/layout/resetpwd/layout', 'src/main/res/layout/main', 'src/main/res/layout/main/layout' } } } @@ -40,6 +40,7 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.navigation:navigation-fragment:2.2.1' implementation 'androidx.navigation:navigation-ui:2.2.1' + implementation 'androidx.vectordrawable:vectordrawable:1.1.0' testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4ef0eaf..e701d7f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,6 +10,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme.NoActionBar"> + diff --git a/app/src/main/java/com/community/pocket/ui/BaseFragment.java b/app/src/main/java/com/community/pocket/ui/BaseFragment.java index cadb5ba..89ce581 100644 --- a/app/src/main/java/com/community/pocket/ui/BaseFragment.java +++ b/app/src/main/java/com/community/pocket/ui/BaseFragment.java @@ -15,7 +15,7 @@ import org.xutils.x; * 封装初始化xutils逻辑 */ public abstract class BaseFragment extends Fragment { - @Nullable + @NonNull @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return x.view().inject(this, inflater, container);//fragment注解 diff --git a/app/src/main/java/com/community/pocket/ui/login/LoginActivity.java b/app/src/main/java/com/community/pocket/ui/login/LoginActivity.java index cc6d552..b01d6ec 100644 --- a/app/src/main/java/com/community/pocket/ui/login/LoginActivity.java +++ b/app/src/main/java/com/community/pocket/ui/login/LoginActivity.java @@ -21,6 +21,7 @@ import androidx.lifecycle.ViewModelProvider; import com.community.pocket.R; import com.community.pocket.ui.BaseActivity; +import com.community.pocket.ui.main.MainMenu; import com.community.pocket.ui.register.RegisterActivity; import com.community.pocket.ui.resetpwd.ResetPwdActivity; import com.community.pocket.util.PropertiesUtil; @@ -93,8 +94,9 @@ public class LoginActivity extends BaseActivity { } setResult(Activity.RESULT_OK); + startActivity(new Intent(getApplicationContext(), MainMenu.class)); //Complete and destroy login activity once successful -// finish(); + finish(); } }); diff --git a/app/src/main/java/com/community/pocket/ui/main/MainFragment.java b/app/src/main/java/com/community/pocket/ui/main/MainFragment.java new file mode 100644 index 0000000..019afff --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/MainFragment.java @@ -0,0 +1,39 @@ +package com.community.pocket.ui.main; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Observer; + +import com.community.pocket.ui.BaseFragment; + +import org.jetbrains.annotations.NotNull; + +public abstract class MainFragment extends BaseFragment { + + @NotNull + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + View root = super.onCreateView(inflater, container, savedInstanceState); + final TextView textView = root.findViewById(viewId()); + MutableLiveData mText = new MutableLiveData<>(); + mText.setValue(this.getClass().getName()); + mText.observe(getViewLifecycleOwner(), new Observer() { + @Override + public void onChanged(@Nullable String s) { + textView.setText(s); + } + }); + + return root; + } + + protected abstract int viewId(); +} diff --git a/app/src/main/java/com/community/pocket/ui/main/MainMenu.java b/app/src/main/java/com/community/pocket/ui/main/MainMenu.java new file mode 100644 index 0000000..92b585c --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/MainMenu.java @@ -0,0 +1,32 @@ +package com.community.pocket.ui.main; + +import android.os.Bundle; + +import androidx.navigation.NavController; +import androidx.navigation.Navigation; +import androidx.navigation.ui.NavigationUI; + +import com.community.pocket.R; +import com.community.pocket.ui.BaseActivity; +import com.google.android.material.bottomnavigation.BottomNavigationView; + +import org.xutils.view.annotation.ContentView; +import org.xutils.view.annotation.ViewInject; + +@ContentView((R.layout.activity_main_menu)) +public class MainMenu extends BaseActivity { + + @ViewInject(R.id.nav_view) + private BottomNavigationView navView; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); + NavigationUI.setupWithNavController(navView, navController); + } + +} diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/dashboard/DashboardFragment.java b/app/src/main/java/com/community/pocket/ui/main/ui/dashboard/DashboardFragment.java new file mode 100644 index 0000000..7840edc --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/dashboard/DashboardFragment.java @@ -0,0 +1,15 @@ +package com.community.pocket.ui.main.ui.dashboard; + +import com.community.pocket.R; +import com.community.pocket.ui.main.MainFragment; + +import org.xutils.view.annotation.ContentView; + + +@ContentView(R.layout.fragment_dashboard) +public class DashboardFragment extends MainFragment { + @Override + protected int viewId() { + return R.id.text_dashboard; + } +} diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/dashboard/DashboardViewModel.java b/app/src/main/java/com/community/pocket/ui/main/ui/dashboard/DashboardViewModel.java new file mode 100644 index 0000000..f644580 --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/dashboard/DashboardViewModel.java @@ -0,0 +1,19 @@ +package com.community.pocket.ui.main.ui.dashboard; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class DashboardViewModel extends ViewModel { + + private MutableLiveData mText; + + public DashboardViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is dashboard fragment"); + } + + LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/home/HomeFragment.java b/app/src/main/java/com/community/pocket/ui/main/ui/home/HomeFragment.java new file mode 100644 index 0000000..152cb7d --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/home/HomeFragment.java @@ -0,0 +1,15 @@ +package com.community.pocket.ui.main.ui.home; + +import com.community.pocket.R; +import com.community.pocket.ui.main.MainFragment; + +import org.xutils.view.annotation.ContentView; + +@ContentView(R.layout.fragment_home) +public class HomeFragment extends MainFragment { + + @Override + protected int viewId() { + return R.id.text_home; + } +} diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/home/HomeViewModel.java b/app/src/main/java/com/community/pocket/ui/main/ui/home/HomeViewModel.java new file mode 100644 index 0000000..b92a438 --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/home/HomeViewModel.java @@ -0,0 +1,19 @@ +package com.community.pocket.ui.main.ui.home; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class HomeViewModel extends ViewModel { + + private MutableLiveData mText; + + public HomeViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is home fragment"); + } + + LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/info/InfoFragment.java b/app/src/main/java/com/community/pocket/ui/main/ui/info/InfoFragment.java new file mode 100644 index 0000000..f5d2aab --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/info/InfoFragment.java @@ -0,0 +1,17 @@ +package com.community.pocket.ui.main.ui.info; + +import com.community.pocket.R; +import com.community.pocket.ui.main.MainFragment; + +import org.xutils.view.annotation.ContentView; + +@ContentView(R.layout.info_fragment) +public class InfoFragment extends MainFragment { + + @Override + protected int viewId() { + return R.id.text_info; + } + + +} diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/info/InfoViewModel.java b/app/src/main/java/com/community/pocket/ui/main/ui/info/InfoViewModel.java new file mode 100644 index 0000000..4e7bc2b --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/info/InfoViewModel.java @@ -0,0 +1,19 @@ +package com.community.pocket.ui.main.ui.info; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +class InfoViewModel extends ViewModel { + + private MutableLiveData mText; + + public InfoViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is info fragment"); + } + + LiveData getText() { + return mText; + } +} diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/notifications/NotificationsFragment.java b/app/src/main/java/com/community/pocket/ui/main/ui/notifications/NotificationsFragment.java new file mode 100644 index 0000000..3dba6d2 --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/notifications/NotificationsFragment.java @@ -0,0 +1,16 @@ +package com.community.pocket.ui.main.ui.notifications; + +import com.community.pocket.R; +import com.community.pocket.ui.main.MainFragment; + +import org.xutils.view.annotation.ContentView; + + +@ContentView(R.layout.fragment_notifications) +public class NotificationsFragment extends MainFragment { + + @Override + protected int viewId() { + return R.id.text_notifications; + } +} diff --git a/app/src/main/java/com/community/pocket/ui/main/ui/notifications/NotificationsViewModel.java b/app/src/main/java/com/community/pocket/ui/main/ui/notifications/NotificationsViewModel.java new file mode 100644 index 0000000..c0c8023 --- /dev/null +++ b/app/src/main/java/com/community/pocket/ui/main/ui/notifications/NotificationsViewModel.java @@ -0,0 +1,19 @@ +package com.community.pocket.ui.main.ui.notifications; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class NotificationsViewModel extends ViewModel { + + private MutableLiveData mText; + + public NotificationsViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is notifications fragment"); + } + + LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dashboard_black_24dp.xml b/app/src/main/res/drawable/ic_dashboard_black_24dp.xml new file mode 100644 index 0000000..46fc8de --- /dev/null +++ b/app/src/main/res/drawable/ic_dashboard_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml new file mode 100644 index 0000000..f8bb0b5 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/app/src/main/res/drawable/ic_notifications_black_24dp.xml new file mode 100644 index 0000000..78b75c3 --- /dev/null +++ b/app/src/main/res/drawable/ic_notifications_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/main/layout/activity_main_menu.xml b/app/src/main/res/layout/main/layout/activity_main_menu.xml new file mode 100644 index 0000000..1555ee6 --- /dev/null +++ b/app/src/main/res/layout/main/layout/activity_main_menu.xml @@ -0,0 +1,36 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main/layout/fragment_dashboard.xml b/app/src/main/res/layout/main/layout/fragment_dashboard.xml new file mode 100644 index 0000000..1bfbe37 --- /dev/null +++ b/app/src/main/res/layout/main/layout/fragment_dashboard.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main/layout/fragment_home.xml b/app/src/main/res/layout/main/layout/fragment_home.xml new file mode 100644 index 0000000..e4bb13e --- /dev/null +++ b/app/src/main/res/layout/main/layout/fragment_home.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main/layout/fragment_notifications.xml b/app/src/main/res/layout/main/layout/fragment_notifications.xml new file mode 100644 index 0000000..1719248 --- /dev/null +++ b/app/src/main/res/layout/main/layout/fragment_notifications.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main/layout/info_fragment.xml b/app/src/main/res/layout/main/layout/info_fragment.xml new file mode 100644 index 0000000..46f0c0b --- /dev/null +++ b/app/src/main/res/layout/main/layout/info_fragment.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml new file mode 100644 index 0000000..8511171 --- /dev/null +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml new file mode 100644 index 0000000..f9442df --- /dev/null +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml index 25d931c..4f4d7dc 100644 --- a/app/src/main/res/values-en-rUS/strings.xml +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -26,4 +26,8 @@ Next Previous send code + Forum + Visitor + Recycle + MyInformation \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 60fb858..9864195 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -26,4 +26,8 @@ 下一步 上一步 发送验证码 + 论坛 + 访客管理 + 垃圾上门回收 + 我的信息 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8f3b83..7259d32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,6 +27,10 @@ Next Previous send code + Forum + Visitor + Recycle + MyInformation