Android StickListView实现悬停效果

先看看效果图:

实现思路:

监听ListView的滑动,等目的项为列表第一个可见的ItemView时,添加一个一个的布局,产生悬停效果

实现代码:

public class CustomViewAcyivity extends BaseActivity { Toolbar toolbar; WindowManager mWindowManager; WindowManager.LayoutParams mWindowLayoutParams; TextView mTv; boolean isShowing;//是否正在显示 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_view); mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); List<String> list = new ArrayList<>(); for (int i = 0; i < 30; i++) { list.add("我是第" + (i + 1) + "个选择项"); } toolbar = $(R.id.toolbar); ListView listView = $(R.id.view_list); listView.setAdapter(new ArrayAdapter<>(this, R.layout.item_text, list)); listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem > 8) {//滑动到目的项时,显示悬停布局 if (!isShowing) show(); } else { if (isShowing) hide(); } } }); } //显示悬停布局 public void show() { isShowing = true; mWindowLayoutParams = new WindowManager.LayoutParams(); mWindowLayoutParams.format = PixelFormat.TRANSLUCENT; //图片之外的其他地方透明 mWindowLayoutParams.gravity = Gravity.TOP; mWindowLayoutParams.y = toolbar.getHeight() - SystemUtil.getStatusHeight(this);//设置悬停布局显示的Y坐标 mWindowLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; mWindowLayoutParams.height = UnitUtil.dp2px(this, 50);//设置悬停布局显示的高度 mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; //设置悬停布局,为了看起来是悬停效果,布局的内容要设置成与ItemView一致 mTv = new TextView(this); mTv.setGravity(Gravity.CENTER); mTv.setBackgroundColor(getResources().getColor(R.color.white)); mTv.setTextSize(UnitUtil.px2sp(this, UnitUtil.dp2px(this, 16))); mTv.setText("我是第10个选择项"); //添加悬停布局 mWindowManager.addView(mTv, mWindowLayoutParams); } //隐藏悬停布局 public void hide() { if (mTv != null) { isShowing = false; mWindowManager.removeView(mTv); mTv = null; } } }

布局代码:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/view_toolbar" /> <ListView android:id="@+id/view_list" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-26 20:35:38

Android StickListView实现悬停效果的相关文章

Android StickListView实现悬停效果_Android

先看看效果图: 实现思路: 监听ListView的滑动,等目的项为列表第一个可见的ItemView时,添加一个一个的布局,产生悬停效果 实现代码: public class CustomViewAcyivity extends BaseActivity { Toolbar toolbar; WindowManager mWindowManager; WindowManager.LayoutParams mWindowLayoutParams; TextView mTv; boolean isSh

Android中使用ScrollView指定view的顶部悬停效果

因项目中的需要实现ScrollView顶部的悬停,也不是太难便自己实现功能,话不多说,先上效果图 红色text一到顶上便会悬浮在上面,不会跟随scrollview的滑动而上滑. 原理: 原理其实很简单就是对view的gone和visible,写两个相同的要置顶的view,一个设置为gone,一个为visible,当可见的view超出屏幕范围的时候,将不可以的view设置为visible,不可见的view 与scrollview要同级,这样滑动的时候不会影响到view的位置. 直接上代码 <?xm

android:镜头模拟快门闭合效果Demo

问题描述 android:镜头模拟快门闭合效果Demo 有没有大神做过这个类似的效果http://www.5icool.org/a/201107/487.html,android用的,给一个思路,共同进步 解决方案 http://www.5icool.org/a/201107/487.html 解决方案二: android 模拟下雪的效果

Android的改进版CoverFlow效果控件

最近研究了一下如何在Android上实现CoverFlow效果的控件,其实早在2010年,就有Neil Davies开发并开源出了这个控件,Neil大神的这篇博客地址http://www.inter-fuser.com/2010/02/android-coverflow-widget-v2.html.首先是阅读源码,弄明白核心思路后,自己重新写了一遍这个控件,并加入了详尽的注释以便日后查阅:而后在使用过程中,发现了有两点可以改进:(1)初始图片位于中间,左边空了一半空间,比较难看,可以改为重复滚

17个有趣实用的CSS 3悬停效果教程

  这里是我们收集的一些很有用的CSS 3悬停效果教程合集. HTML 5和CSS 3拓展了网页设计的可能性,它们引入了很多新属性来让你的网站变得丰富而饱满.在这篇文章中,我分享了18个CSS3悬停效果的教程,来让你的网站变得饱满并且传达更好的用户体验.本文介绍了CSS 3的动画属性,使用这个属性可以不用费多大力气就创建出一个悬停效果.我们希望你会觉得我们收集的CSS 3悬停效果教程合集是有用的,另外如果你知道任何CSS 3悬停效果教程的话,请在文章下方给我留言. 使用SVG的形状悬停效果 在这

wps演示教程:鼠标悬停效果制作

新建wps演示文稿,选择模板为"流光溢彩",版式为空白板式. 依次单击"视图"-"母版"--"幻灯片母版"选项,打开母版视图,利用插入文本框,输入文字"鼠标悬停效果",调整大小,其他的都不动,关闭"母版视图". 图1 依次单击"插入"-"图片"-"来自文件"命令,打开"插入图片"对话框,按住键盘CTRL键同时

图图桌面水泡悬停效果的相关设置

图图桌面图标管理软件在设置悬停效果的同时,还有对应的一些设置可以可供选择设置. 1.水泡悬停效果的下,设置图标大小.(如图) 2.以下为两种不同数值的效果图. 数值为24效果图 数值为55效果图 3."每行图标个数设置":如果设置一行最多图标数量为8个,如果图标多出8个,图标将会分行,图图桌面只显示一行的图标,要显示其它行图标,要使用鼠标的滚轮前后滚动,图标就会往上或往下的换行. 注:更多精彩教程请关注三联电脑教程栏目

Android自定义类似ProgressDialog效果的Dialog

http://blog.csdn.net/qjlhlh/article/details/7979179 Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果的图片和背景图片(也可以不要背景). 如我要的效果: 2.定义loading_dialog.xml布局文件(这里你也可以按自己的布局效果定义,关键是要有个imageView): [html] view plaincopy <?xml version="1.0&qu

android:请问这个效果怎么实现

问题描述 android:请问这个效果怎么实现 背景是一张图片,然后上方有很多格子,格子能够被选择,最后 要能得到被选择的格子是哪些 解决方案 用自定义view,复写onDraw和onTouchEvent,在onTouchEvent判断点击所在区域,然后发出重绘.也可以用gridlayout或者gridview. 解决方案二: canvas上绘制出来的,底图和格子都可以绘制 解决方案三: android wheel实现各种选择效果Android实现CoverFlow效果Android 自定义vi