From 70de873928911b3bfd289791be345470f07ab7e5 Mon Sep 17 00:00:00 2001 From: SeohyeonJung Date: Tue, 16 Jan 2024 14:47:08 +0900 Subject: [PATCH 1/8] =?UTF-8?q?feat=20:=20=EC=83=81=EB=8B=A8=20=EA=B3=A0?= =?UTF-8?q?=EC=A0=95=20=EA=B2=80=EC=83=89=EB=B0=94=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/vcs.xml | 6 ++ app/build.gradle.kts | 1 + .../com/example/brandol/SearchBarActivity.kt | 4 ++ app/src/main/res/layout/activity_main.xml | 2 +- .../main/res/layout/activity_searchbar.xml | 67 +++++++++++++++++++ 5 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/com/example/brandol/SearchBarActivity.kt create mode 100644 app/src/main/res/layout/activity_searchbar.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ddca48b..179fb6d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -45,6 +45,7 @@ dependencies { implementation("androidx.appcompat:appcompat:1.6.1") implementation("com.google.android.material:material:1.11.0") implementation("androidx.constraintlayout:constraintlayout:2.1.4") + implementation ("com.google.android.material:material:1.4.0") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") diff --git a/app/src/main/java/com/example/brandol/SearchBarActivity.kt b/app/src/main/java/com/example/brandol/SearchBarActivity.kt new file mode 100644 index 0000000..654877e --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchBarActivity.kt @@ -0,0 +1,4 @@ +package com.example.brandol + +class SearchBarActivity { +} \ 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 0935b9b..948953b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -17,7 +17,7 @@ + android:background="#D9D9D9" /> + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8ee6282127aeb3b4248600f01024d5f8145b55c9 Mon Sep 17 00:00:00 2001 From: SeohyeonJung Date: Tue, 16 Jan 2024 14:48:13 +0900 Subject: [PATCH 2/8] =?UTF-8?q?add=20:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/drawable/btn_search_bar.png | Bin 0 -> 934 bytes app/src/main/res/drawable/btn_search_glasses.png | Bin 0 -> 649 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/main/res/drawable/btn_search_bar.png create mode 100644 app/src/main/res/drawable/btn_search_glasses.png diff --git a/app/src/main/res/drawable/btn_search_bar.png b/app/src/main/res/drawable/btn_search_bar.png new file mode 100644 index 0000000000000000000000000000000000000000..5daf919ddb27df222bcb670c9cff57fb4d11cf27 GIT binary patch literal 934 zcmV;X16lluP))!*y&dRg5?R>}G0 zLsr~qeTcu}0rGFxwmIe8 zbM}g9G{Fi0xN!IHwsaWllwH?7j@$$Qz@_PH$oi7=&`GNXtFI#$1^~EdrIfEZ7ad*0 z>A)sm3;^JYG$&g!jDhNa{m4ZC0Ip3e8Q$i+bWjOb002Asqh3|0#u@004~Wx^9*8)K=9_^ZX+K z0N(cIN1`{D1_1yL_UbHFB(K~V0D%3B&SI5PR=Fbp0Q=dQ#Trfy?sNnIV1HXLA1$RU zat8na4zpgbm;Vn~tK0zqfWy2j6ZU;S%Z&g4O!Kr%==2}}!0EJYJCA_1%nbklO!M@8 z!cxlj+yDT;WcN0>0|1;>69MbzNCN->)AaHE!Tg^9031QU0suHM0Sf@&!~`q=fD^OH z9RT38`kSunnvn(o046A<{D?QXKja1g0H%qTxW^LVA~yg4Fim`hFgCf*a{~YX)6{@< zchmR%EH?lEFiq1mvzw@{>sGlD0D!|hZE%0CSS!pO001~l+qR3BfMuBw0N{A*_4@WD zU`1Ib1OS+BYkBawV#j;#2mru-o=y*rm02tRfJyqCt6s`1768EE+P0nNT(wnZu>b(} zSF_W7&Qm)TyWeZa$NXae0Cw~{CkJ0E-zNkB_`MpgzT_PBW_4ZnEe`?!z<)|9-*SHX zZNLa}oU|18tPH<-{VF#8Ir1J*uADXn>vASBj60qgMrpVW-}4#kMK%v!kU13hZJ= zl7OW|ahNSK0MTQgqx?!<9od<%X1g4SZ)_6myERAE=O#Nkr{-h|v;s442vVuqh>Jus zK}nC z8-OA&tV6R-U^QW9~MQlee23MCF#B(fyMA&p~irn{I zf>}_ej}yqVNP$_{hMd&)dRI!UKk!x=g1ag1S9e4xSVnAsI9%ZR;6-p}LEH%u z)ILx^^uU12iVc7eaX$A;+B|h#yo=aeJj70ghuEp`5IYry#NsT$_IHIQ7SE~c^i9zh j`)@@CK%59Y^+o;x)0*+|-7p(k00000NkvXXu0mjfx>6-d literal 0 HcmV?d00001 From 7aeb311220656b2e025b3226ac839cdbb4a7d112 Mon Sep 17 00:00:00 2001 From: SeohyeonJung Date: Wed, 17 Jan 2024 03:18:01 +0900 Subject: [PATCH 3/8] =?UTF-8?q?[add]=20:=20SearchPagerAdaper.kt=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20[feat]=20:=20=ED=95=98=EB=8B=A8=20?= =?UTF-8?q?=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EB=B0=94=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20?= =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=EB=A1=A4=20=EA=B0=80=EB=8A=A5=ED=95=98=EA=B2=8C=EB=81=94=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 17 + .../com/example/brandol/AvartarFragment.kt | 11 - .../com/example/brandol/CatagoryFragment.kt | 17 + .../com/example/brandol/SearchBarActivity.kt | 4 - .../com/example/brandol/SearchFragment.kt | 11 +- .../com/example/brandol/SearchPagerAdapter.kt | 20 + app/src/main/res/drawable/img_box.png | Bin 0 -> 1502 bytes app/src/main/res/drawable/img_content_img.png | Bin 0 -> 820 bytes app/src/main/res/drawable/img_line.png | Bin 0 -> 83 bytes app/src/main/res/drawable/img_long_box.png | Bin 0 -> 1887 bytes app/src/main/res/drawable/img_plus.png | Bin 0 -> 158 bytes .../main/res/layout/activity_searchbar.xml | 67 -- app/src/main/res/layout/fragment_catagory.xml | 572 ++++++++++++++++++ app/src/main/res/layout/fragment_search.xml | 70 ++- .../main/res/menu/bottom_navigation_menu.xml | 1 - 15 files changed, 697 insertions(+), 93 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 app/src/main/java/com/example/brandol/CatagoryFragment.kt delete mode 100644 app/src/main/java/com/example/brandol/SearchBarActivity.kt create mode 100644 app/src/main/java/com/example/brandol/SearchPagerAdapter.kt create mode 100644 app/src/main/res/drawable/img_box.png create mode 100644 app/src/main/res/drawable/img_content_img.png create mode 100644 app/src/main/res/drawable/img_line.png create mode 100644 app/src/main/res/drawable/img_long_box.png create mode 100644 app/src/main/res/drawable/img_plus.png delete mode 100644 app/src/main/res/layout/activity_searchbar.xml create mode 100644 app/src/main/res/layout/fragment_catagory.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..74272e7 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/AvartarFragment.kt b/app/src/main/java/com/example/brandol/AvartarFragment.kt index 699f5ba..ef3ccf4 100644 --- a/app/src/main/java/com/example/brandol/AvartarFragment.kt +++ b/app/src/main/java/com/example/brandol/AvartarFragment.kt @@ -5,7 +5,6 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.example.brandol.databinding.FragmentAvartarBinding private const val ARG_PARAM1 = "param1" @@ -15,7 +14,6 @@ private const val ARG_PARAM2 = "param2" class AvartarFragment : Fragment() { private var param1: String? = null private var param2: String? = null - lateinit var binding: FragmentAvartarBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { @@ -24,15 +22,6 @@ class AvartarFragment : Fragment() { } } - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - binding = FragmentAvartarBinding.inflate(inflater,container,false) - binding.abataChattingQuantity.bringToFront() - return binding.root - } - companion object { fun newInstance(param1: String, param2: String) = diff --git a/app/src/main/java/com/example/brandol/CatagoryFragment.kt b/app/src/main/java/com/example/brandol/CatagoryFragment.kt new file mode 100644 index 0000000..c9be269 --- /dev/null +++ b/app/src/main/java/com/example/brandol/CatagoryFragment.kt @@ -0,0 +1,17 @@ +package com.example.brandol + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment + +class CatagoryFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return inflater.inflate(R.layout.fragment_catagory, container, false) + } +} diff --git a/app/src/main/java/com/example/brandol/SearchBarActivity.kt b/app/src/main/java/com/example/brandol/SearchBarActivity.kt deleted file mode 100644 index 654877e..0000000 --- a/app/src/main/java/com/example/brandol/SearchBarActivity.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.brandol - -class SearchBarActivity { -} \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchFragment.kt b/app/src/main/java/com/example/brandol/SearchFragment.kt index 892ad1a..adfa50b 100644 --- a/app/src/main/java/com/example/brandol/SearchFragment.kt +++ b/app/src/main/java/com/example/brandol/SearchFragment.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.viewpager2.widget.ViewPager2 // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -33,8 +34,16 @@ class SearchFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { + val view = inflater.inflate(R.layout.fragment_search, container, false) + + // ViewPager2 초기화 + val viewPager: ViewPager2 = view.findViewById(R.id.catagory_content_vp) + val adapter = SearchPagerAdapter(childFragmentManager, lifecycle) + viewPager.adapter = adapter + + return view // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_search, container, false) + //return inflater.inflate(R.layout.fragment_search, container, false) } companion object { diff --git a/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt b/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt new file mode 100644 index 0000000..497a60c --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt @@ -0,0 +1,20 @@ +package com.example.brandol + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.lifecycle.Lifecycle +import androidx.viewpager2.adapter.FragmentStateAdapter + +class SearchPagerAdapter(fm: FragmentManager, lifecycle: Lifecycle) : + FragmentStateAdapter(fm, lifecycle) { + + override fun getItemCount(): Int { + // ViewPager에 표시할 Fragment 개수 반환 + return 1 + } + + override fun createFragment(position: Int): Fragment { + // position에 따라 다른 Fragment 반환 + return CatagoryFragment() + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/img_box.png b/app/src/main/res/drawable/img_box.png new file mode 100644 index 0000000000000000000000000000000000000000..4d965f86076cd97a2cdd14e3123f3b8dc5ca1757 GIT binary patch literal 1502 zcmeAS@N?(olHy`uVBq!ia0vp^4;UC2Svc5$EW>__gA5F;OFdm2Ln`9l-hCf<+k@d) zqSu0!DHDV=8ij(GWF6QSPF~y`!@f`d$9?go%w9Wg`=&hG!@=CQMEvk(Pai?icp=1hw1d29Jk&z*O@ z&C6_KS^0qQnEj_C11oBjVhit@2}plEw6#9yt#E7qnrOZ0({uSZ_gcN4D*68R0pVu< z#WBit>vgx(`dGcPsz|=pJU4G!_TgPmO4hRb+xYBLS-V|~tmf5W6$u zZ$c1z`oZ3t{L9R2xUZexEAb;KA*DG#_%oxILI2yb-^u#>>OMa`Db95HMs!*`tBd_jze!Tro;L~fX4J;M6-M+*bDUWutnfr9tD&5ky`gjJw}0yx?`>mmc&R)6^lhmJq1C`7#rfe?&hEQ) zx%>>5qt}Lsr^jBOJDo%RR`Y=^=gJnd{8((u;q&}D+nKx_d@YqzpFZDyoZ+?6mcL91 zR;mZ|`x&n#N^*U^5ncDLEmh-8a{kYq(q+zxVzIaHJ=RFQ$5X>>FmLv@-NzHfT0Ber z&EjtX87J>-*=sBLSGP0o!R*Gzw)JnX_x+OF+Q`n(wE~oH*Wm7*ZUT)P2dlMUw`{&zgYAA&WrWD zttZ+)uRAO)^|e_4Rr~oZ`Ye8)w(YOiwoc|;FIyTWqP%?3xe|5xy9)#LV_tW!-tAsH y<^P($y-sOi=Xd_wv-|b=qpN?F2R-Y1XV0p{G}Y|kJsDuR&EVSDDInTDfmX(k`-SYAAw^;!G`O!51qQ)~DFrMH3Q97J3>_Tq3=B$#1Q{AS zMumtD3DLgmbpi|wv$9(sFO_FyXm}R%u;QINBf|pAPz$+VfeZ{8e4>4~A6f##R_=D* zsXxaz&Szw3xcbsq>UzPQubUYdHr)EldE8XaSC*0CMW6Y_9c{_BuPwIr0@KI(%o^L< zH+r8=E6rtKc(B)Z@%=^bp7H)JRc2s#pE>LLzVb)0ho1;CJc#vud~?Z0>C?vjaWfbh zD&()$eV?D{)06tEB2S!^;ejbIF@zYrt75Oa9icX%eWS~h^FVdQ&MBb@0H~4|k^lez literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/img_line.png b/app/src/main/res/drawable/img_line.png new file mode 100644 index 0000000000000000000000000000000000000000..6c66fcfa174447678ac79853827df42c485433e4 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0y~yU|IuYGjT8hNg++i3qVTB)5S5QBJS-$Mn)j7N#Xzc eJP!vD)1FO$i-B>+vGfN(4uhwwpUXO@geCxh3=!M_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/img_long_box.png b/app/src/main/res/drawable/img_long_box.png new file mode 100644 index 0000000000000000000000000000000000000000..fd23801c85905f97b4a77b75863d50bbb8d48ef5 GIT binary patch literal 1887 zcmeHIi%;8C6h3rN5GWM0xd9u9sF4vVnWNhz>oy*;@)R}-0m@4lh!hMPN}w$bDr`g4 zMKV-2Iv!G>kCj)=Sb4ZH9$_Ui=!2FPa1cz}UwKLQsDKy$4VT=U+>@JozLW2s@4MGN zjt(Q(yV(N(fqFh94ge=W`vp5ZiX)@Pod9g#rG}ilSdxlqwXyEhLzS`LED#UlyohL3 z9OF0&B5yi=j#s<4OwBpE5+4-&_WpZ(*G=C~Qx}-=ytWNHuNV4uQA5M5@oIO9-=KDG z?$#Chi8LXtdSjED*+#CHl>;oP$m*_tq&kU)*`Lal)I3|{eU!Idv{h|pl`D6`0M^!L zB);pVsmwylYVc$34K@1|0Hw}S!l?Hz%4@sn%*uG@04zkfU9TRCPiVAnQBt8RQ5?+f7cmr2I6&F7{Dd@J<b4{Q$Oh{tBY}GaPcJ?8tE2f5&Y;7Xl2GTQQL|p{} z5f1$O*W(p&T`S%sJaC%bS^1wSijMOeUjho%{<)0B0-GEQt|fKeYqE4|l8$4+seW z!$*as0R{_uHWk$(2GcY8kK98O^BO)Z$qI;3V%)3nii7|A9558cT88C&0AeN)x$4`= ziu8WBJ(>LID}33FH#GI{NruLkH{lJ^|MubH$sE=^x91=d=I^Ebl-q=dYr+r%z03um zm3*K3xGR25cadq7LIZe$>|wJiU8upS(WRlAX6q!o=rtnwWVK{k iB*Dm}&e9^|`EAdd-l(sYo<&r|0#HMvLqtL875@SpRHT;x literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/img_plus.png b/app/src/main/res/drawable/img_plus.png new file mode 100644 index 0000000000000000000000000000000000000000..142f4dacfd4e5d69f5d34667ee26c4d6eb7b3450 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^qChOh!3HGto3C2{sZ>uF$B>G+x05#VHW&yn+X^XH zsF?YfHJeYJ-z1{XGO_5A=rlV$C1&}Jt!G2@4u3G1dRk!hl@LAWKTAV)KW?@zTKVbk zvAtz?Cdh}redw}u{hyZ{O4GHbD~7FH8PhfcsOI&vf_C+kFHM&W4xOw8TFBt(>gTe~ HDWM4fBO^Pz literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_searchbar.xml b/app/src/main/res/layout/activity_searchbar.xml deleted file mode 100644 index 0b6d96c..0000000 --- a/app/src/main/res/layout/activity_searchbar.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_catagory.xml b/app/src/main/res/layout/fragment_catagory.xml new file mode 100644 index 0000000..94b86ab --- /dev/null +++ b/app/src/main/res/layout/fragment_catagory.xml @@ -0,0 +1,572 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 2842980..0b6d96c 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -1,15 +1,67 @@ - + android:layout_height="match_parent"> - - + android:layout_height="match_parent"> - \ No newline at end of file + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_navigation_menu.xml b/app/src/main/res/menu/bottom_navigation_menu.xml index 08959c2..285cdd0 100644 --- a/app/src/main/res/menu/bottom_navigation_menu.xml +++ b/app/src/main/res/menu/bottom_navigation_menu.xml @@ -6,7 +6,6 @@ From 66a1097b7be8c589a4fa6a09f7294c7ddd3d2e28 Mon Sep 17 00:00:00 2001 From: SeohyeonJung Date: Fri, 19 Jan 2024 04:12:41 +0900 Subject: [PATCH 4/8] =?UTF-8?q?[add]=20:=20TabLayout=EB=B0=94=20-=204?= =?UTF-8?q?=EA=B0=9C=EC=9D=98=20xml=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=20/=20SearchPagerAdapter.kt=20=ED=8C=8C=EC=9D=BC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20[feat]=20:=20TabLayout=EB=B0=94=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 2 +- .../example/brandol/SearchAvartarFragment.kt | 22 +++ .../com/example/brandol/SearchBarFragment.kt | 69 +++++++++ .../example/brandol/SearchBrandFragment.kt | 23 +++ .../example/brandol/SearchContentFragment.kt | 22 +++ .../com/example/brandol/SearchFragment.kt | 22 ++- .../com/example/brandol/SearchPagerAdapter.kt | 17 ++- .../com/example/brandol/SearchUserFragment.kt | 22 +++ app/src/main/res/drawable/btn_search_x.png | Bin 0 -> 316 bytes app/src/main/res/drawable/btn_search_x_2.png | Bin 0 -> 345 bytes .../res/drawable/img_search_glasses_black.png | Bin 0 -> 581 bytes app/src/main/res/layout/fragment_search.xml | 57 ++++---- .../res/layout/fragment_search_avartar.xml | 138 ++++++++++++++++++ .../main/res/layout/fragment_search_bar.xml | 69 +++++++++ .../main/res/layout/fragment_search_brand.xml | 138 ++++++++++++++++++ .../res/layout/fragment_search_content.xml | 138 ++++++++++++++++++ .../main/res/layout/fragment_search_user.xml | 138 ++++++++++++++++++ app/src/main/res/values/colors.xml | 1 + 18 files changed, 839 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/com/example/brandol/SearchAvartarFragment.kt create mode 100644 app/src/main/java/com/example/brandol/SearchBarFragment.kt create mode 100644 app/src/main/java/com/example/brandol/SearchBrandFragment.kt create mode 100644 app/src/main/java/com/example/brandol/SearchContentFragment.kt create mode 100644 app/src/main/java/com/example/brandol/SearchUserFragment.kt create mode 100644 app/src/main/res/drawable/btn_search_x.png create mode 100644 app/src/main/res/drawable/btn_search_x_2.png create mode 100644 app/src/main/res/drawable/img_search_glasses_black.png create mode 100644 app/src/main/res/layout/fragment_search_avartar.xml create mode 100644 app/src/main/res/layout/fragment_search_bar.xml create mode 100644 app/src/main/res/layout/fragment_search_brand.xml create mode 100644 app/src/main/res/layout/fragment_search_content.xml create mode 100644 app/src/main/res/layout/fragment_search_user.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 74272e7..86b4626 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchAvartarFragment.kt b/app/src/main/java/com/example/brandol/SearchAvartarFragment.kt new file mode 100644 index 0000000..356fa03 --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchAvartarFragment.kt @@ -0,0 +1,22 @@ +package com.example.brandol + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.brandol.databinding.FragmentSearchAvartarBinding + +class SearchAvartarFragment : Fragment() { + lateinit var binding : FragmentSearchAvartarBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSearchAvartarBinding.inflate(inflater,container,false) + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchBarFragment.kt b/app/src/main/java/com/example/brandol/SearchBarFragment.kt new file mode 100644 index 0000000..8907476 --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchBarFragment.kt @@ -0,0 +1,69 @@ +package com.example.brandol + +import android.graphics.Color +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.viewpager2.widget.ViewPager2 +import com.example.brandol.databinding.FragmentSearchBarBinding +import com.google.android.material.tabs.TabLayout +import com.google.android.material.tabs.TabLayoutMediator + +class SearchBarFragment : Fragment() { + + private lateinit var binding: FragmentSearchBarBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + + binding = FragmentSearchBarBinding.inflate(inflater, container, false) + + // TabLayout 초기화 + val tabLayout: TabLayout = binding.searchBarTb + + // 탭의 제목 리스트 + val tabTitles = arrayListOf("브랜드", "유저", "콘텐츠", "아바타 스토어") + + // ViewPager2 초기화 + val viewPager: ViewPager2 = binding.searchBarVp + val adapter = SearchPagerAdapter(childFragmentManager, lifecycle) + viewPager.adapter = adapter + + // TabLayout에 ViewPager2 연결 + TabLayoutMediator(tabLayout, viewPager) { tab, position -> + tab.text = tabTitles[position] + }.attach() + + // Tab이 선택되었을 때의 색상 변경 + tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + // 선택된 탭의 색상 변경 + tab?.text?.let { + when (it) { + "브랜드" -> tab.view.setBackgroundColor(Color.BLUE) + "유저" -> tab.view.setBackgroundColor(Color.BLUE) + "콘텐츠" -> tab.view.setBackgroundColor(Color.BLUE) + "아바타 스토어" -> tab.view.setBackgroundColor(Color.BLUE) + } + } + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + // 선택 해제된 탭의 색상 초기화 + tab?.view?.setBackgroundColor(Color.TRANSPARENT) + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + // 재선택된 탭의 색상 변경 (여기서는 동일하게 처리) + onTabSelected(tab) + } + }) + + return binding.root + } +} + diff --git a/app/src/main/java/com/example/brandol/SearchBrandFragment.kt b/app/src/main/java/com/example/brandol/SearchBrandFragment.kt new file mode 100644 index 0000000..fb66834 --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchBrandFragment.kt @@ -0,0 +1,23 @@ +package com.example.brandol + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.brandol.databinding.FragmentSearchBrandBinding + +class SearchBrandFragment : Fragment() { + + lateinit var binding : FragmentSearchBrandBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSearchBrandBinding.inflate(inflater,container,false) + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchContentFragment.kt b/app/src/main/java/com/example/brandol/SearchContentFragment.kt new file mode 100644 index 0000000..e9d1fb3 --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchContentFragment.kt @@ -0,0 +1,22 @@ +package com.example.brandol + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.brandol.databinding.FragmentSearchContentBinding + +class SearchContentFragment : Fragment() { + lateinit var binding : FragmentSearchContentBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSearchContentBinding.inflate(inflater,container,false) + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchFragment.kt b/app/src/main/java/com/example/brandol/SearchFragment.kt index adfa50b..40a1e1c 100644 --- a/app/src/main/java/com/example/brandol/SearchFragment.kt +++ b/app/src/main/java/com/example/brandol/SearchFragment.kt @@ -5,7 +5,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.viewpager2.widget.ViewPager2 +import com.example.brandol.databinding.FragmentSearchBinding // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER @@ -29,23 +29,35 @@ class SearchFragment : Fragment() { param2 = it.getString(ARG_PARAM2) } } + private lateinit var binding: FragmentSearchBinding override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val view = inflater.inflate(R.layout.fragment_search, container, false) + binding = FragmentSearchBinding.inflate(inflater, container, false) // 데이터 바인딩 초기화 // ViewPager2 초기화 - val viewPager: ViewPager2 = view.findViewById(R.id.catagory_content_vp) + val viewPager = binding.catagoryContentVp val adapter = SearchPagerAdapter(childFragmentManager, lifecycle) viewPager.adapter = adapter - return view + // 검색 버튼 클릭 이벤트 처리 + binding.btnSearchBarIb.setOnClickListener { + // SearchBarFragment로 직접 화면 전환 + val searchBarFragment = SearchBarFragment() + val transaction = parentFragmentManager.beginTransaction() + transaction.replace(R.id.btn_search_bar_Fl, searchBarFragment) + //transaction.addToBackStack(null) + transaction.commit() + } + + return binding.root // Inflate the layout for this fragment //return inflater.inflate(R.layout.fragment_search, container, false) } + companion object { /** * Use this factory method to create a new instance of @@ -65,4 +77,6 @@ class SearchFragment : Fragment() { } } } + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt b/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt index 497a60c..6654963 100644 --- a/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt +++ b/app/src/main/java/com/example/brandol/SearchPagerAdapter.kt @@ -5,16 +5,17 @@ import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle import androidx.viewpager2.adapter.FragmentStateAdapter -class SearchPagerAdapter(fm: FragmentManager, lifecycle: Lifecycle) : - FragmentStateAdapter(fm, lifecycle) { +class SearchPagerAdapter(fragment: FragmentManager, lifecycle: Lifecycle) : FragmentStateAdapter(fragment, lifecycle) { - override fun getItemCount(): Int { - // ViewPager에 표시할 Fragment 개수 반환 - return 1 - } + override fun getItemCount(): Int = 4 override fun createFragment(position: Int): Fragment { - // position에 따라 다른 Fragment 반환 - return CatagoryFragment() + return when (position) { + 0 -> SearchBrandFragment() + 1 -> SearchUserFragment() + 2 -> SearchContentFragment() + 3 -> SearchAvartarFragment() + else -> throw IllegalArgumentException("Invalid position: $position") + } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/brandol/SearchUserFragment.kt b/app/src/main/java/com/example/brandol/SearchUserFragment.kt new file mode 100644 index 0000000..f1f68e6 --- /dev/null +++ b/app/src/main/java/com/example/brandol/SearchUserFragment.kt @@ -0,0 +1,22 @@ +package com.example.brandol + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.brandol.databinding.FragmentSearchUserBinding + +class SearchUserFragment : Fragment() { + lateinit var binding : FragmentSearchUserBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSearchUserBinding.inflate(inflater,container,false) + + return binding.root + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_search_x.png b/app/src/main/res/drawable/btn_search_x.png new file mode 100644 index 0000000000000000000000000000000000000000..ef017aaaead77a92e783ca54c76f46872aaa2ff1 GIT binary patch literal 316 zcmV-C0mJ@@P)Op7X>g_IxC`B5=Lf!<U1C9h8P`v~7Dz{?6W)jN) O0000eM#&P85=fEC#GaA79WLuWR zZuc#1p;W~3Tuh#Gh6cD#z++s&$E{o#C3X%m*L53q zbm>;kI`Zq>NsG9!4l2$Xz)#5u=~0_xCUYq*;^JBi!obw6P^mV&j0g%zU6J-^guArr zPVoPNLImlJlPewo)5Y|Xcs`;+NYcO^?)n8Oaikc`AVl9etA`{4H(d - + - + + + + + diff --git a/app/src/main/res/layout/fragment_search_avartar.xml b/app/src/main/res/layout/fragment_search_avartar.xml new file mode 100644 index 0000000..01466c4 --- /dev/null +++ b/app/src/main/res/layout/fragment_search_avartar.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search_bar.xml b/app/src/main/res/layout/fragment_search_bar.xml new file mode 100644 index 0000000..4902386 --- /dev/null +++ b/app/src/main/res/layout/fragment_search_bar.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search_brand.xml b/app/src/main/res/layout/fragment_search_brand.xml new file mode 100644 index 0000000..8af797a --- /dev/null +++ b/app/src/main/res/layout/fragment_search_brand.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search_content.xml b/app/src/main/res/layout/fragment_search_content.xml new file mode 100644 index 0000000..7f9cd3c --- /dev/null +++ b/app/src/main/res/layout/fragment_search_content.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search_user.xml b/app/src/main/res/layout/fragment_search_user.xml new file mode 100644 index 0000000..4eef3e2 --- /dev/null +++ b/app/src/main/res/layout/fragment_search_user.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index c8524cd..3707b86 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,4 +2,5 @@ #FF000000 #FFFFFFFF + #A40DBD \ No newline at end of file From 82f0382c6dd6d93cd245d909d58a002f06bb40d9 Mon Sep 17 00:00:00 2001 From: SeohyeonJung Date: Sat, 20 Jan 2024 03:58:49 +0900 Subject: [PATCH 5/8] =?UTF-8?q?[fit]=20:=20page7=EC=9D=98=20a=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=ED=94=84=EB=A0=88?= =?UTF-8?q?=EA=B7=B8=EB=A8=BC=ED=8A=B8=20UI=EC=9E=91=EC=97=85=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C=20[add]=20:=20page7=EC=9D=98=20b=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EB=82=B4=EC=97=AD=20xml=EA=B3=BC?= =?UTF-8?q?=20kt=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/brandol/PointDetailFragment.kt | 4 + .../main/res/drawable/border_background.xml | 10 + app/src/main/res/drawable/btn_point_use.png | Bin 0 -> 257 bytes app/src/main/res/drawable/img_line_bright.png | Bin 0 -> 95 bytes .../main/res/drawable/img_point_mission.png | Bin 0 -> 878901 bytes app/src/main/res/drawable/img_puple_box.png | Bin 0 -> 430 bytes app/src/main/res/layout/fragment_point.xml | 231 +++++++++++++++++- .../main/res/layout/fragment_point_detail.xml | 6 + app/src/main/res/values/colors.xml | 1 + 9 files changed, 246 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/example/brandol/PointDetailFragment.kt create mode 100644 app/src/main/res/drawable/border_background.xml create mode 100644 app/src/main/res/drawable/btn_point_use.png create mode 100644 app/src/main/res/drawable/img_line_bright.png create mode 100644 app/src/main/res/drawable/img_point_mission.png create mode 100644 app/src/main/res/drawable/img_puple_box.png create mode 100644 app/src/main/res/layout/fragment_point_detail.xml diff --git a/app/src/main/java/com/example/brandol/PointDetailFragment.kt b/app/src/main/java/com/example/brandol/PointDetailFragment.kt new file mode 100644 index 0000000..609e467 --- /dev/null +++ b/app/src/main/java/com/example/brandol/PointDetailFragment.kt @@ -0,0 +1,4 @@ +package com.example.brandol + +class PointDetailFragment { +} \ No newline at end of file diff --git a/app/src/main/res/drawable/border_background.xml b/app/src/main/res/drawable/border_background.xml new file mode 100644 index 0000000..375d044 --- /dev/null +++ b/app/src/main/res/drawable/border_background.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_point_use.png b/app/src/main/res/drawable/btn_point_use.png new file mode 100644 index 0000000000000000000000000000000000000000..b26e55e43b54f4c8fd506ae9c77be8deffc0bb32 GIT binary patch literal 257 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