android滑动view

package com.example.demo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

/**
 * @author Huang xudong
 * @date 2020/7/26
 */
public class MainActivity extends AppCompatActivity {

    private LinearLayout view;
    /**
     * 定义你的View最大高度,maybe set max PHONE height
     * 这里设置最大值,防止底部还有组件
     */
    private int maxTopHeight=5000;
    /**
     * 获取控件的默认高度,当下滑最小高度的时候不再滑动了
     */
    private int defaultHeight=0;
    /**
     * 这里设置的组属性
     */
    private ViewGroup.LayoutParams layoutParams;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view=findViewById(R.id.ll_main);
        layoutParams = view.getLayoutParams();
        defaultHeight=layoutParams.height;
        /**
         * 注册view滑动事件,可以选择其他的,比喻指定的组件
         */
        view.setOnTouchListener(new View.OnTouchListener() {
            int y=0;
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        y= (int) event.getRawY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        int lastY= (int) event.getRawY();
                        if (lastY-y>0){
                            if (layoutParams.height>defaultHeight){
                                layoutParams.height=layoutParams.height-Math.abs(lastY-y)/20;
                                view.setLayoutParams(layoutParams);
                            }
                        }else {
                            if (layoutParams.height



    

        

        

        

        
        

        
        

        

        

        
        

        


    


android滑动view_第1张图片 android滑动view_第2张图片android滑动view_第3张图片

 主要有一个算法,其他的都是比较简单的。上面是效果图

你可能感兴趣的:(android)