diff --git a/app/build.gradle b/app/build.gradle index ea5a53c..eedc0bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,6 +29,11 @@ dependencies { implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" + def room_version = "2.2.5" + + implementation "androidx.room:room-runtime:$room_version" + annotationProcessor "androidx.room:room-compiler:$room_version" + implementation fileTree(dir: "libs", include: ["*.jar"]) implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.1' diff --git a/app/src/main/java/com/example/wordmemorizationgame/database/Word.java b/app/src/main/java/com/example/wordmemorizationgame/database/Word.java new file mode 100644 index 0000000..cf8637b --- /dev/null +++ b/app/src/main/java/com/example/wordmemorizationgame/database/Word.java @@ -0,0 +1,17 @@ +package com.example.wordmemorizationgame.database; + +import androidx.room.ColumnInfo; +import androidx.room.Entity; +import androidx.room.PrimaryKey; + +@Entity +public class Word { + @PrimaryKey(autoGenerate = true) + public int id; + + @ColumnInfo(name = "word_english") + public String word_english; + + @ColumnInfo(name = "word_korean") + public String word_korean; +} diff --git a/app/src/main/java/com/example/wordmemorizationgame/database/WordDao.java b/app/src/main/java/com/example/wordmemorizationgame/database/WordDao.java new file mode 100644 index 0000000..3f05d12 --- /dev/null +++ b/app/src/main/java/com/example/wordmemorizationgame/database/WordDao.java @@ -0,0 +1,26 @@ +package com.example.wordmemorizationgame.database; + +import androidx.room.Dao; +import androidx.room.Delete; +import androidx.room.Insert; +import androidx.room.Query; + +import java.util.List; + +@Dao +public interface WordDao { + @Query("SELECT * FROM word") + List getAll(); + + @Query("SELECT word_english FROM word") + List getWord_englishAll(); + + @Query("SELECT word_korean FROM word") + List getWord_koreanAll(); + + @Insert + void insertAll(Word... words); + + @Delete + void delete(Word word); +} diff --git a/app/src/main/java/com/example/wordmemorizationgame/database/WordDatabase.java b/app/src/main/java/com/example/wordmemorizationgame/database/WordDatabase.java new file mode 100644 index 0000000..4c7eb75 --- /dev/null +++ b/app/src/main/java/com/example/wordmemorizationgame/database/WordDatabase.java @@ -0,0 +1,22 @@ +package com.example.wordmemorizationgame.database; + +import android.content.Context; + +import androidx.room.Database; +import androidx.room.Room; +import androidx.room.RoomDatabase; + +import com.example.wordmemorizationgame.ui.voca.MyvocaFragment; + +@Database(entities = {Word.class}, version = 1) +public abstract class WordDatabase extends RoomDatabase { + private static WordDatabase INSTANCE; + public abstract WordDao wordDao(); + + public static WordDatabase getAppDatabase(Context context){ + if(INSTANCE == null){ + INSTANCE = Room.databaseBuilder(context, WordDatabase.class , "word-db").allowMainThreadQueries().build(); + } + return INSTANCE; + } +} diff --git a/app/src/main/java/com/example/wordmemorizationgame/ui/SplashActivity.java b/app/src/main/java/com/example/wordmemorizationgame/ui/SplashActivity.java index 2af459c..ccb4e0e 100644 --- a/app/src/main/java/com/example/wordmemorizationgame/ui/SplashActivity.java +++ b/app/src/main/java/com/example/wordmemorizationgame/ui/SplashActivity.java @@ -27,7 +27,7 @@ void startSplash() { @Override public void run() { // - Intent intent = new Intent(getApplicationContext(),UserActivity.class); + Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); finish(); } diff --git a/app/src/main/java/com/example/wordmemorizationgame/ui/main/MainActivity.java b/app/src/main/java/com/example/wordmemorizationgame/ui/main/MainActivity.java index d026ceb..eb85cb3 100644 --- a/app/src/main/java/com/example/wordmemorizationgame/ui/main/MainActivity.java +++ b/app/src/main/java/com/example/wordmemorizationgame/ui/main/MainActivity.java @@ -1,19 +1,24 @@ package com.example.wordmemorizationgame.ui.main; import androidx.appcompat.app.AppCompatActivity; +import androidx.navigation.fragment.NavHostFragment; +import androidx.navigation.ui.NavigationUI; import android.os.Bundle; import com.example.wordmemorizationgame.R; +import com.google.android.material.bottomnavigation.BottomNavigationView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { - // MainActivity - // develop - // branch + super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navi); + NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.navHost_main); + NavigationUI.setupWithNavController(bottomNavigationView,navHostFragment.getNavController()); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/wordmemorizationgame/ui/voca/MyvocaAdapter.java b/app/src/main/java/com/example/wordmemorizationgame/ui/voca/MyvocaAdapter.java new file mode 100644 index 0000000..a883eb1 --- /dev/null +++ b/app/src/main/java/com/example/wordmemorizationgame/ui/voca/MyvocaAdapter.java @@ -0,0 +1,57 @@ +package com.example.wordmemorizationgame.ui.voca; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.example.wordmemorizationgame.R; + +import java.util.ArrayList; + +public class MyvocaAdapter extends RecyclerView.Adapter { + private ArrayList mData = null; + + MyvocaAdapter(ArrayList list) { + mData = list; + } + + @Override + public MyvocaAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + Context context = parent.getContext() ; + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + View view = inflater.inflate(R.layout.myvoca_item, parent, false); + MyvocaAdapter.ViewHolder vh = new MyvocaAdapter.ViewHolder(view); + + return vh; + } + + @Override + public void onBindViewHolder(MyvocaAdapter.ViewHolder holder, int position) { + MyvocaItem item = mData.get(position); + + holder.word_english.setText(item.getWord_english()); + holder.word_korean.setText(item.getWord_korean()); + } + + @Override + public int getItemCount() { + return mData.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + TextView word_english; + TextView word_korean; + + ViewHolder(View itemView) { + super(itemView) ; + + word_english = itemView.findViewById(R.id.word_english); + word_korean = itemView.findViewById(R.id.word_korean); + } + } +} diff --git a/app/src/main/java/com/example/wordmemorizationgame/ui/voca/MyvocaFragment.java b/app/src/main/java/com/example/wordmemorizationgame/ui/voca/MyvocaFragment.java new file mode 100644 index 0000000..eca1411 --- /dev/null +++ b/app/src/main/java/com/example/wordmemorizationgame/ui/voca/MyvocaFragment.java @@ -0,0 +1,80 @@ +package com.example.wordmemorizationgame.ui.voca; + +import android.graphics.drawable.Drawable; +import android.os.Bundle; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import com.example.wordmemorizationgame.R; +import com.example.wordmemorizationgame.database.Word; +import com.example.wordmemorizationgame.database.WordDatabase; + +import java.util.ArrayList; +import java.util.List; + +public class MyvocaFragment extends Fragment { + + public MyvocaFragment() { + // Required empty public constructor + } + + RecyclerView mRecyclerView = null; + MyvocaAdapter mAdapter = null; + ArrayList mList = new ArrayList(); + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + LinearLayout layout = (LinearLayout)inflater.inflate(R.layout.fragment_myvoca, container, false); + mRecyclerView = (RecyclerView)layout.findViewById(R.id.recycler); + WordDatabase wordDatabase = WordDatabase.getAppDatabase(getContext()); + + mAdapter = new MyvocaAdapter(mList); + mRecyclerView.setAdapter(mAdapter); + + mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + + List word_english_list = wordDatabase.wordDao().getWord_englishAll(); + List word_korean_list = wordDatabase.wordDao().getWord_koreanAll(); + + String[] word_english_array = word_english_list.toArray(new String[word_english_list.size()]); + String[] word_korean_array = word_korean_list.toArray(new String[word_korean_list.size()]); + + for(int i=0; i + + diff --git a/app/src/main/res/drawable/ic_menu_book_black_24dp.xml b/app/src/main/res/drawable/ic_menu_book_black_24dp.xml new file mode 100644 index 0000000..11a8db8 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_book_black_24dp.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_military_tech_black_24dp.xml b/app/src/main/res/drawable/ic_military_tech_black_24dp.xml new file mode 100644 index 0000000..872d496 --- /dev/null +++ b/app/src/main/res/drawable/ic_military_tech_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_person_black_24dp.xml b/app/src/main/res/drawable/ic_person_black_24dp.xml new file mode 100644 index 0000000..5634154 --- /dev/null +++ b/app/src/main/res/drawable/ic_person_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 70aebdf..431f994 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,12 +7,21 @@ tools:context=".ui.main.MainActivity"> + + + app:menu="@menu/bottom_menu" + tools:layout_editor_absoluteX="16dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_user.xml b/app/src/main/res/layout/activity_user.xml index 5b558c0..d8240b2 100644 --- a/app/src/main/res/layout/activity_user.xml +++ b/app/src/main/res/layout/activity_user.xml @@ -15,5 +15,5 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:navGraph="@navigation/nav_user" /> + app:navGraph="@navigation/nav_main" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_changepw.xml b/app/src/main/res/layout/fragment_changepw.xml index 707d60c..4bf32bd 100644 --- a/app/src/main/res/layout/fragment_changepw.xml +++ b/app/src/main/res/layout/fragment_changepw.xml @@ -2,6 +2,8 @@ + android:textSize="18sp" /> + android:textSize="18sp"/> + android:textSize="18sp"/> + +