본문 바로가기

Dev Diary

[Android][Ex]채팅 어플리케이션 메인화면 UI 구성


카카오톡, 마이피플, 라인, 챗온 등등 여러 채팅프로그램이 서로 매우 유사한 UI 구성을 가지고 있습니다. 

GridLayout과 Listview를 이용하여 기존 채팅 App의 UI를 구성해보았습니다.


                

  

개발 환경

 OS: Windows 7 Professional

 IDE: Eclipse Juno

 

 -Target Version-

    min: 4.0

    max: 4.2

 

activity_main.xml

 

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.    android:id="@+id/LinearLayout1"
  3.    android:layout_width="match_parent"
  4.    android:layout_height="match_parent"
  5.    android:orientation="vertical"
  6.    tools:context=".MainActivity" > 
  7.     <GridLayout
  8.        android:layout_width="match_parent"
  9.        android:layout_height="wrap_content"
  10.        android:layout_gravity="center"
  11.        android:numColumns="4" > 
  12.         <ImageButton
  13.            android:id="@+id/btn_friend"
  14.            android:layout_gravity="left"
  15.            android:src="@drawable/ic_launcher" /> 
  16.         <ImageButton
  17.            android:id="@+id/btn_study"
  18.            android:layout_gravity="left"
  19.            android:src="@drawable/ic_launcher" /> 
  20.         <ImageButton
  21.            android:id="@+id/btn_add"
  22.            android:layout_gravity="left"
  23.            android:src="@drawable/ic_launcher" /> 
  24.         <ImageButton
  25.            android:id="@+id/btn_more"
  26.            android:layout_gravity="left"
  27.            android:src="@drawable/ic_launcher" />
  28.     </GridLayout> 
  29.     <FrameLayout
  30.        android:layout_width="match_parent"
  31.        android:layout_height="wrap_content" >
  32.  
  33.         <ListView
  34.            android:id="@+id/list1"
  35.            android:layout_width="match_parent"
  36.            android:layout_height="wrap_content"
  37.            >
  38.         </ListView> 
  39.         <ListView
  40.            android:id="@+id/list2"
  41.            android:layout_width="match_parent"
  42.            android:layout_height="wrap_content" >
  43.         </ListView> 
  44.         <ListView
  45.            android:id="@+id/list3"
  46.            android:layout_width="match_parent"
  47.            android:layout_height="wrap_content" >
  48.         </ListView> 
  49.         <GridView
  50.            android:id="@+id/gview_more"
  51.            android:layout_width="match_parent"
  52.            android:layout_height="match_parent"
  53.            android:numColumns="3" >
  54.         </GridView>
  55.     </FrameLayout> 
  56. </LinearLayout>

- activity_main.xml에 추가한 ListView의 id는 android:id="@+id/XXXX개발자가 마음대로 정하면 됩니다. 저의 경우 list1list2list3이라고 정했습니다.

 

MainActivity.java

  

  1. import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.widget.ArrayAdapter;
  5. import android.widget.GridView;
  6. import android.widget.ListView;
  7.  
  8. public class MainActivity extends Activity implements View.OnClickListener {
  9.  
  10.     private String[] friend = { "HM""JM""SK""DS",
  11.             "EF""HG""SD""QA""AS",
  12.             "TY""FG""QM" };
  13.     private String[] chat = { "1""2""3""4""5""6""7""8""9",
  14.             "10""11""12""13" };
  15.     private String[] add = { "?""??""???""????""?""??0""???",
  16.             "????" };
  17.     private String[] more = { "Option""Profile""Nothing""oh""Game",
  18.             "Demo" };
  19.  
  20.     ListView lViewFriend;
  21.     ListView lViewStudy;
  22.     ListView lViewAdd;
  23.     GridView gViewMore;
  24.  
  25.     @Override
  26.     protected void onCreate(Bundle savedInstanceState) {
  27.         super.onCreate(savedInstanceState);
  28.         setContentView(R.layout.activity_main);
  29.  
  30.         findViewById(R.id.btn_friend).setOnClickListener(this);
  31.         findViewById(R.id.btn_study).setOnClickListener(this);
  32.         findViewById(R.id.btn_add).setOnClickListener(this);
  33.         findViewById(R.id.btn_more).setOnClickListener(this);
  34.  
  35.         lViewFriend = (ListView) findViewById(R.id.list1);
  36.         lViewFriend.setVisibility(View.VISIBLE);
  37.         lViewFriend.setAdapter(new ArrayAdapter<String>(this,
  38.                 android.R.layout.simple_list_item_1, friend));
  39.         lViewStudy = (ListView) findViewById(R.id.list2);
  40.         lViewAdd = (ListView) findViewById(R.id.list3);
  41.         gViewMore = (GridView) findViewById(R.id.gview_more);
  42.     }
  43.  
  44.     @Override
  45.     public void onClick(View v) {
  46.         lViewFriend.setVisibility(View.INVISIBLE);
  47.         lViewStudy.setVisibility(View.INVISIBLE);
  48.         lViewAdd.setVisibility(View.INVISIBLE);
  49.         gViewMore.setVisibility(View.INVISIBLE);
  50.  
  51.         if (v.getId() == R.id.btn_friend) {
  52.             lViewFriend.setVisibility(View.VISIBLE);
  53.             lViewFriend.setAdapter(new ArrayAdapter<String>(this,
  54.                     android.R.layout.simple_list_item_1, friend));
  55.         }
  56.         if (v.getId() == R.id.btn_study) {
  57.             lViewStudy.setVisibility(View.VISIBLE);
  58.             lViewStudy.setAdapter(new ArrayAdapter<String>(this,
  59.                     android.R.layout.simple_list_item_1, chat));
  60.         }
  61.         if (v.getId() == R.id.btn_add) {
  62.             lViewAdd.setVisibility(View.VISIBLE);
  63.             lViewAdd.setAdapter(new ArrayAdapter<String>(this,
  64.                     android.R.layout.simple_list_item_1, add));
  65.         }
  66.         if (v.getId() == R.id.btn_more) {
  67.             gViewMore.setVisibility(View.VISIBLE);
  68.             gViewMore.setAdapter(new ArrayAdapter<String>(this,
  69.                     android.R.layout.simple_list_item_1, more));
  70.         }
  71.     }
  72. }