浮动部件

    xiaoxiao2022-06-24  54

    第一步首先创建一个class继承ScrollView:

    public class MyScrollView extends ScrollView{ private OnScrollViewListener onScrollChangedListener; public MyScrollView(Context context) { super(context,null); // TODO 自动生成的构造函数存根 } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs,-1); // TODO 自动生成的构造函数存根 } public MyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO 自动生成的构造函数存根 } //写一个方法,用来初始化接口对象 public void setOnScrollViewListener(OnScrollViewListener onScrollChangedListener){ this.onScrollChangedListener=onScrollChangedListener; } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { // TODO 自动生成的方法存根 super.onScrollChanged(l, t, oldl, oldt); if (onScrollChangedListener!=null) { onScrollChangedListener.onScrollY(t); } } //写一个接口,实现滑动悬停控件的高度 public interface OnScrollViewListener{ //scrollY指停止位置控件的高度 public void onScrollY(int scrollY); } }

    第二步在xml文件中写入: com.example.fudong.MyScrollView复制以上class的限定名

    include引用了一个xml文件这个就是要浮动的布局

    <LinearLayout 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:id="@+id/layout"     android:orientation="vertical" >     <com.example.fudong.MyScrollView         android:id="@+id/scroll"         android:layout_width="match_parent"         android:layout_height="match_parent" >         <FrameLayout             android:layout_width="match_parent"             android:layout_height="match_parent" >             <LinearLayout                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:orientation="vertical" >                 <ImageView                     android:id="@+id/iv"                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:background="@drawable/car11"                     android:scaleType="centerCrop" />                 <include                      android:id="@+id/top"                     layout="@layout/fasdf"                     />                 <ImageView                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:background="@drawable/car12"                     android:scaleType="centerCrop" />                 <ImageView                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:background="@drawable/car13"                     android:scaleType="centerCrop" />             </LinearLayout>             <include                      android:id="@+id/di"                     layout="@layout/fasdf"                     />         </FrameLayout>     </com.example.fudong.MyScrollView> </LinearLayout>

    第三步在activity中实现:

    public class MainActivity extends Activity implements OnScrollViewListener{     private MyScrollView scroll; private LinearLayout top; private LinearLayout di; private ImageView iv; @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         initView();              } private void initView() { scroll = (MyScrollView) findViewById(R.id.scroll); top = (LinearLayout) findViewById(R.id.top); di = (LinearLayout) findViewById(R.id.di); iv = (ImageView) findViewById(R.id.iv); scroll.setOnScrollViewListener(this);

    //给这个布局设置点击事件 findViewById(R.id.layout).getViewTreeObserver() .addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // TODO 自动生成的方法存根 onScrollY(scroll.getHeight()); } }); } @Override public void onScrollY(int scrollY) { // 得到浮动部件上面的坐标     Math.max谁最大得到谁 int max = Math.max(scrollY, iv.getHeight());

    //设置浮动部件的位置坐标 di.layout(0, max, di.getWidth(),max+di.getHeight()); } }

    转载请注明原文地址: https://ju.6miu.com/read-1123614.html

    最新回复(0)