Navigation Drawer Activity를 이용하여 네비게이션을 기능을 만들어 보도록 하겠습니다.
새프로젝트를 만듭니다.
Navigation Drawer Activity를 선택하고 프로젝트를 생성합니다.
이제 화면 전환에 사용될 레이아웃을 추가해주도록 하겠습니다.
파일 네임과 root_element를 다음과 같이 변경합니다.
화면이 뜨면 텍스트를 추가해주고 텍스트 크기를 (textAppearance)를 키웁니다.
첫 번째 화면이라고 만든다음 해당 레이아웃을 복사후 붙여넣기를 통해서 두번째 레이아웃도 만듭니다.
이름을 변경해서 붙여넣기
추가된 화면
이제 java파일에서 새로운 class를 추가해주겠습니다.
이름을 FirstLayout으로 만들어줍니다.
Fragment를 상속받습니다.
여기서 Arlt + Enter을 눌러줍니다.
이렇게 import 해줍니다.
프로그멘트 추가
이후 Arlt + Insert를 눌러서 Override Methods를 해줍니다.
Fragement에 있는 다양한 함수중에서 하나를 선택해서 사용할수 있습니다.
onCreateView를 선택해줍니다.
다음과같이 수정해줍니다.
v = inflater.inflate(R.layout.first_layout,container,false); return v;
마찬가지로 FirstLayout을 복샇나다음 SecondLaout을 만들어줍니다.
마찬가지로 해당하는 내용을 바꾸어줍니다.
menu에 main_drawer에서 첫번째 레이아웃과 두번째 레이아웃을 맵핑시켜줍니다.
<item은 하나하나의 메뉴바 표시입니다.
nav_붙여주시고 그다음에 맵핑시킬 레이아웃을 입력시켜줍니다.
title에는 보여줄 메세지를 입력합니다.
content_main을 사용하기위해서 래이아웃 콘테트 메인에서
id를 추가해줍니다. 추가안하면 플레그먼트를 추가할곳을 찾지를 못함
메인 엑티비티로 가서 아래와 같이 바꿔줍니다
메뉴바에서 플레그먼트와 연결된 텍스트들을 선택했을시
Toast 이벤트를 사용하고 그후
content_main에 새로운 FirstLaouy또는 SecondLayout을 reploace 시킵니다.
package org.techtown.navigation_test;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.FragmentManager;
import android.text.Layout;
import android.view.FrameMetrics;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
FragmentManager manager = getSupportFragmentManager();
if (id == R.id.nav_first_layout) {
Toast.makeText(MainActivity.this, "첫 번째를 선택했습니다.", Toast.LENGTH_SHORT).show();
manager.beginTransaction().replace(R.id.content_main,new FirstLayout()).commit();
} else if (id == R.id.nav_second_layout) {
Toast.makeText(MainActivity.this, "두 번째를 선택했습니다.", Toast.LENGTH_SHORT).show();
manager.beginTransaction().replace(R.id.content_main,new SecondLayout()).commit();
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
메인 액티비티 전체코드
이동되는 모습을 확인 할수있습니다.
포스팅끝
'개인공부' 카테고리의 다른 글
안드로이드 : 엑티비티 화면 전환 (0) | 2020.07.08 |
---|---|
안드로이드 : 리스트 뷰 (0) | 2020.07.08 |
안드로이드 : 알림창 and 이벤트 발생 (0) | 2020.07.08 |
tensorflow를 이용해서 binary 값 데이터 학습하기 (0) | 2020.07.04 |
python::tensorflow (0) | 2020.07.04 |