2013-07-09 2 views
0

나는 3 개의 화면을 안드로이드 화면에 가지고 있으며, 버튼,지도, 목록 및 다른 정보보기 세트를 가정합니다. 이들은 모두 수직으로 존재합니다.레이아웃 사용 제안

그래서 목록을 클릭하면지도가 업데이트되고 & 버튼 색상이 변경되어야합니다. 몇 시간을 클릭하면 버튼 정보가 표시됩니다.

이 시나리오에서는 조각을 사용하는 것이 좋습니까? 또는 상대 레이아웃? 나는 RelativeLayout의 내부 3 FrameLayouts과 더불어, RelativeLayout의 구성되어 활동으로 갈 것

감사

+0

조각을 사용하십시오. 하나는 목록 용이고 다른 하나는지도를 표시하는 것입니다. – Raghunandan

답변

1

을 제안한다. 그런 다음 코드에 Fragments를 FrameLayouts에 추가합니다. 1 조각을 각각. 이렇게하면 원하는 방식으로 조각을 쉽게 이동할 수 있습니다. 슬라이딩 메뉴, 상단 슬라이딩, 측면 슬라이딩, 상하 반복. 이런 식으로하면 쉽습니다.

왼편을 선택하면 다른 2 개의 오른쪽을 밀 수 있습니다. 가운데가 초점 슬라이드를 받으면 왼쪽과 오른쪽 중 하나 오른쪽으로 초점이 맞으면 오른쪽 끝이 초점을 맞추고 다른 쪽 끝은 왼쪽.

또는 위에서 아래로 수행 할 수 있습니다. 또는 3 개의 모든 공간에 항상 같은 공간이있을 수 있습니다. 또는 항상 오른쪽, 왼쪽, 위, 아래쪽에 집중되지 않은 것들을 밀어 넣을 수 있습니다. 가능성은 무한합니다. 초점이 맞지 않는 2에서 1/4 크기를 축소하여 화면의 한면 (위쪽이 상단)과 아래쪽면 (바닥)에 밀어 넣을 수 있습니다.

어디로 가나 요?

그렇지 않으면 3 프레임 단위로 선형 레이아웃을 수행하고 각 framelayout을 weight = 1로 설정합니다 (항상 완벽하게 유지하기 위해 몇 가지 다른 옵션을 전환해야 할 수도 있음). 그런 다음 조각을 추가하십시오.

public void swapfragment(int fragId, Bundle args, boolean slide) 
    { 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 

     switch (fragId) 
     { 
     case FRAGID_DEVICE: 
      currentFrag = new FragmentDevice(); 
      currentFrag.setArguments(args); 
      ((FragmentDevice) currentFrag).initialize(); 
      break; 
     case FRAGID_NETWORK: 
      currentFrag = new FragmentNetwork(); 
      currentFrag.setArguments(args); 
      ((FragmentNetwork) currentFrag).initialize(); 
      break; 
     } 

     ft.replace(R.id.flFragHost, currentFrag).commit(); 
     if (slide) 
      slideFragment(); 
    } 

    private void slideFragment() 
    { 
     final Point displaySize = new Point(); 
     getWindowManager().getDefaultDisplay().getSize(displaySize); 

     if (isFragmentOut) 
     { 
      isFragmentOut = false; 
      Animation slideOutAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_right_out_80); 
      AnimationListener listener = new Animation.AnimationListener() 
      { 

       public void onAnimationStart(Animation animation) 
       { 
       } 

       public void onAnimationRepeat(Animation animation) 
       { 
       } 

       public void onAnimationEnd(Animation animation) 
       { 
        int pushback = (int) (displaySize.x * .8f); 

        rlFragHost.clearAnimation(); 
        RelativeLayout.LayoutParams FragContainerParams; 
        FragContainerParams = (android.widget.RelativeLayout.LayoutParams) rlFragHost.getLayoutParams(); 
        FragContainerParams.setMargins(pushback, 0, pushback * -1, 0); 
        rlFragHost.setLayoutParams(FragContainerParams); 
       } 
      }; 
      slideOutAnimation.setAnimationListener(listener); 
      rlFragHost.startAnimation(slideOutAnimation); 
     } 
     else 
     { 
      isFragmentOut = true; 
      Animation slideInAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_left_in_80); 
      AnimationListener listener = new Animation.AnimationListener() 
      { 

       public void onAnimationStart(Animation animation) 
       { 
       } 

       public void onAnimationRepeat(Animation animation) 
       { 
       } 

       public void onAnimationEnd(Animation animation) 
       { 

        rlFragHost.clearAnimation(); 
        RelativeLayout.LayoutParams FragContainerParams; 
        FragContainerParams = (android.widget.RelativeLayout.LayoutParams) rlFragHost.getLayoutParams(); 
        FragContainerParams.setMargins(0, 0, 0, 0); 
        rlFragHost.setLayoutParams(FragContainerParams); 
       } 
      }; 
      slideInAnimation.setAnimationListener(listener); 
      rlFragHost.startAnimation(slideInAnimation); 
     } 
    } 

나는 이것이 당신이 필요로 정확히 아니라는 것을 알고 있지만, 그것은 당신이 시작할 수 있어야합니다. 이것은 내가 슬라이딩 메뉴를하는 방법입니다.

+0

ok, 3 조각을 유지하고 상대 레이아웃으로 정렬하라는 의미입니다. 그에 따라 사용하십시오. 옳은? – Naruto

+0

수정하십시오. 그것은 모두 당신이 원하는 것에 달려 있지만, 고객을 위해 슬라이딩 메뉴를해야 할 때, 나는 이것을 할 수있는 가장 빠르고 쉬운 방법을 찾았습니다. – WIllJBD

+0

귀하의 이익을 위해 일부 코드를 추가했습니다. – WIllJBD

0

개인적인 취향이라고 생각합니다. 내가 가장 좋아하는 것은 선형 레이아웃이다. 항목을 세로로 표시하고 싶다고 말했지 만, 안드로이드 : orientation = "vertical"로 설정하고 항목을 xml 파일에 순서대로 넣으십시오. 개인적으로 단편을 사용한 적이 없으므로 유용성에 대해 말할 수는 없지만 선형 레이아웃은 아직 나를 실망 시켰습니다.