2012-07-04 3 views
0

MapActivity, ListActivity 및 a (보통) DetailsActivity의 세 조각으로 표시된 작업이 있습니다. ListActivityDetailsActivity은 MapActivity 위에 배치됩니다.MapView가 확대/축소 될 때 조각이 기본 위치로 계속 이동합니다

애니메이션을 사용하여 ListActivity와 DetailsActivity를 모두 숨기는 기능이 있으며 숨겨진 활동에 대한 새 레이아웃을 설정했습니다.

내가 직면 해요 문제는 ListActivity 또는 DetailsActivity 숨겨진 (사진 주 2)의 때마다 하나이며, 그 다음 내가지도를 확대 할 MapActivity에 화면을 꼬집어 항상 기본보기로 돌아갑니다 (그림 상태 1). 닫힌 활동이 자동으로 다시 열립니다.

아무도 내가 MapActivity를 집어 넣을 때 숨겨진 조각이 다시 첫 번째 상태로가는 것을 방지하는 방법을 알고 있습니까?

public void hideDetailview() { 
     final Animation close = AnimationUtils.loadAnimation(this, R.anim.close); 
     close.setFillEnabled(true); 
     close.setAnimationListener(closeDetailAnimationListener); 
     fragment_detail.startAnimation(close); 

     Toast.makeText(MainFragmentActivity.this,WWHApplication.getDrawer(), Toast.LENGTH_SHORT).show(); 
    } 

    private AnimationListener closeDetailAnimationListener = new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) { 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 


      int newLeft = -330; 
      fragment_detail.layout(newLeft, 
        fragment_detail.getTop(), 
           newLeft + fragment_detail.getMeasuredWidth(), 
           fragment_detail.getTop() + fragment_detail.getMeasuredHeight()); 

     } 
    }; 

다음은 XML 레이아웃입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res/com.wwh" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <fragment 
     android:id="@+id/my_map_fragment1" 
     android:name="com.wwh.fragments.MyMapFragment" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <!-- Preview: [email protected]/my_map_fragment --> 
    </fragment> 

    <RelativeLayout 
     android:id="@+id/fragment_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="55dp" 
     android:orientation="horizontal" > 

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

      <fragment 
       android:id="@+id/my_detail_fragment" 
       android:name="com.wwh.fragments.DetailFragment" 
       android:layout_width="380dp" 
       android:layout_height="fill_parent" /> 

      <LinearLayout 
       android:id="@+id/border_detail" 
       android:layout_width="1dp" 
       android:layout_height="fill_parent" 
       android:background="@drawable/border" 
       android:orientation="vertical" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/list_layout" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_toRightOf="@+id/detail_layout" 
      android:orientation="horizontal" > 

      <fragment 
       android:id="@+id/my_list_fragment" 
       android:name="com.wwh.fragments.MyListFragment" 
       android:layout_width="380dp" 
       android:layout_height="fill_parent" 
       android:background="@drawable/border" 
       android:shadowColor="#000000" 
       android:shadowDx="1.2" 
       android:shadowDy="12" 
       android:shadowRadius="12" /> 

      <LinearLayout 
       android:id="@+id/border_list" 
       android:layout_width="1dp" 
       android:layout_height="fill_parent" 
       android:background="@drawable/border" 
       android:orientation="vertical" /> 

      <ImageView 
       android:id="@+id/shadow_vertical" 
       android:layout_width="2dp" 
       android:layout_height="fill_parent" 
       android:layout_marginTop="53dp" 
       android:background="@drawable/shadow_vertical" /> 
     </LinearLayout> 
    </RelativeLayout> 

</RelativeLayout> 

The normal default state, all fragments are opened

Second state, fragments are closed

+0

지도에서 핀치 이벤트를 수동으로 구현하고 있습니까? 아니면 통합 된지도 확대 기능을 사용하고 있습니까? – 10s

+0

컨트롤을 통합 한지도를 사용하고 있습니다. – hectichavana

답변

1

당신에게 '

내가 DetailsActivity()을 숨기는 방법 함수의 예입니다 다른 조각, perh의 레이아웃을 업데이트하는 것을 잊어 버렸습니다. 새로운 레이아웃에 대한 계산이 잘못 되었습니까?

오래된 안드로이드 버전의 애니메이션은보기의 레이아웃을 변경하지 않기 때문에 까다로운 편입니다. 어쩌면 애니메이션이 끝나면 실제로 만지고 있다고 생각하지 않는 것을 만지면됩니다.

더 많은 코드를 제공해주십시오. 어쩌면 그것이 왜 발생하는지 이해하는 데 도움이 될 수 있습니다.

btw, 조각 클래스의 이름을 변경하십시오. 그들은 활동이 아니므로 왜 이름에 "활동"이 있습니까?

+0

실제로 레이아웃을 업데이트하면 무엇을 의미합니까? 애니메이션 끝내기 방법을 사용하여 조각의 레이아웃 만 업데이트합니다. 예 각각의 조각에는 실제로 활동이 포함되어 있으므로 위의 사진에서 활동으로 이름을 지정합니다. – hectichavana

+0

레이아웃 용 코드를 추가했습니다. MapActivity는 통합 줌이있는 일반 mapView입니다. 또는 특별히 – hectichavana

+0

조각에 액티비티가 포함되어 있지 않은지 어떤 코드가 필요한지 물어볼 수 있습니다. 액티비티에는 조각이 포함됩니다. 어쨌든, 내가 작성한 것에 대해, 애니메이션이 끝난 후에는 프래그먼트에 의해 생성 된 뷰의 layoutParams를 업데이트해야하지만, 이미 레이아웃을 작성했는지는 확실하지 않습니다. "layout ". 대신 각보기에 대해 layoutParams를 설정하는 것이 좋습니다. –

관련 문제