2015년 9월 3일 목요일

(2015년 9월 API23 적용) 안드로이드 사이드바 (네비게이션 드로어) 적용 소스


1. AppCompatActivity 사용 ( 더 이상 ActionBarActivity 는 그만..대부분 deprecated 됨 )

2. toolbar 사용안함. 

3. 롤리팝 메터리얼 디자인 가이드 적용

4. 사이드바 드로우시 아이콘 애니메이션 적용 ( 三 에서  <-  로 변하는 애니메이션 )


Gradle 쪽 소스추가부분

build.gradle (Module: app)
(targetSdkVersion 은 23)



dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.0.0'    compile 'com.android.support:support-v4:23.0.0'}




디자인 XML 쪽 소스
(DrawerLayout를 사용하면 첫번째는 FrameLayout 이 사용되어야 함 )

activity_main.xml


<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity">

    <FrameLayout        android:id="@+id/container"        android:layout_width="match_parent"        android:layout_height="match_parent" />

    <ListView        android:id="@+id/list_drawer"        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="#f1f2f7"        android:choiceMode="singleChoice"        android:divider="@android:color/transparent" />

</android.support.v4.widget.DrawerLayout>



자바소스 부분

MainActiviy.java

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity
{

    DrawerLayout drawerLayout;
    ActionBarDrawerToggle toggle;

    @Override    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        //왼쪽상단 버튼 생성        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.hi, R.string.bye) {};
        drawerLayout.setDrawerListener(toggle);
        toggle.syncState();

    }

    @Override    public boolean onOptionsItemSelected(MenuItem item)
    {
        //왼쪽상단 버튼 누르면 사이드메뉴 튀어나오도록        if (toggle.onOptionsItemSelected(item))
        {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}





댓글 없음:

댓글 쓰기