Facebook 앱의 새 메뉴 슬라이더를 복제하려고합니다. 왼쪽에서 오는 슬라이더를 만드는 것은 충분히 쉽습니다. 그러나 페이스 북 앱은 액티비티의 레이아웃을 가져 와서 오른쪽으로 슬라이드합니다. 왼쪽 가장자리의 작은 부분 만 화면의 오른쪽에 계속 표시됩니다. 나는 이것을 어떻게하는지 혼란 스럽다. 누구든지 아이디어가 있습니까?화면 밖에서 작업 레이아웃을 오프셋하는 중
제가 생각할 수있는 가장 좋은 방법은 Display 클래스를 사용하여 화면 너비를 결정하고 가장 바깥 쪽보기의 너비를 설정 한 다음 오른쪽에 표시하는 것입니다. 슬라이더 (분명히 RelativeView에 의해 포장 됨).
업데이트 : 다음을 시도했습니다.
내 가장 외곽에있는보기는 상대적 레이아웃입니다. 이 RelativeLayout에는 2 개의 형제 뷰가 있습니다. 둘 다 LinearLayouts입니다. 첫 번째 것은 사이드 바를 포함하고있는 레이아웃입니다 (XML에서 이것은 include를 통해 완성됩니다). 상단에있는 두 번째 레이아웃은 Activity (사용자가 일반적으로 볼 수있게하려는 화면)의 본문을 포함하는 레이아웃입니다. 사용자가하여 ImageButton을 클릭하면, 나는 몇 가지 애니메이션 코드를 사용
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black" >
<include
android:id="@+id/mainnew_slider"
layout="@layout/layout_slidermenu" />
<LinearLayout
android:id="@+id/mainfeed_mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/loginbg"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="64dip"
android:background="@drawable/titlebar_background"
android:orientation="vertical"
android:padding="4dip" >
<ImageButton
android:id="@+id/mainfeed_slider"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_titlebar_button"
android:src="@drawable/sidebarico" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="@color/store_toolbar_bottom_border" />
</LinearLayout>
</RelativeLayout>
이 오른쪽에있는 메인 레이아웃 이동을 할 :
여기 내 XML이다. 내가 메인 레이아웃을 애니메이션하기 위해 사용하는 코드는 다음과 같습니다
AnimationSet set = new AnimationSet(true);
Animation animation = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f,Animation.RELATIVE_TO_PARENT, 1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,Animation.RELATIVE_TO_PARENT, 0.0f
);
animation.setDuration(1000);
set.addAnimation(animation);
LayoutAnimationController controller = new LayoutAnimationController(set, 0.0f);
LinearLayout main = (LinearLayout) findViewById(R.id.mainfeed_mainlayout);
main.setLayoutAnimation(controller);
내가 슬라이더 버튼을 클릭
, 두 오른쪽에있는 메인 레이아웃 슬라이드의 자녀가 아니라 메인 레이아웃 자체 (의 배경 정적 유지). 애니메이션이 완료되면 모든 것이 원래 위치로 돌아갑니다.왜 전체 주 레이아웃을 옮기고 그 휴게소에 보관하지 않는지 이해할 수 없습니다.
나는 아직도 길을 잃었습니다. 두 개의 LinearLayout 자식이 들어있는 RelativeLayout이 있습니다. 아이들 중 하나가 내 슬라이더입니다. 다른 하나는 제 주요 레이아웃입니다. 레이아웃의 layout_toRightOf를 슬라이더의 id로 설정했습니다. 앱이 충돌합니다. layout_toRightOf를 제거하면 TranslateAnimation이 슬라이더를 뷰로 가져 오지만 기본 레이아웃이 화면의 오른쪽에서 푸시되지 않습니다. – Andrew
Re. '그냥 충돌', Logcat에 유익한 예외 정보가 있습니다. –
layout_toRightOf를 사용하지 마십시오. 슬라이더를 논리적으로 기본 레이아웃 상단에 놓습니다. 오른쪽으로 애니메이션을 적용하려는 기본 레이아웃이므로 슬라이더가 포함 된 최상위 레벨이 아닌 애니메이션에 적용하십시오. –