diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..48f16ac --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 16d8ffd..360c39a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -15,6 +15,12 @@ + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 798d5e0..a341950 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,6 +21,11 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + + buildFeatures{ + viewBinding true + } + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1c300e6..d77bd51 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,6 +31,9 @@ android:supportsRtl="true" android:theme="@style/Theme.QTagger" tools:targetApi="31"> + diff --git a/app/src/main/java/com/qtagger/Activity/NaviFragment/SearchFragment.java b/app/src/main/java/com/qtagger/Activity/NaviFragment/SearchFragment.java new file mode 100644 index 0000000..d103082 --- /dev/null +++ b/app/src/main/java/com/qtagger/Activity/NaviFragment/SearchFragment.java @@ -0,0 +1,66 @@ +package com.qtagger.Activity.NaviFragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.qtagger.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link SearchFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class SearchFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public SearchFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment SearchFragment. + */ + // TODO: Rename and change types and number of parameters + public static SearchFragment newInstance(String param1, String param2) { + SearchFragment fragment = new SearchFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_search, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/qtagger/Activity/NaviFragment/SelectFragment.java b/app/src/main/java/com/qtagger/Activity/NaviFragment/SelectFragment.java new file mode 100644 index 0000000..bd9c3bc --- /dev/null +++ b/app/src/main/java/com/qtagger/Activity/NaviFragment/SelectFragment.java @@ -0,0 +1,66 @@ +package com.qtagger.Activity.NaviFragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.qtagger.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link SelectFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class SelectFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public SelectFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment SelectFragment. + */ + // TODO: Rename and change types and number of parameters + public static SelectFragment newInstance(String param1, String param2) { + SelectFragment fragment = new SelectFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_select, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/qtagger/Activity/NaviFragment/SettingFragment.java b/app/src/main/java/com/qtagger/Activity/NaviFragment/SettingFragment.java new file mode 100644 index 0000000..17ef021 --- /dev/null +++ b/app/src/main/java/com/qtagger/Activity/NaviFragment/SettingFragment.java @@ -0,0 +1,66 @@ +package com.qtagger.Activity.NaviFragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.qtagger.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link SettingFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class SettingFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public SettingFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment SettingFragment. + */ + // TODO: Rename and change types and number of parameters + public static SettingFragment newInstance(String param1, String param2) { + SettingFragment fragment = new SettingFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_setting, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java b/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java new file mode 100644 index 0000000..b321956 --- /dev/null +++ b/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java @@ -0,0 +1,66 @@ +package com.qtagger.Activity.NaviFragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.qtagger.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link TestFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class TestFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public TestFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment TestFragment. + */ + // TODO: Rename and change types and number of parameters + public static TestFragment newInstance(String param1, String param2) { + TestFragment fragment = new TestFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_test, container, false); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/qtagger/Activity/NavigationActivity.java b/app/src/main/java/com/qtagger/Activity/NavigationActivity.java new file mode 100644 index 0000000..c10060e --- /dev/null +++ b/app/src/main/java/com/qtagger/Activity/NavigationActivity.java @@ -0,0 +1,86 @@ +package com.qtagger.Activity; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.MenuItem; +import android.widget.Toast; + +import com.google.android.material.bottomnavigation.BottomNavigationView; +import com.google.android.material.internal.NavigationMenu; +import com.qtagger.Activity.NaviFragment.SearchFragment; +import com.qtagger.Activity.NaviFragment.SettingFragment; +import com.qtagger.Activity.NaviFragment.TestFragment; +import com.qtagger.R; +import com.qtagger.databinding.ActivityMainBinding; +import com.qtagger.util.DataManager; + +public class NavigationActivity extends AppCompatActivity { + private final long finishtimeed = 1000; + private long presstime = 0; + private FragmentManager fragmentManager = getSupportFragmentManager(); + private TestFragment testFragment = new TestFragment(); + private SearchFragment searchFragment = new SearchFragment(); + private SettingFragment settingFragment = new SettingFragment(); + private DataManager dataManager = DataManager.getInstance(); + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_navigation); + + FragmentTransaction transaction = fragmentManager.beginTransaction(); + transaction.replace(R.id.frame, testFragment).commitAllowingStateLoss(); + + BottomNavigationView bottomNavigationView = findViewById(R.id.nav_view); + bottomNavigationView.setOnNavigationItemSelectedListener(new ItemSelectedListener()); + + + } + + class ItemSelectedListener implements BottomNavigationView.OnNavigationItemSelectedListener { + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { + FragmentTransaction transaction = fragmentManager.beginTransaction(); + + switch (menuItem.getItemId()) { + case R.id.navigation_test: + transaction.replace(R.id.frame, testFragment).commitAllowingStateLoss(); + break; + case R.id.navigation_search: + transaction.replace(R.id.frame, searchFragment).commitAllowingStateLoss(); + break; + case R.id.navigation_setting: + transaction.replace(R.id.frame, settingFragment).commitAllowingStateLoss(); + break; + + } + + return true; + } + } + + + @Override + public void onBackPressed() { + long tempTime = System.currentTimeMillis(); + long intervalTime = tempTime - presstime; + + if (0 <= intervalTime && finishtimeed >= intervalTime) + { + moveTaskToBack(true); + finish(); + android.os.Process.killProcess(android.os.Process.myPid()); + } + else + { + presstime = tempTime; + Toast.makeText(getApplicationContext(), "한번더 누르시면 앱이 종료됩니다", Toast.LENGTH_SHORT).show(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/qtagger/MainActivity.java b/app/src/main/java/com/qtagger/MainActivity.java index 25bdae4..ad118c6 100644 --- a/app/src/main/java/com/qtagger/MainActivity.java +++ b/app/src/main/java/com/qtagger/MainActivity.java @@ -18,6 +18,7 @@ import android.widget.Toast; import com.qtagger.Activity.AccountAdd; import com.qtagger.Activity.AccountList; +import com.qtagger.Activity.NavigationActivity; import com.qtagger.Database.Account; import com.qtagger.Database.AppDatabase; import com.qtagger.util.DataManager; @@ -59,7 +60,8 @@ public class MainActivity extends AppCompatActivity { if(selectAcc != null)//로그인 처리 { dataManager.loginAccount = selectAcc; - + Intent intent2 = new Intent(getApplicationContext(), NavigationActivity.class); + startActivity(intent2); } diff --git a/app/src/main/res/drawable/document_checklist_icon_icons_com_32.png b/app/src/main/res/drawable/document_checklist_icon_icons_com_32.png new file mode 100644 index 0000000..2646ca0 Binary files /dev/null and b/app/src/main/res/drawable/document_checklist_icon_icons_com_32.png differ diff --git a/app/src/main/res/drawable/more_button_of_three_dots_icon_icons_com_74259___.png b/app/src/main/res/drawable/more_button_of_three_dots_icon_icons_com_74259___.png new file mode 100644 index 0000000..4bd93ad Binary files /dev/null and b/app/src/main/res/drawable/more_button_of_three_dots_icon_icons_com_74259___.png differ diff --git a/app/src/main/res/drawable/searchmagnifierinterfacesymbol1_32.png b/app/src/main/res/drawable/searchmagnifierinterfacesymbol1_32.png new file mode 100644 index 0000000..912139f Binary files /dev/null and b/app/src/main/res/drawable/searchmagnifierinterfacesymbol1_32.png differ diff --git a/app/src/main/res/layout/activity_navigation.xml b/app/src/main/res/layout/activity_navigation.xml new file mode 100644 index 0000000..ae95f9a --- /dev/null +++ b/app/src/main/res/layout/activity_navigation.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml new file mode 100644 index 0000000..49cd1e5 --- /dev/null +++ b/app/src/main/res/layout/fragment_search.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_select.xml b/app/src/main/res/layout/fragment_select.xml new file mode 100644 index 0000000..d8866ba --- /dev/null +++ b/app/src/main/res/layout/fragment_select.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_setting.xml b/app/src/main/res/layout/fragment_setting.xml new file mode 100644 index 0000000..f811f46 --- /dev/null +++ b/app/src/main/res/layout/fragment_setting.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_test.xml b/app/src/main/res/layout/fragment_test.xml new file mode 100644 index 0000000..287b230 --- /dev/null +++ b/app/src/main/res/layout/fragment_test.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file 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..0d0c408 --- /dev/null +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -0,0 +1,17 @@ + + + + + + + + \ 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 69f5585..bc4cab3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,5 @@ QTagger + + Hello blank fragment \ No newline at end of file