android view 屏幕外,安卓如何让View往屏幕外隐藏?
以下两种方案都亲测可行:
方案一:(无动画)
listView.setSelection(问题14的position);
方案二:(带动画)
ListView lvBaseList添加问题14后调用
final int targetPosition = 2;//假设你要置顶的ItemView的position = 2
final long targetId = adapter.getItemId(targetPosition);
View child = getTargetView(lvBaseList, targetId);
final boolean isVisible = child != null;
if (isVisible) {//问题14已显示
Log.d(TAG, "lvBaseList.onItemClick isVisible = true >> ");
Log.d(TAG, "lvBaseList.onItemClick lvBaseList.getY() = " + (int) lvBaseList.getY());
Log.d(TAG, "lvBaseList.onItemClick child.getY() = " + (int) child.getY());
lvBaseList.smoothScrollBy((int) (child.getY() - lvBaseList.getY()), 200);
return;
}
//问题14未显示
Log.d(TAG, "lvBaseList.onItemClick isVisible = false >> ");
lvBaseList.smoothScrollToPosition(targetPosition + lvBaseList.getHeaderViewsCount());
lvBaseList.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
lvBaseList.setOnScrollListener(null);//避免影响正常滚动
View child = getTargetView(lvBaseList, targetId);
if (child == null) {
Log.e(TAG, "lvBaseList.onItemClick child == null >> return;");
return;
}
Log.d(TAG, "lvBaseList.onItemClick lvBaseList.getY() = " + (int) lvBaseList.getY());
Log.d(TAG, "lvBaseList.onItemClick child.getY() = " + (int) child.getY());
// lvBaseList.scrollListBy((int) (child.getY() - lvBaseList.getY()));//可行,无动画
lvBaseList.smoothScrollBy((int) (child.getY() - lvBaseList.getY()), 200);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
需要用到的函数:
//根据targetId获取childView
private View getTargetView(ListView lvBaseList, long targetId) {
View child = null;
MomentView itemView;//MomentView相当于ViewHolder,里面存放item数据或者itemId
MomentItem item;
for (int i = 0; i < lvBaseList.getChildCount(); i++) {
child = lvBaseList.getChildAt(i);
itemView = child == null ? null : (MomentView) child.getTag();
item = itemView == null ? null : itemView.getData();
Log.d(TAG, "lvBaseList.onItemClick item.getId() = " + (item == null ? 0 : item.getId()) + "; targetId = " + targetId);
if (item != null && item.getId() == targetId) {
Log.d(TAG, "lvBaseList.onItemClick item != null && item.getId() == targetId >> break;");
break;
}
child = null;
}
return child;
}
android view 屏幕外,安卓如何让View往屏幕外隐藏?相关推荐
- android功能导航布局,安卓9.0新功能 屏幕旋转将与导航栏同窗
中关村在线消息:今天早些时候谷歌向开发者们推送了Android P(也称安卓9.0)的首个开发者预览版,在原先8.0的基础上进一步改进了通知栏,也为刘海屏幕专门进行了优化.意味着未来"刘海& ...
- android滑屏设计规范,安卓设计如何实现滑动屏幕出现如图的效果
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.util.ArrayList; import android.content.Context; import android.gr ...
- 超全的Android面经_安卓面经(20/30)之自定义View全解析
系列专栏: 安卓高频面经解析大全专栏链接:150道安卓高频面试题全解析 安卓高频面经解析大全目录详情 : 安卓面经_anroid面经_150道安卓常见基础面试题全解析 安卓系统Framework面经专 ...
- android安卓SurfaceView与view的区别是什么?
原贴: link 原贴: link surfaceView和View最本质的区别在于: surfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面.那么在U ...
- 安卓基础知识之View篇(四):View 事件滑动冲突解决方案
安卓基础知识系列旨在简明扼要地提供面试或工作中常用的基础知识,让对安卓还不太熟悉的小伙伴更快地入门.同时自己在工作中,也没法完全记住所有的基础细节,写这样的系列文章,可以让自己形成一个更完备的知识体系 ...
- 【朝花夕拾】Android自定义View篇之(一)View绘制流程
前言 转载请申明转自[https://www.cnblogs.com/andy-songwei/p/10955062.html]谢谢! 自定义View.多线程.网络,被认为是Android开发者必须牢 ...
- 安卓自定义弹幕view,实现飞屏
前两天在电脑上使用迅雷的时候发现,现在的迅雷有一个类似弹幕的东西,热门搜索词会循环的在屏幕上飞过,就想能不能做一个安卓的飞屏view,然后在一番尝试后做出来了一个比较像样的demo.然后由于技术有限也 ...
- Android 打造完美的侧滑菜单/侧滑View控件
概述 Android 打造完美的侧滑菜单/侧滑View控件,完全自定义实现,支持左右两个方向弹出,代码高度简洁流畅,兼容性高,控件实用方便. 详细 代码下载:http://www.demodashi. ...
- Android仿IOS解锁密码界面-自定义view系列(6)
Android仿IOS解锁密码界面-自定义view系列 功能简介 主要实现步骤-具体内容看github项目里的代码 xml相关属性设置 Android Studio 代码 Android技术生活交流 ...
最新文章
- [译]ECMAScript:ES.next和ES6以及ES Harmony之间的区别
- HDU - 3410 Passing the Message 单调递减栈
- Apache Sentry架构介绍
- C# 淘宝商品微信返利助手开发-(七)返利助手开发(5)如何将优惠券地址转为淘口令
- Django框架 day02
- 解决win2008下IIS7的HTTP500错误
- android 加载图片并在上面画图
- WatiN-Html元素及元素属性识别-扩展
- oracle exp(dmp)命令带过滤条件?
- TransUNet:Transformers医学图像分割强编码器
- Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释...
- 200套IT电子类数码产品行业响应式html5模板电器销售企业网站模板服装服饰购物电商网站模板鞋子电子商务html网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
- echarts,hightcharts直接引用数据,渲染北京城镇街道行政界线地图
- GBU406-ASEMI整流桥GBU406
- 蓝牙音箱方案选用及设计注意
- 华人小哥打造乔布斯版ChatGPT,网友:感觉他复活了
- 8K播放网络全终端播放器H5播放器网页直播/点播播放器EasyPlayer和vlc播放RTSP流地址不兼容问题排查解决
- tensorflow 学习率的下降策略
- 单例/单体模式(Singleton)
- “春节回家带点啥?”一个愁人的选择题