如何触摸和拖动幻灯片动画

时间:2016-02-25 03:25:47

标签: android animation

how to achive this kind of animation.

我正在尝试编写一个从互联网传输音频的音频播放器一切顺利,但我希望动画看起来像这样。

EDITED

这是我的活动:

myActivity

我的活动解释:P

Explained

我的布局XML:

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/main_content"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                android:fitsSystemWindows="true"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

            <android.support.design.widget.TabLayout
                android:id="@+id/tabLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="70dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

        <LinearLayout
            android:id="@+id/newactivity"
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:background="@color/md_teal_500"
            android:clickable="true"
            android:elevation="5dp"
            android:gravity="bottom|center"
            android:orientation="vertical"
            app:layout_anchor="@id/container"
            app:layout_anchorGravity="bottom|right|end">

            <SeekBar
                android:id="@+id/seekBar1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:layout_marginLeft="-20dp"
                android:layout_marginRight="-20dp"
                android:maxHeight="3dp"
                android:minHeight="3dp"
                android:padding="0dp"
                android:progressDrawable="@drawable/seekbar"
                android:thumb="@null"
                />


            <RelativeLayout
                android:layout_width="280dp"
                android:layout_gravity="start"
                android:layout_height="match_parent"
                >

                <TextView
                    android:id="@+id/title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="false"
                    android:layout_alignParentTop="false"
                    android:layout_marginLeft="15dp"
                    android:layout_marginTop="10dp"
                    android:ellipsize="marquee"
                    android:fadingEdge="horizontal"
                    android:lines="1"
                    android:marqueeRepeatLimit="marquee_forever"
                    android:maxLines="1"
                    android:scrollHorizontally="true"
                    android:text="No Marasiya Selected"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="@android:color/white"/>

                <TextView
                    android:id="@+id/album"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@+id/title"
                    android:layout_alignStart="@+id/title"
                    android:layout_below="@+id/title"
                    android:maxLines="1"
                    android:text="Album"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textColor="#80cbc4"/>

                <TextView
                    android:id="@+id/duration"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/title"
                    android:layout_marginLeft="10dp"
                    android:layout_toEndOf="@+id/album"
                    android:layout_toRightOf="@+id/album"
                    android:text="00:00"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textColor="#80cbc4"/>

                <TextView
                    android:id="@+id/totalSec"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/title"
                    android:layout_toEndOf="@+id/duration"
                    android:layout_toRightOf="@+id/duration"
                    android:text=" / 00:00"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:textColor="#80cbc4"/>

            </RelativeLayout>

        </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_marginBottom="35dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="24dp"
            android:layout_marginTop="16dp"
            android:elevation="8dp"
            android:src="@drawable/ic_play_button"
            android:tint="@color/md_brown_700"
            app:layout_anchorGravity="bottom|right|end"/>

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/drawer_menu"/>


</android.support.v4.widget.DrawerLayout>

我使用viewpager将片段添加到主要活动中。底部栏在主xml布局中添加

1 个答案:

答案 0 :(得分:2)

您可以使用AndroidSlidingUpPanel执行此操作。您可以从此处获取演示代码:https://github.com/umano/AndroidSlidingUpPanel。只需将以下依赖项添加到build.gradle文件即可使用它。

compile 'com.sothree.slidinguppanel:library:3.2.1'

之后编辑以下xml以供特定用途:

<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:gravity="bottom"
    sothree:umanoPanelHeight="68dp"
    sothree:umanoShadowHeight="4dp"
    sothree:umanoParallaxOffset="100dp"
    sothree:umanoDragView="@+id/dragView"
    sothree:umanoOverlay="true"
    sothree:umanoScrollableView="@+id/list">

    <!-- MAIN CONTENT -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <android.support.v7.widget.Toolbar
            xmlns:sothree="http://schemas.android.com/apk/res-auto"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/main_toolbar"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            sothree:theme="@style/ActionBar"
            android:layout_width="match_parent"/>
        <TextView
            android:id="@+id/main"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="?attr/actionBarSize"
            android:gravity="center"
            android:text="Main Content"
            android:clickable="true"
            android:focusable="false"
            android:focusableInTouchMode="true"
            android:textSize="16sp" />
    </FrameLayout>

    <!-- SLIDING LAYOUT -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="vertical"
        android:clickable="true"
        android:focusable="false"
        android:id="@+id/dragView">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/name"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="14sp"
                android:gravity="center_vertical"
                android:paddingLeft="10dp"/>

            <Button
                android:id="@+id/follow"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:textSize="14sp"
                android:gravity="center_vertical|right"
                android:paddingRight="10dp"
                android:paddingLeft="10dp"/>

        </LinearLayout>

    </LinearLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>

在主要内容下方添加您的viewpager。在SLIDING LAYOUT下方添加线性布局

更新:AppCompat v23.2在CoordinatorLayout中引入了BottomSheetBehavior行为。

通过将BottomSheetBehavior附加到CoordinatorLayout的子视图(即添加app:layout_behavior =“android.support.design.widget.BottomSheetBehavior”),您将自动获得适当的触摸检测以在五种状态之间转换:

  • STATE_COLLAPSED:此折叠状态是默认状态,只显示一个 沿底部布局的一部分。高度可以控制 使用app:behavior_peekHeight属性(默认为0)
  • STATE_DRAGGING:用户直接处于中间状态 向上或向下拖动底部图纸
  • STATE_SETTLING:释放View之间的短暂时间 进入最终位置
  • STATE_EXPANDED:底部工作表的完全展开状态,其中 要么整个​​底板都可见(如果它的高度小于 包含CoordinatorLayout)或整个CoordinatorLayout是 填充
  • STATE_HIDDEN:默认情况下已禁用(并已启用 app:behavior_hideable属性),启用此功能允许用户滑动 在底部工作表上完全隐藏底部工作表

您可以从此处获取用于实施此操作的示例应用:https://github.com/NikolaDespotoski/BottomSheetSample