如何在Android中使用手指移动隐藏和显示布局视图?

时间:2017-04-15 10:08:23

标签: android android-studio

我是Android开发的新手。我正在开发一个虚拟应用程序,它使用与 Bigo live app 相同的概念(实时广播屏幕滑动动画)。在我的应用程序中,我想隐藏并显示包含一些视图的布局。当我从左向右滑动时,当前视图将被隐藏,当我向右滑动时,我的隐藏视图将会出现。所有的工作都将适用于我的手指运动。 我已经实现了Touch Listener。 任何类型的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我尝试使用this library实现此功能。我添加了一个播放视频的片段,在该片段的布局中我添加了这个滑动抽屉,并且还包含一个片段,当抽屉打开或关闭时,该片段将充当叠加层。让我解释一下:

所以我有一个视频片段,这是布局

ConvertEmptyStringsToNull

我在片段布局中添加了滑动抽屉,还添加了另一个片段,其中包含一些内容,如textview,显示一些虚拟聊天文本,如bigo live的聊天窗口。聊天片段的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#000000"
tools:context=".ui.activity.VLCActivity">


<SurfaceView
    android:id="@+id/surface"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="false"
    android:layout_gravity="center" />


<ProgressBar
    android:id="@+id/pb"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center"
    android:visibility="gone" />
<!--</com.github.pedrovgs.DraggableView>-->

<include
    android:id="@+id/include"
    layout="@layout/actionbar_video_chat"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"></include>


<com.github.ali.android.client.customview.view.SlidingDrawer
    android:id="@+id/slidingDrawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentEnd="true"
    android:background="@android:color/transparent"
    custom:offsetDistance="20px"
    custom:stickTo="right">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <fragment
            android:id="@+id/textchat"
            android:name="com.projects.kaarthick.mluitests.ui.fragments.TextChatFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </RelativeLayout>

</com.github.ali.android.client.customview.view.SlidingDrawer>

现在在视频片段中,确保它实现了SlidingDrawer.OnInteractListener并在onCreateView()中添加这些代码:

<FrameLayout 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"
android:background="@android:color/transparent"
tools:context="com.projects.kaarthick.mluitests.ui.fragments.TextChatFragment">

<!-- TODO: Update blank fragment layout -->
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom|center"
    android:padding="10dp"
    android:text="Mike: Wow, that is great, \nSally: awesome!!!.\n Terry: Cool man! How did you do it?. \n Justin:Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    android:textAlignment="textStart"
    android:textColor="#ffffff" />

必须为自定义操作覆盖这些方法:

mSlidingDrawer = rootView.findViewById(R.id.slidingDrawer);
mSlidingDrawer.setOnInteractListener(this);
mSlidingDrawer.openDrawer();//to show the fragment at start

这是我能够实现的目标:

Result