2014-11-19 1 views
0

Мне нужно руководство. Мне нужно сделать собственное представление, которое коснулось и перетаскивало экранные слайды из экрана. Я пробовал эту классную библиотеку: here, но это зависит от ровно 2 макетов. Тот, который выскользнул, и тот, который остается после этого. То, что у меня сейчас, багги и уродливости.Создайте панель, которая выдвигается и выйдет из экрана на Android

public class DemoActivity extends Activity { 

private SlidingUpPanelLayout mLayout; 
private RelativeLayout layout; 

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

    layout = (RelativeLayout) findViewById(R.id.panel); 
    final int defaulttop = layout.getTop(); 
    final int defaultbottom = layout.getBottom(); 

    RelativeLayout dragView = (RelativeLayout) findViewById(R.id.dragView); 

    mLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout); 
    mLayout.setDragView(dragView); 
    mLayout.setPanelSlideListener(new PanelSlideListener() { 

     @Override 
     public void onPanelSlide(View panel, float slideOffset) { 
     } 

     @Override 
     public void onPanelExpanded(View panel) { 
      System.out.println("panel expanded"); 
     } 

     @Override 
     public void onPanelCollapsed(View panel) { 
      System.out.println("panel collapsed"); 
     } 

     @Override 
     public void onPanelAnchored(View panel) { 
      System.out.println("anchored"); 
     } 

     @Override 
     public void onPanelHidden(View panel) { 
      System.out.println("panel is hidden now"); 
     } 
    }); 

} 

@Override 
public void onBackPressed() { 
    if (mLayout != null && mLayout.isPanelExpanded()) { 
     mLayout.collapsePanel(); 
    } else { 
     super.onBackPressed(); 
    } 
} 

}

Расположение:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".DemoActivity" > 

    <com.sothree.slidinguppanel.SlidingUpPanelLayout 
     xmlns:sothree="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/sliding_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/transparent" 
     android:gravity="bottom" 
     sothree:dragView="@+id/dragView" 
     sothree:panelHeight="60dp" 
     sothree:paralaxOffset="60dp" 
     sothree:shadowHeight="0dp" > 

     <RelativeLayout 
      android:id="@+id/panel" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/unt" 
      android:orientation="vertical" > 

      <Button 
       android:id="@+id/button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:layout_gravity="center" 
       android:text="Sleep" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/dragView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@android:color/transparent" 
      android:clickable="true" 
      android:focusable="false" > 
     </RelativeLayout> 
    </com.sothree.slidinguppanel.SlidingUpPanelLayout> 

</RelativeLayout> 

он скользит вверх, но оставляет белый фон в спину. Если я касаюсь экрана, тогда он скользит. Итак, мне нужен новый путь. Кто-нибудь путался с чем-то подобным? Мне нужен намек, а не код. Благодарю.

ответ

0

Я использовал библиотеку, которую вы упомянули здесь, и это сработало для меня. Вы, возможно, не настроить вид перетащить/компоновки

Пользуетесь mSlidingPanelLayout.setDragView (YourLayout), чтобы установить макет, который можно таскать

+0

Я добавил теперь mSlidingPanelLayout.setDragView (dragView), и это то же самое – user1140656

+0

Я отредактировал вопрос с текущим кодом. теперь он сместится, если я перетащил его или просто коснулся экрана. Но оставляет белый макет позади. Могу ли я сделать, что макет исчезает, когда я выдвигаюсь? – user1140656

0

я сделал что-то вроде этого раньше, но с кнопкой. Я сделал это, используя класс Animation при его перемещении OnTouchListener. Хотя вы должны быть осторожны при использовании и контролировать значения X и Y макета.