相似美團懸浮框的效果

具體代碼:
android

ublic class MainActivity extends Activity implements OnScrollListener{ide

/**佈局

* 自定義的MyScrollViewthis

*/spa

private MyScrollView myScrollView;.net

/**server

* 在MyScrollView裏面的購買佈局xml

*/接口

private LinearLayout mBuyLayout;ip

/**

* 位於頂部的購買佈局

*/

private LinearLayout mTopBuyLayout;


@SuppressWarnings("deprecation")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); 

setContentView(R.layout.activity_main);

myScrollView = (MyScrollView) findViewById(R.id.scrollView);

mBuyLayout = (LinearLayout) findViewById(R.id.buy);

mTopBuyLayout = (LinearLayout) findViewById(R.id.top_buy_layout);

myScrollView.setOnScrollListener(this);

//當佈局的狀態或者控件的可見性發生改變回調的接口

findViewById(R.id.parent_layout).getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override

public void onGlobalLayout() {

//這一步很重要,使得上面的購買佈局和下面的購買佈局重合

onScroll(myScrollView.getScrollY());

System.out.println(myScrollView.getScrollY());

}

});

}





@Override

public void onScroll(int scrollY) {

int mBuyLayout2ParentTop = Math.max(scrollY, mBuyLayout.getTop());

mTopBuyLayout.layout(0, mBuyLayout2ParentTop, mTopBuyLayout.getWidth(), mBuyLayout2ParentTop + mTopBuyLayout.getHeight());

}




}

自定義的控件:

public class MyScrollView extends ScrollView {

private OnScrollListener onScrollListener;

public MyScrollView(Context context) {

this(context, null);

}

public MyScrollView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}


public MyScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

/**

* 設置滾動接口

* @param onScrollListener

*/

public void setOnScrollListener(OnScrollListener onScrollListener) {

this.onScrollListener = onScrollListener;

}


@Override

protected void onScrollChanged(int l, int t, int oldl, int oldt) {

super.onScrollChanged(l, t, oldl, oldt);

if(onScrollListener != null){

onScrollListener.onScroll(t);

}

}






/**

* 滾動的回調接口

* @author xiaanming

*

*/

public interface OnScrollListener{

/**

* 回調方法, 返回MyScrollView滑動的Y方向距離

* @param scrollY

*

*/

public void onScroll(int scrollY);

}


}

activity的佈局:

activity_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/parent_layout"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >


    <ImageView

        android:id="@+id/imageView1"

        android:layout_width="match_parent"

        android:layout_height="45dip"

        android:scaleType="centerCrop"

        android:src="@drawable/navigation_bar" />


    <com.example.meituandemo.MyScrollView

        android:id="@+id/scrollView"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent" >


        <FrameLayout

            android:layout_width="match_parent"

            android:layout_height="wrap_content" >


            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:orientation="vertical" >


                <ImageView

                    android:id="@+id/iamge"

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:background="@drawable/pic"

                    android:scaleType="centerCrop" />


                <include

                    android:id="@+id/buy"

                    layout="@layout/buy_layout" />


                <ImageView

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:background="@drawable/one"

                    android:scaleType="centerCrop" />


                <ImageView

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:background="@drawable/one"

                    android:scaleType="centerCrop" />


                <ImageView

                    android:layout_width="match_parent"

                    android:layout_height="wrap_content"

                    android:background="@drawable/one"

                    android:scaleType="centerCrop" />

            </LinearLayout>


            <include

                android:id="@+id/top_buy_layout"

                layout="@layout/buy_layout" />

        </FrameLayout>

    </com.example.meituandemo.MyScrollView>


</LinearLayout>

buy_layout佈局:

<?xml version="1.0" encoding="UTF-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content" >


    <ImageView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:background="@drawable/buy" />


</LinearLayout>

相關文章
相關標籤/搜索