●액션바(Actionbat)
- 앱 상단에 나오는 네이게이션 모드를 제공해 주는 바이다. 유저의 위치를 확인시켜주고 메뉴등을 제공해 줘서 유저가 앱을 더 편리하게 사용하도록 한다.
- 안드로이드 버전 11부터는 Activity에 이미 액션바가 지원된다. 개발자가 매니페스트에 설정하지 않으면 나오지 않는것 뿐이었다. 이전 버전 개발시 반드시 ActionBarActivity클래스를 상속 받아야 한다.
- 액션바를 사용하려면 매니페스트에 테마(android:theme="@android:style/~~~)를 추가하면 된다.
●예제1
- ActionBarMain.java
package study.bar; import com.example.day0328.R; import android.app.Activity; import android.os.Bundle; public class ActionBarMain extends Activity{
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.actionbar_main);
}
} |
- actionbat_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
</LinearLayout> |
- manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.day0328" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_action_search" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="study.bar.ActionBarMain" android:theme="@android:style/Theme.Holo.Light" android:label="@string/title_activity_action_bar_test" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
●예제2
- 액티비티를 생성할대 Android Activity를 선택하고 Blank Activity를 선택한다.
- ActionBarTest.java
package study.bar; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.example.day0328.R; public class ActionBarTest extends ActionBarActivity { FragmentManager manager; FragmentTransaction trans;
//프레그먼트의 개수가 많을때는 배열을 사용하면 편하다 Fragment[] fragments = new Fragment[3];
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_action_bar_test);
//11버전 이후는 모든 Activity에 Fragment가 지원된다. manager = this.getFragmentManager();
fragments[0] = (Fragment1)manager.findFragmentById(R.id.frg_1); fragments[1] = new Fragment2(); fragments[2] = new Fragment3();
}
/* * 개발자가 액션바에 메뉴를 추가하거나, 수정할려면 앞으로 * 이 메서드가 호출하고 있는 R.menu.~~.xml파일을 수정하면 된다. */ public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.action_bar_test, menu); return true; }
/* * 사용자가 아이템들을 선택하면, 이벤트가 발생하고 * 해당 아이템 정보가 아래의 메서드의 인수로 전달된다. * MenuItem item 변수가 이벤트를 일으킨 아이템이다. */ public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId(); if (id == R.id.action_settings) { Toast.makeText(this, "클릭1", Toast.LENGTH_SHORT).show(); trans = manager.beginTransaction(); trans.replace(R.id.frg_1, fragments[0]); trans.commit(); return true; } if (id == R.id.action_settings2) { Toast.makeText(this, "클릭2", Toast.LENGTH_SHORT).show(); trans = manager.beginTransaction(); trans.replace(R.id.frg_1, fragments[1]); trans.commit(); return true; } if (id == R.id.action_settings3) { Toast.makeText(this, "클릭3", Toast.LENGTH_SHORT).show(); trans = manager.beginTransaction(); trans.replace(R.id.frg_1, fragments[2]); trans.commit(); return true; }
return super.onOptionsItemSelected(item); } } |
- activity_action_bar_test.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:con="" > <fragment android:id="@+id/frg_1" android:name="study.bar.Fragment1" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
|
- res/menu/action_bar_test.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.day0328.ActionBarTest" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="new" android:icon="@drawable/ic_action_new" app:showAsAction="always"/> <item android:id="@+id/action_settings2" android:orderInCategory="100" android:title="search" android:icon="@drawable/ic_action_search" app:showAsAction="always"/> <item android:id="@+id/action_settings3" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="always"/> </menu> |
- Fragment1.java
package study.bar; import com.example.day0328.R; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //3번째 인수는 return한 결과를 시스템이 알아서 구성해주므로 //true로 하지 말고 false로 하면 된다. return inflater.inflate(R.layout.fragment1, container, false); } } |
- fragment1.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#0100FF" >
</LinearLayout>
|
- Fragment2.java
package study.bar; import com.example.day0328.R; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment2 extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment2, container, false); } } |
- fragment2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#660033" >
</LinearLayout> |
- Fragment3.java
package study.bar; import com.example.day0328.R; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment3 extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment3, container, false); } } |
- fragment3.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#8C8C8C" >
</LinearLayout> |
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 SQLite (0) | 2015.04.08 |
---|---|
안드로이드 뷰페이저(ViewPager) (0) | 2015.04.07 |
안드로이드 프래그먼트(Fragment) (0) | 2015.04.01 |
안드로이드 애니메이션2 (0) | 2015.03.30 |
안드로이드 핸들러(Handler) (0) | 2015.03.30 |
댓글