Android 折叠头部监听,抽屉式动画

实现方法2:https://blog.csdn.net/meixi_android/article/details/84136375

 

1、自定义scrollview,监听上下滑动距离:

public class ScrollListenerView extends ScrollView {private ScrollListener scrollViewListener = null;public ScrollListenerView(Context context) {super(context);}public ScrollListenerView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public ScrollListenerView(Context context, AttributeSet attrs) {super(context, attrs);}public void setScrollListener(ScrollListener scrollViewListener) {this.scrollViewListener = scrollViewListener;}@Overrideprotected void onScrollChanged(int x, int y, int oldX, int oldY) {super.onScrollChanged(x, y, oldX, oldY);if (scrollViewListener != null) {scrollViewListener.onScrollChanged(this, x, y, oldX, oldY);}}
}

接口

public interface ScrollListener {void onScrollChanged(ScrollListenerView scrollView, int x, int y, int oldX, int oldY);
}

2、activity实现接口

public class FriendDetailFragment extends SubBasicFragment implements ScrollListener {
private ScrollListenerView slv;
private int dp2_5;
private int dp37_5;
private int dp54;

 

slv.setScrollListener(this);
private void initMeasure() {nSdvWidth = UiUtils.dpToPx(77.5f, mContext.getResources());nSdvSmallWidth = UiUtils.dpToPx(40f, mContext.getResources());dp2_5 = UiUtils.dpToPx(2.5f, mContext.getResources());dp37_5 = UiUtils.dpToPx(37.5f, mContext.getResources());dp54 = UiUtils.dpToPx(54f, mContext.getResources());
}

 

 

@Override
public void onScrollChanged(ScrollListenerView scrollView, int x, int y, int oldX, int oldY) {animationViews(y);
}
//------------------------- 动画 start ------------------------
private void animationViews(int y) {int nStart = dp2_5;int nScaledY = nSdvWidth - y;if (y > nStart && y < dp37_5) {vMiddle.setVisibility(View.INVISIBLE);vRight.setVisibility(View.VISIBLE);UiUtils.setViewLayoutParams(sdvSurface, nScaledY, nScaledY);}if (y <= nStart) {vMiddle.setVisibility(View.VISIBLE);vRight.setVisibility(View.GONE);UiUtils.setViewLayoutParams(sdvSurface, nSdvWidth, nSdvWidth);setSideViewAlpha(1f);}if (y > dp2_5 && y < dp37_5) {float percent = ((float) (y - dp2_5)) / ((float) (dp37_5 - dp2_5));tvRightUserName.setTextSize(14f + 3.5f * percent);setSideViewAlpha(1 - percent - 0.3f);}if (y > dp54) {ivQrCode.setVisibility(View.GONE);ivUserInfo.setVisibility(View.GONE);vTop.setVisibility(View.VISIBLE);vTopBackground.setVisibility(View.VISIBLE);setViewBackground(R.drawable.selector_bt_back);} else {vTop.setVisibility(View.GONE);vTopBackground.setVisibility(View.GONE);setViewBackground(0);}
}

2.2工具方法:

public static int dpToPx(float dp, Resources resources) {float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, resources.getDisplayMetrics());return (int) px;
}
/*** 重设 view 的宽高*/
public static void setViewLayoutParams(View view, int nWidth, int nHeight) {ViewGroup.LayoutParams lp = view.getLayoutParams();if (lp.height != nHeight || lp.width != nWidth) {lp.width = nWidth;lp.height = nHeight;view.setLayoutParams(lp);}
}
private void setSideViewAlpha(float alpha) {ivQrCode.setAlpha(alpha);ivUserInfo.setAlpha(alpha);Log.i("lgq","ttt----"+alpha+"......."+ivQrCode.getVisibility());if (ivQrCode.getVisibility() != View.VISIBLE)ivQrCode.setVisibility(View.VISIBLE);if (ivUserInfo.getVisibility() != View.VISIBLE)ivUserInfo.setVisibility(View.VISIBLE);
}

xml文件

<com.zhenhua.online.view.scrollbylistener.ScrollListenerViewandroid:id="@+id/slv"android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="none"><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content">

 

开始滑动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作195:解决key值不唯一的报错

<!--投放权限--><!--获取投放权限的数据--><el-form-item label"投放权限" :label-width"formLabelWidth"><el-selectv-model"form.publish_permission"multipleplaceholder"请选择投放权限"><el-option v…

POJ1459 Power Network —— 最大流

题目链接&#xff1a;https://vjudge.net/problem/POJ-1459 Power NetworkTime Limit: 2000MS Memory Limit: 32768KTotal Submissions: 29270 Accepted: 15191Description A power network consists of nodes (power stations, consumers and dispatchers) connected by power…

Python 异步操作文件 aiofiles

# 异步文件操作 # pip install aiofiles# 基本用法 import asyncio import aiofilesasync def wirte_demo():# 异步方式执行with操作,修改为 async withasync with aiofiles.open("text.txt","w",encoding"utf-8") as fp:await fp.write("h…

工作196:注意接收数据的格式

<!--获取投放权限的数据--><el-form-item label"投放权限" :label-width"formLabelWidth"><el-selectv-model"form.publish_permission"multipleplaceholder"请选择投放权限"><el-option v-for"(publish,in…

uvicorn 更改fastapi 运行host和port

在命令行输入uvicorn --help可以显示参数介绍&#xff0c;主要两个参数: --host TEXT Bind socket to this host. [default:127.0.0.1] --port INTEGER Bind socket to this port. [default: 8000]所以运行命令可以改成&#xff1a; uvicorn …

mysql问题处理积累

1.mysql errors:message from server: "Host xxx is blocked because of many connection errors; unblock 数据库连接抛了异常&#xff1a;null, message from server: "Host PC-20130201IBXI is blocked because of many connection errors; unblock with mysqlad…

Android PopupWindow使用,下拉式PopupWindow,底部式PopupWindow

1、实现方法1 仿微信盆友圈弹出点赞、评论 demo连接&#xff1a;android开发PopupWindow实现跟随试弹出框-Android文档类资源-CSDN下载 实现步骤 1、下载module并引入项目 引入module步骤&#xff1a;Android studio 导入module方法…

工作197:判断对象里面是否有0和1

<el-form-item v-if"property.includes(0)" prop"business_module" label"所属栏目" :label-width"formLabelWidth"><!--注意用户的返回值--><el-select v-model"form.business_module" placeholder"…

Python __call__()方法

Python 类中一个非常特殊的实例方法&#xff0c;即 call()。该方法的功能类似于在类中重载 () 运算符&#xff0c;使得类实例对象可以像调用普通函数那样&#xff0c;以“对象名()”的形式使用。 举个例子&#xff1a; class CLanguage:# 定义__call__方法def __call__(self,n…

Android 微信登录

/1、首先你得到微信.开放平台申请开发权限&#xff1a;https://open.weixin.qq.com/ 申请通过效果如下即可 2、其次&#xff0c;阅读开发文档&#xff1a; https://open.weixin.qq.com/cgi-bin/showdocument?actiondir_list&tresource/res_list&verify1&idopen1…

解决ubuntu16.04 qt5.9.1无法输入中文

1. 安装 fcitx-frontend-qt5 sudo apt-get install fcitx-frontend-qt5 2. 确认该路径下存在的文件 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so 3. 将libfcitxplatforminputcontextplugin.so 复制到以下两个路径下&…

工作198:无法选中的状态一定要绑定在select上面

<el-form-item prop"department_id" label"所属部门" :label-width"formLabelWidth"><select-form change"DepartmentList" v-model"form.department_id" /></el-form-item><el-form-item v-show&quo…

惊天大神坑 关于 python-socketio 与 socket.io-client 版本兼容问题

在使用fastapi进行开发中&#xff0c;使用python-socketio作为socketi库&#xff0c;前端项目使用vue开发&#xff0c;配合socket.io-client作为client端。 我的python-socketio版本号为4.6.0 前端socket.io-client我默认安装的最新的&#xff0c;此时最新的是3.0.4,但是发现…

vscode 1.9.11 和pycharm 5.0.4 输入os.getcwd()后输出不相同

各位&#xff0c;vscode的坑&#xff1b; os.getcwd()获取当前文件的位置 例如文件目录级&#xff1a; g:\test\123 vscode 输出的是父目录的位置 实际输出的结果为&#xff1a;g:\test 预期结果:g:\test\123&#xff08;这个才是正确的&#xff09; pycharm os.getcwd() 输出…

Bitmap添加文字水印

private static Bitmap AddTimeWatermark(Bitmap mBitmap) {//获取原始图片与水印图片的宽与高int mBitmapWidth mBitmap.getWidth();int mBitmapHeight mBitmap.getHeight();Bitmap mNewBitmap Bitmap.createBitmap(mBitmapWidth, mBitmapHeight, Bitmap.Config.ARGB_8888)…

工作199:获取接口token

1第一步设置token getAction("/user/info").then(res>{Vue.ls.set(Set_Token,res.data.access_token)}) 2第二步 设置token serviceXing.interceptors.request.use(function (config) {// Do something before request is sent//window.localStorage.getItem(&…

mongoose查找若存在,则什么都不做,若不存在,则插入

直接上代码&#xff1a; ModelSchema.findOneAndUpdate( {id: searchId}, { $setOnInsert: {id: searchId,foo: foo,bar: bar,} }, { upsert: true }) .catch(error > console.error(error));

Android 启动白屏,简单解决方法

1、打开styles、找到ThemeSplash&#xff0c;或者AppTheme 添加windowBackground即可/windowFullscreen是满屏属性。可去掉 也就是添加启动背景图 <style name"ThemeSplash" parent"Theme.AppCompat.Light.NoActionBar"><item name"android…

工作200:视频上传和图片编辑功能

1眼睛一定要看清 本地接口 稳得很

highcharts x轴 按照时间 datetime排序

1、我的配置文件代码&#xff1a; var chart Highcharts.chart(warningCharts, {chart: {type: line,},style: {fontSize: 12px,color: #006cee,padding: 10rpx,},title: {text: null,},subtitle: {text: null,},series: data,xAxis: {type: datetime,dateTimeLabelFormats: …