Android StickListView实现悬停效果

Android StickListView实现悬停效果,第1张

概述先看看效果图:实现思路:监听ListView的滑动,等目的项为列表第一个可见的ItemView时,添加一个一个的布局,产生悬停效果

先看看效果图:

实现思路:

监听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 StickListView实现悬停效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1149185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存