Padding负值遮挡视图(下拉刷新头部)

padding值负值时,表示当前视图被遮住了一部分

可使用 view**.set Padding(int left , int top , int right , int bottom)**方法进行动态设置。

下拉刷新头部的实现:

(1) 获取屏幕大小。
(2) 设置 刷新头高度(定值)

设置 显示部分高度为/屏幕高度(定值)

设置 整体高度 为刷新头高与屏幕高之和(定值)
(3)整体的 paddlingTop 设为负值时即可遮住刷新头。(为0-刷新头高时遮住全部刷新头)
(4) 整体的paddingTop值进行动态设置:
0-刷新头高**->** 不断增加**->** 0(完全展示)****-> 不断减少**->** 0-刷新头高

java 复制代码
//例
//整体为RelativeLayout(all)
//刷新头为ImageView
//显示部分为RelativeLayout(button)

//获取控件
RelativeLayout relativeLayout_all=findViewById(R.id.relative_all);
RelativeLayout relativeLayout_button=findViewById(R.id.relative_button);
Button button=findViewById(R.id.button);
ImageView imageView=findViewById(R.id.imageView);

//获取宽度高度
WindowManager windowManager= (WindowManager) getSystemService(WINDOW_SERVICE);
DisplayMetrics metrics=new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(metrics);
int screenWidth=metrics.widthPixels;
int screenHeight= metrics.heightPixels;
imageViewHeight=screenWidth;

//设置
//总高度设置
ConstraintLayout.LayoutParams layoutParams_all= (ConstraintLayout.LayoutParams) relativeLayout_all.getLayoutParams();
layoutParams_all.height=screenHeight+screenWidth;
relativeLayout_all.setLayoutParams(layoutParams_all);
//显示部分高为屏幕高
RelativeLayout.LayoutParams layoutParams_button= (RelativeLayout.LayoutParams) relativeLayout_button.getLayoutParams();
layoutParams_button.height=screenHeight;
relativeLayout_button.setLayoutParams(layoutParams_button);
//头部分为屏幕宽
RelativeLayout.LayoutParams layoutParams_image= (RelativeLayout.LayoutParams) imageView.getLayoutParams();
layoutParams_image.height=imageViewHeight;
imageView.setLayoutParams(layoutParams_image);
//隐藏部分
relativeLayout_all.setPadding(0,0-imageViewHeight,0,0);

//Handler用于UI变更
Handler handler=new Handler(){
    public void handleMessage(@NonNull Message msg) {
        switch (msg.what){
            case 1:button.setEnabled(false);break;
            case 2:button.setEnabled(true);break;
            case 3:relativeLayout_all.setPadding(0,msg.arg1,0,0);
        }
    }
};

//按钮监听器
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Thread thread=new Thread(){
            public void run() {
                //按钮失效
                Message message=new Message();
                message.what=1;
                handler.sendMessage(message);
                //刷新头下降
                int nowTop=0-imageViewHeight;
                while (true){
                    nowTop=nowTop+8;
                    if(nowTop>=0){
                        nowTop=0;
                    }
                    message=new Message();
                    message.what=3;
                    message.arg1=nowTop;
                    handler.sendMessage(message);
                    if(nowTop==0){
                        break;
                    }
                    try {
                        Thread.sleep(40);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
                //刷新头上升
                while (true){
                    nowTop=nowTop-8;
                    if(nowTop<=0-imageViewHeight){
                        nowTop=0-imageViewHeight;
                    }
                    message=new Message();
                    message.what=3;
                    message.arg1=nowTop;
                    handler.sendMessage(message);
                    if(nowTop==0-imageViewHeight){
                        break;
                    }
                    try {
                        Thread.sleep(40);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
                //按钮显示
                message=new Message();
                message.what=2;
                handler.sendMessage(message);
            }
        };
        thread.start();
    }
});
相关推荐
火烧屁屁啦7 分钟前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
w_312345421 分钟前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安23 分钟前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA26 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_192849990633 分钟前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
张国荣家的弟弟1 小时前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
C++----------函数的调用机制
java·c++·算法
是小崔啊1 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
黄公子学安全2 小时前
Java的基础概念(一)
java·开发语言·python