2013-08-27 3 views
0

나는이 문제를 2 일 동안 풀어서 혼자서 풀려고 노력했다. 내 애플 리케이션 탐색 서랍을 가지고, 조각을 이해하기가 어렵습니다 싶습니다. 내 코드를 변경하고 싶지 않습니다. 나는 this 예제를 보았지만 많은 것을 이해하는 데 도움이되지 않습니다.조각없이 탐색 서랍을 구현할 수있는 방법이 있습니까?

난 그냥 서랍없이 탐색을 구현하는 방법을 모르겠다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

도움이되기를 바랍니다 메뉴 레이아웃은 왼쪽 슬라이드 이고 실제 레이아웃은 사용자가 볼 수있는 레이아웃입니다. 전체 레이아웃에 둘 다 포함됩니다. 은 내가

모든 최고의 :

코드 MainActivity.java

에 대한
package com.example.slidemenuanimation; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Display; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.animation.Animation; 
import android.view.animation.Animation.AnimationListener; 
import android.view.animation.TranslateAnimation; 
import android.widget.FrameLayout; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 

public class MainActivity extends Activity implements AnimationListener { 

    int ActualLayoutWidth, MenuLayoutWidth, TotalLayoutWidth; 
    RelativeLayout actualLayout, totalLayout; 
    LinearLayout menuLayout; 
    RelativeLayout.LayoutParams menuLayoutParams, actualLayoutParams; 
    FrameLayout.LayoutParams totallayoutParams; 

    ImageView menulayoutImage, actualLayoutImage; 

    TranslateAnimation MenuClickRightAnim, MenuClickLeftAnim; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Display display = getWindowManager().getDefaultDisplay(); 
     ActualLayoutWidth = display.getWidth(); 
     MenuLayoutWidth = display.getWidth(); 
     TotalLayoutWidth = ActualLayoutWidth + MenuLayoutWidth; 

     menuLayout = (LinearLayout) findViewById(R.id.menu_layout); 
     actualLayout = (RelativeLayout) findViewById(R.id.actuallayout); 
     totalLayout = (RelativeLayout) findViewById(R.id.totallayout); 

     // parmeters for total layout 
     totallayoutParams = new FrameLayout.LayoutParams(TotalLayoutWidth, 
       FrameLayout.LayoutParams.FILL_PARENT, 3); 
     totallayoutParams.setMargins(-MenuLayoutWidth, 0, 0, 0); 
     totalLayout.setLayoutParams(totallayoutParams); 

     // parmeters for menu layout 
     menuLayoutParams = new RelativeLayout.LayoutParams(MenuLayoutWidth, 
       RelativeLayout.LayoutParams.FILL_PARENT); 
     menuLayout.setLayoutParams(menuLayoutParams); 

     // parameters for actual layout 
     actualLayoutParams = new RelativeLayout.LayoutParams(ActualLayoutWidth, 
       RelativeLayout.LayoutParams.FILL_PARENT); 
     actualLayoutParams.addRule(RelativeLayout.RIGHT_OF, R.id.menu_layout); 
     actualLayout.setLayoutParams(actualLayoutParams); 

     // intializing animations 
     // menu moves right 
     MenuClickRightAnim = new TranslateAnimation(0, MenuLayoutWidth, 0, 0); 
     MenuClickRightAnim.setFillAfter(true); 
     MenuClickRightAnim.setAnimationListener(this); 
     MenuClickRightAnim.setDuration(750); 

     // menu moves left 
     MenuClickLeftAnim = new TranslateAnimation(0, -MenuLayoutWidth, 0, 0); 
     MenuClickLeftAnim.setAnimationListener(this); 
     MenuClickLeftAnim.setFillAfter(true); 
     MenuClickLeftAnim.setDuration(750); 

     // init widgets 
     menulayoutImage = (ImageView) findViewById(R.id.imagein_menulayout); 

     menulayoutImage.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       totalLayout.setAnimation(MenuClickLeftAnim); 
       totalLayout.startAnimation(MenuClickLeftAnim); 
      } 
     }); 

     actualLayoutImage = (ImageView) findViewById(R.id.imagein_actuallayout); 

     actualLayoutImage.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       totalLayout.setAnimation(MenuClickRightAnim); 
       totalLayout.startAnimation(MenuClickRightAnim); 

      } 
     }); 

    } 

    @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 void onAnimationEnd(Animation animation) { 

     if (animation == MenuClickRightAnim) { 

      // setting params for total layout because naimtion transfers raw 
      // pizels not actual layout 
      totalLayout.clearAnimation(); 
      totallayoutParams = new FrameLayout.LayoutParams(TotalLayoutWidth, 
        FrameLayout.LayoutParams.FILL_PARENT, 3); 
      totallayoutParams.setMargins(0, 0, 0, 0); 
      totalLayout.setLayoutParams(totallayoutParams); 

     } 
     if (animation == MenuClickLeftAnim) { 

      totalLayout.clearAnimation(); 
      totallayoutParams = new FrameLayout.LayoutParams(TotalLayoutWidth, 
        FrameLayout.LayoutParams.FILL_PARENT, 3); 
      totallayoutParams.setMargins(-MenuLayoutWidth, 0, 0, 0); 
      totalLayout.setLayoutParams(totallayoutParams); 

     } 

    } 

    @Override 
    public void onAnimationRepeat(Animation arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onAnimationStart(Animation arg0) { 
     // TODO Auto-generated method stub 

    } 

} 

코드의 XML activitymain.xml

자사가 매우 잘 작동이 코드를 수행 한 번 있도록 동일한 문제를 가지고
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/totallayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#F6F6F6" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:id="@+id/menu_layout" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/imagein_menulayout" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 

    <RelativeLayout 
     android:id="@+id/actuallayout" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" > 

     <ImageView 
      android:id="@+id/imagein_actuallayout" 
      android:layout_width="150dp" 
      android:layout_height="150dp" 
      android:src="@drawable/ic_launcher" /> 
    </RelativeLayout> 

</RelativeLayout> 
0

나도이 문제가있었습니다. 문제가 여러 조각이 있다면 문제를 해결할 수 있지만 이상적이지는 않습니다. 네가해야 할 일은 여러 가지 활동을하는 것이고, 하나 하나에서 네비게이션 서랍을 다시 만들어야 할 수도 있습니다. 하지만 당신이 여전히 조각을보기로 설정해야합니다 상관없이.

그러나 NO 파편을 사용하려면 각 XML 레이아웃에 서랍 레이아웃을 추가하는 것이 유일한 방법입니다 (탐색 서랍은 화면 측면의 서랍 레이아웃입니다). 이것은 구글이 자신의 탐색 서랍 ...

를 도입하기 전에 사람들이 무슨 짓을 나는 이것이 당신이 찾고있는 해답이 될 수 없습니다 알고 있지만 나는 당신이 어떤 슬라이딩 애니메이션을 할 수있는이 코드를 사용

+0

나는 Fragment를 사용하여 결국 이해하기 힘들지 않았습니다. –

관련 문제