先看看效果图:

实现思路:

监听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 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;

}

}

}

布局代码:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/view_list"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

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

android实现悬停效果代码,Android StickListView实现悬停效果相关推荐

  1. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码

    用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...

  2. android桌面雪花效果代码,Android营造雪花和雨滴浪漫效果

    本文在实现雪花效果的基础上,根据漫天飞舞雪花,实现下雨天场景的效果,使用eclipse android 版本,具体内容如下 雪花效果图: 具体代码: 1.漫天飞舞的雪花主要代码 SnowView pa ...

  3. Android编写界面交互代码,android仿音悦台页面交互效果实例代码

    概述 新版的音悦台 APP 播放页面交互非常有意思,可以把播放器往下拖动,然后在底部悬浮一个小框,还可以左右拖动,然后回弹的时候也会有相应的效果,这种交互效果在头条视频和一些专注于视频的app也是很常 ...

  4. Android微信通讯录界面代码,Android中使用Expandablelistview实现微信通讯录界面

    之前的博文<Android 中使用ExpandableListView 实现分组的实例>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的 ...

  5. Android运行ListView的代码,Android ListView组件详解及示例代码

    Android 列表组件 ListView 列表组件是开发中经常用到组件,使用该组件在使用时需要为它提供适配器,由适配器提供来确定显示样式和显示数据. 下面看一个例子: 新建一个项目Lesson8_L ...

  6. android html 字体颜色代码,Android TextView通过解析html显示不同颜色和大小

    先贴一张效果图 效果 介绍 通过SpannableString.SpannableStringBuilder可以很方便的给TextView加上各种各样的样式,比如不同的颜色和大小,这里就不多说了,具体 ...

  7. android 图片变颜色代码,Android -对图片Drawable进行变色

    Android 图片DrawableCompat利用setTint()对图片Drawable进行变色 1.利用color资源对Drawable变色 Drawable对象的来源不限制,可以是从资源get ...

  8. opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。

    各位大侠好: 我在使用open gl es的做显示的时候,发现一个问题,请各位帮助一下,谢谢. 环境:opengl es 1.x,2D的模式显示纹理图片. 在LG-P990,HTC-C510E上显示附 ...

  9. android下拉框代码,Android下拉列表spinner的实例代码

    spinner组件有点类型于HTML中的下拉框的样子,让用户每次从下拉框中选取一个,本文为大家分享了Android下拉列表spinner的具体实现代码,供大家参考,具体内容如下 mian.xml xm ...

  10. android实时监控屏幕代码,Android 屏幕切换监听的实例代码

    昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activ ...

最新文章

  1. ArcGIS 基础11-专题制图
  2. 四个好用却可能不为人所熟知的Pandas函数,建议收藏!!!
  3. 什么是 TypeScript 的 Module Augmentation
  4. 感谢支持,超预期重印并加码
  5. 小学有学计算机课程,如何进行小学计算机课程有效教学.doc
  6. 【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分
  7. mysql初始化实例报错_初始化 mysql时报错
  8. java.net cidr接口_CIDR - xiaohuazi - 博客园
  9. python 爬虫抓取网页数据导出excel_如何用excel实现网页爬虫
  10. SecKill——一款超级好用的抢单软件
  11. 是谁来自江河湖海,却囿于“跨界”
  12. 用C#实现一个简易的软件光栅化渲染器
  13. springboot依赖lombok插件、lombok常用注解
  14. 计算机二级考试是考什么?
  15. 高精度阶乘和 高精度算法(c语言)
  16. 一个老股民的炒股心得
  17. 如何判断对方列表里是不是好友_怎么判断QQ是不是被对方删除好友了_怎么知道对方QQ是否把我删了...
  18. linux bcm43142无线网卡驱动安装,Centos7.7安装bcm43142(博通)无线网卡驱动(示例代码)...
  19. 并行计算(二):并行模型的分类
  20. Linux下oracle显示问号,oracle数据库显示问号

热门文章

  1. 【推荐工具】connected papers:文献知识图谱神器
  2. safe mode bypass and rooting
  3. Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日
  4. sprintf函数详细解释
  5. mysql统计每半小时内的数据(查寻某段时间内的数据)
  6. 不用插件,如何将tif格式的影像精准导入到CAD中?
  7. Java实现凯撒密码、维吉尼亚密码、双换位密码、RC4算法加密
  8. SAP的萨班斯法案SOA解决方案
  9. 电脑蓝屏,错误代码为“KERNEL STACK INPAGE ERROR”
  10. sulley测试环境搭建的相关总结