Android StickListView实现悬停效果_Android

先看看效果图:

实现思路

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 悬停
StickListView
android listview悬停、android listview实现、stickheaderlistview、sticklistview、listview顶部悬停,以便于您获取更多的相关知识。

时间: 2024-09-18 03:47:25

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

Android StickListView实现悬停效果

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

Android实现文字滚动效果_Android

Android 实现文字滚动效果,自己写了个timer小计时器,textview文字上下翻动效果: public class AutoTextView extends TextSwitcher implements ViewSwitcher.ViewFactory { private float mHeight; private Context mContext; //mInUp,mOutUp分别构成向下翻页的进出动画 private Rotate3dAnimation mInUp; priva

Android 仿支付宝密码输入框效果_Android

模仿支付宝输入效果,实现很简单,就是画个矩形框和圆形,其他的通过组合view来实现所有功能,虽然简单但是封装起来,方便以后使用,也分享一下,希望对别人也有点帮助.   1.如何使用,可以设置自己的进入退出动画,不设置则没有动画效果,自己觉得封装之后还是非常用好的. private MyInputPwdUtil myInputPwdUtil; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(

Android实现粒子雨效果_Android

本文实例介绍了Android实现粒子雨效果的实现过程,分享给大家供大家参考,具体内容如下 先看看效果图: 具体实现方法: 1.baseview主要是设定雨滴要实现的动作,只是先设定,也就是抽象方法,在子类中实现其方法 2.Rainitems封装雨滴类 3.Rainitems对雨滴集合创建到面板中,显示出来,具体实现就是在这个类中一.baseview封装类,子类继承后实现方法即可 public abstract class BaseView extends View { private contr

简单实现Android弹出菜单效果_Android

本文实例为大家分享了Android弹出菜单效果的具体代码,供大家参考,具体内容如下 功能描述:用户单击按钮弹出菜单.当用户选择一个菜单项,会触发MenuItemClick事件并让弹出的菜单消失:如果用户在菜单外单击,则直接消失弹出的菜单.当菜单消失时,会引发DismissEvent事件(利用此事件可在菜单消失时做一些后续处理). 1.运行效果   2.添加菜单项 在Resources文件夹下添加一个menu子文件夹,然后在此子文件夹下添加一个名为demo07_popup_menu.xml的文件:

Android如何自定义按钮效果_Android

安卓原生的按钮是多么丑,效果是多么单调,大家也是有目共睹的. 要做一个APP少不了使用按钮,一个好看的按钮少不了好看的效果和外表,这次主要跟大家讲讲如何用drawable的xml文件弄一些好看的自定义样式. 首先是外表 在APP中四四方方,灰色底黑色字的按钮是很难看的,我们希望看到的是圆角,彩色,白字(根据你的个人审美也可以是其他样式). 首先是在layout里新建一个按钮 ,然后在drawable文件夹里新建一个drawable resource file ,不妨起名为shape ,加一个se

Android实现蒙板效果_Android

本文实例为大家分享了Android实现蒙板效果的相关代码,供大家参考,具体内容如下 1.不保留标题栏蒙板的实现 效果: 原理: 1.弹窗时,设置背景窗体的透明度 2.取消弹窗时,恢复背景窗体的透明度 关键代码: private void popupWindows(List<String> list){ //产生背景变暗效果 WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.alpha = 0.4f; getWindow(

Android实现水波纹效果_Android

一.效果   点击开始:   点击停止: 二.在MainActivity中 import android.graphics.Paint; import android.os.Bundle; import android.support.v4.view.animation.LinearOutSlowInInterpolator; import android.support.v7.app.AppCompatActivity; import android.view.View; import and

基于Android实现ListView圆角效果_Android

本文演示如何在Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特别是在iphone中几乎随处可见圆角设计,现在也开始出现很多圆角名片了. 现在就给大家实现一个圆角的ListView效果. 圆角的设计,我们并不追求到处都用,无处不用,android中有少数界面用直角确实容易显得锋利,和周边界面太过对比而显得不协调,比如大栏目列表,设置等等,而采用圆角实现,则会活