如何轻松地进出屏幕?

时间:2015-08-06 12:08:21

标签: android

如何植入“视差动画”http://imgur.com/ah4l5oj.gif 如果我的可压缩视图(listview和scrollview)放在viewpager中的片段内?

MainLayout

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/header_holder"
        android:layout_width="match_parent"
        android:layout_height="@dimen/video_holder_size"
        android:background="@color/dark_gray">

        <ImageView
            android:id="@+id/im_photo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop" />

        <TextView
            android:id="@+id/tv_artist_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="16dip"
            android:layout_marginLeft="16dip"
            android:fontFamily="sans-sarif"
            android:text="@string/artist_bio"
            android:textColor="@color/white"
            android:textSize="25sp" />


    </RelativeLayout>

    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabs"

        xmlns:slider="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="@dimen/controll_size"
        slider:pstsIndicatorHeight="0dip"
        slider:pstsPaddingMiddle="true"
        slider:pstsTextAllCaps="true"
        slider:pstsTextColorSelected="@color/white" />

    <android.support.v4.view.ViewPager
        android:id="@+id/video_body_pager"
        android:layout_width="match_parent"

        android:layout_height="0dip"
        android:layout_weight="1"
        android:animationCache="false" />
</LinearLayout>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentTop="true"
    android:background="@drawable/shadow_concierge_list_upper"
    android:gravity="left|center_vertical"

    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/ibtn_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dip"
        android:background="@drawable/ibtn_transparent"
        android:padding="8dip"
        android:src="@drawable/ic_action_back" />
</LinearLayout>

我试图通过根据滚动增量设置LayoutParams来改变视图大小,因为性能很差

relatedHeight -= dY;// dY is a scroll delta

        Log.e(getClass().getSimpleName(),"height "+relatedHeight+", dY "+dY);
        if(relatedHeight < 0){
            relatedHeight = 0;
        } else if(relatedHeight > originalHeight){
            relatedHeight = originalHeight;
        } else{
            LinearLayout.LayoutParams params =
                (LinearLayout.LayoutParams) headerHolder.getLayoutParams();
            params.height = (int) relatedHeight;
            headerHolder.setLayoutParams(params);
        }

1 个答案:

答案 0 :(得分:0)

我使用observableListviewotto bus和ViewHelper解决了这个问题 在寻呼机片段中,我将list.setScrollViewCallbacks(this);附加到我的列表中 在回调中,我将偏移量传递给Bus

@Override
    public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging){
        BusProvider.getInstance().post(new ScrollOffset(0, scrollY));
    }


    @Override
    public void onDownMotionEvent(){
    }


    @Override
    public void onUpOrCancelMotionEvent(ScrollState scrollState){
    }

在主片段中,我使用viewhelper来翻译header和viewpager

@Subscribe
    public void moveHeader(ScrollOffset event){
        ViewHelper.setTranslationY(headerHolder, -event.getY() / 2);
        ViewHelper.setTranslationY(pager,headerHolder.getHeigh() -event.getY()/2);
        int baseColor = getResources().getColor(R.color.dark_gray);
        float alpha = Math.min(1, (float) event.getY()*10 / (originalHeight ));
        appBarHolder.setBackgroundColor(ScrollUtils.getColorWithAlpha(alpha, baseColor));
}