Android StickListView实现悬停效果
程序员文章站
2024-03-04 09:11:41
先看看效果图:
实现思路:
监听listview的滑动,等目的项为列表第一个可见的itemview时,添加一个一个的布局,产生悬停效果
实现代码:
pu...
先看看效果图:
实现思路:
监听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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: java实现收藏名言语句台词的app
下一篇: Android编程内存溢出与防范方法浅析
推荐阅读
-
Android StickListView实现悬停效果
-
Android实现水波纹效果
-
Android中使用TextView实现高仿京东淘宝各种倒计时效果
-
Android UI设计系列之自定义DrawView组件实现数字签名效果(5)
-
Android实现局部图片滑动指引效果示例
-
Android组件Glide实现图片平滑滚动效果
-
Android UI设计系列之自定义SwitchButton开关实现类似IOS中UISwitch的动画效果(2)
-
Android UI设计系列之HTML标签实现TextView设置中文字体加粗效果(6)
-
Android UI设计系列之ImageView实现ProgressBar旋转效果(1)
-
Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7)