Android 오픈 소스 항목 사이드바 메뉴(SlidingMenu) 사용 상세 정보
SlidingMenu 통합 FAQ:
Jar mismatch! Fix your dependencies: 참조된 프로젝트와 자체 프로젝트 이후의jar 패키지 버전이 일치하지 않아 발생한 충돌입니다.슬라이딩 Menu와ActionBarSherLock이 사용하는jar 패키지 버전이 일치하는지 확인하십시오
ActionBarSherLock에 대한api를 사용하면 getSupportActionBar 등 ActionBarSherLock 방법을 찾을 수 없습니다.ActionBarSherLock의 Activity를 사용하려면SherlockActivity를 계승하고, SlidingMenu library의 SlidingFragmentActivity를 수정하여 SherlockFragmentActivity를 계승하고, library 가져오기를 다시 컴파일해야 하기 때문입니다.
SlidingMenu 일반 등록 정보 소개:
menu.setMode(SlidingMenu.LEFT);//왼쪽 슬라이드업 메뉴 설정하기
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//전체 화면 영역을 슬라이딩할 수 있도록 슬라이딩 화면 범위를 설정합니다.
menu.setShadowDrawable(R.drawable.shadow);//그림자 그림 설정
menu.setShadowWidthRes(R.dimen.shadow_width);//그림자 그림의 폭을 설정합니다
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//슬라이딩 Menu 를 그었을 때 메인 페이지에 표시되는 나머지 너비
menu.setBehindWidth(400);//슬라이딩 Menu 메뉴의 폭 설정
menu.setFadeDegree(0.35f);//슬라이딩 Menu 슬라이딩 시 그라데이션 정도
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//Activity에 슬라이딩 Menu 추가
menu.setMenu(R.layout.menu_layout);//menu의 레이아웃 파일 설정하기
menu.toggle();//동적 판단 자동 끄기 또는 SlidingMenu 켜기
menu.showMenu();//슬라이딩 Menu 표시
menu.showContent();//컨텐트 표시
menu.setOnOpenListener(onOpenListener);//slidingmenu 열기 수신
menu를 닫는 데 두 가지 감청이 있습니다. 간단하게 말하자면menu close 이벤트에 대해 하나는 when, 하나는 애프터입니다.
menu.OnClosedListener(OnClosedListener);//slidingmenu 종료 시 이벤트 수신
menu.OnClosedListener(OnClosedListener);//slidingmenu 종료 후 이벤트 감청
좌우로 슬라이딩 Menu 메뉴를 그릴 수 있어요. 설정만 하면 돼요.
menu.setMode(SlidingMenu.LEFT_RIGHT);속성을 설정하고 오른쪽 메뉴의 레이아웃 파일을 설정합니다
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//오른쪽 메뉴의 그림자 그림
Fragment를 사용하여 SlidingMenu:
1. 우선Activity는SlidingMenu가방의SlidingFragmentActivity로부터 계승
2. setContentView(R.layout.content_frame);//이 layout은 전체 화면의 FrameLayout입니다.
3. setBehindContentView(R.layout.menu_frame);//슬라이딩 Menu가 사용하는 레이아웃을 설정합니다. 전체 화면의 FrameLayout입니다.
4. 슬라이딩 Menu 왼쪽 메뉴의 Fragment 설정
setBehindContentView(R.layout.menu_frame);
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
leftMenuFragment = new MenuFragment();
t.replace(R.id.menu_frame, leftMenuFragment);
t.commit();
MenuFragment는 사실 하나의 Fragment입니다. ListView를 표시하고 ListView의 항목을 눌렀을 때 Activity가 다른 Fragment를 전환한다고 알립니다. 효과를 보기 위해 5개의 Frament를 새로 만들었습니다. 각각 Fragment1, Fragment2, Fragment3, Fragment4, Fragment5는 SlidingMenu에서 ListView로 표시됩니다.
홈 페이지에 표시되는 Fragment을 설정합니다.
if (savedInstanceState == null) {//== null Fragment1
contentFragment = new Fragment1();
} else {// null, get
// null, Activity Fragment
contentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "contentFragment");
}
// Fragment
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, contentFragment)
.commit();
Activity의 onSaveInstanceState에 현재 표시된 Fragment getSupportFragment Manager()를 저장합니다.putFragment(outState, "contentFragment", contentFragment);
슬라이딩 Menu 속성 설정
sm = getSlidingMenu();//왼쪽 메뉴만 보이면 LEFT, 오른쪽은 RIGHT, 좌우는 LEFTRIGHT sm.setMode(SlidingMenu.LEFT_RIGHT);//메뉴 슬라이딩 모드를 설정합니다. 메뉴가 왼쪽에 있는지 오른쪽에 있는지 좌우 양측에 sm이 있는지 설정합니다.setShadowDrawable(R.drawable.shadow);//음영을 설정하는 이미지 자원sm.setShadowWidthRes(R.dimen.shadow_width);//그림자 그림의 폭을 설정합니다//sm.setBehindWidth(200);//메뉴의 너비 sm을 설정합니다.setBehindOffsetRes(R.dimen.slidingmenu_offset);//슬라이딩 Menu를 그었을 때 메인 페이지에 표시되는 나머지 너비 sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//슬라이딩 영역 설정하기
오른쪽 구분 메뉴 지원:
//슬라이딩 Menu는 좌우 양쪽을 그은 메뉴를 동시에 지원할 수 있어 서로 충돌하지 않고 애니메이션이 아름다워 체험이 좋다.sm.setSecondaryMenu(R.layout.menu_frame2);//오른쪽 메뉴 sm을 설정합니다.setSecondaryShadowDrawable(R.drawable.shadowright);//오른쪽 메뉴 그림자의 그림 자원을 설정합니다//오른쪽 슬라이딩 Menu의 Fragment get Support Fragment Manager ().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();
ActionBar를 클릭할 수 있도록 설정하려면:
getSupportActionBar().setHomeButtonEnabled(true);//actionbar 메인 버튼은 getSupportActionBar () 를 누르면 됩니다.setDisplayHomeAsUpEnabled(true);//왼쪽 아이콘 setSliding ActionBarEnabled(false)를 표시합니다.//좌우 slidingmenu의fragment에 제목 표시줄을 보일 지 여부
홈 페이지에 표시되는 Fragment를 전환합니다.
public void switch Content (Fragment f) {//컨텐트 Fragment에 값을 지정하고 onSave InstanceState에서 이 Fragment Fragment = f; Fragment Transaction t = getSupport Fragment Manager ().beginTransaction (), t.replace (R.id.content frame, f), t.commit (), sm.show Content ();
일반 Activity를 사용하여 슬라이딩 Menu:
slidingMenu menu = new SlidingMenu(this);//get Sliding Menu menu가 아닌 직접 new.setMode(SlidingMenu.LEFT); menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); menu.setShadowDrawable(R.drawable.shadow); menu.setShadowWidthRes(R.dimen.shadow_width); menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); menu.setBehindWidth(400);//슬라이딩 Menu 메뉴의 너비 menu를 설정합니다.setFadeDegree(0.35f); menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//menu를 호출해야 합니다.setMenu(R.layout.menu_layout_left);//그냥 레이아웃 레이아웃 메뉴.setBehindCanvasTransformer(mTransformer);
해당 슬라이딩 Menu의 클릭 이벤트는 슬라이딩 Menu가Activity에 포함되어 있기 때문에 직접findViewById(id)로view를 받으면 해당하는 처리를 할 수 있습니다.
좌우 양쪽으로 메뉴를 그릴 수 있습니다
menu.setSecondaryMenu(R.layout.menu_layout_right); menu.setSecondaryShadowDrawable(R.drawable.shadowright);
오른쪽 메뉴처럼 바로findViewById(id),view를 받으면 임의로 처리할 수 있습니다
슬라이딩 Menu 애니메이션 바꾸기
슬라이딩 Menu는 밀어내기, 줌, 회전 등의 다양한 애니메이션을 포함하여 왼쪽 또는 오른쪽 슬라이딩 시 정의할 수 있습니다.슬라이딩 중에 슬라이딩 Menu가 어떻게 나오는 애니메이션입니다.애니메이션 사용도 간단합니다. 먼저CanvasTransformer mTransformer를 정의합니다.변수:
mTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
float scale = (float) (percentOpen*0.25 + 0.75);
canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);
}
};
그런 다음 mTransformer 객체를 슬라이딩 Menu에 설정하면 됩니다. 이것은 배율 조정 애니메이션입니다.
private void initSlidUpCanvasTransformer() {
mTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.translate(0, canvas.getHeight()*(1-interp.getInterpolation(percentOpen)));
}
};
}
private static Interpolator interp = new Interpolator() {
@Override
public float getInterpolation(float t) {
t -= 1.0f;
return t * t * t + 1.0f;
}
};
신축 애니메이션:
mTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.scale(percentOpen, 1, 0, 0);
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.