片段在另一个可以关闭的片段上向上滑动

时间:2016-07-11 14:05:58

标签: android touch fragment swipe

我已经制作了片段A全屏,覆盖了另一个片段B.我想处理可以关闭片段的滑动触摸A向上滑动并重新打开它。

我制作了这个示例图片: enter image description here

我该如何实现?我还没有找到任何关于这个特例的教程。谢谢。

2 个答案:

答案 0 :(得分:1)

经过多次研究,我发现了一个可以轻松实现滑动面板的库。

这是 Umano Android Panel

Umano Android Panel repository

答案 1 :(得分:0)

compile 'me.imid.swipebacklayout.lib:library:1.0.0'

<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="com.example.darwich.swipetoclose.MainActivity">

    <RadioGroup
        android:id="@+id/id_radioGroup"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RadioButton
            android:id="@+id/mode_left"
            android:text="Left"
            android:textSize="24sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/mode_right"
            android:text="Right"
            android:textSize="24sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/mode_bottom"
            android:text="Bottom"
            android:textSize="24sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <RadioButton
            android:id="@+id/all"
            android:text="All"
            android:textSize="24sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </RadioGroup>

</RelativeLayout>
public class MainActivity extends SwipeBackActivity {

    private SwipeBackLayout swipeBackLayout;

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

        RadioGroup trackingModeGroup = (RadioGroup) findViewById(R.id.id_radioGroup);
        swipeBackLayout = getSwipeBackLayout();

        trackingModeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                int edgeFlag;
                switch (checkedId) {
                    case R.id.mode_left:
                        edgeFlag = SwipeBackLayout.EDGE_LEFT;
                        break;
                    case R.id.mode_right:
                        edgeFlag = SwipeBackLayout.EDGE_RIGHT;
                        break;
                    case R.id.mode_bottom:
                        edgeFlag = SwipeBackLayout.EDGE_BOTTOM;
                        break;
                    default:
                        edgeFlag = SwipeBackLayout.EDGE_ALL;
                }
                swipeBackLayout.setEdgeTrackingEnabled(edgeFlag);
            }
        });
    }
}