listView 滑动时 滑到一半自动滑动到对应的位置
2024-08-26 21:37:29
package com.bi.demo; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ListView listView1,listView2;
private TextView tv;
private List1Adapter adapter1; private int item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); listView1= (ListView) findViewById(R.id.listView1);
listView2= (ListView) findViewById(R.id.listView2);
tv= (TextView) findViewById(R.id.tv); ArrayList <Lei>list1=new ArrayList<Lei>();
list1.add(new Lei("weocio",R.mipmap.ic_launcher));
list1.add(new Lei("cvnxmvm",R.mipmap.ic_launcher));
list1.add(new Lei("wwwww",R.mipmap.ic_launcher));
list1.add(new Lei("ckkkkkkm",R.mipmap.ic_launcher));
adapter1=new List1Adapter(this,list1); listView1.setAdapter(adapter1); listView1.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { View v=adapter1.getView(0, null, listView1);
v.measure(0, 0);
int itemHeight=v.getMeasuredHeight();
int total=getScrollY(); if((total%itemHeight)>(itemHeight/2))item++; //Log.d("xx",""+getScrollY());
//Log.d("xxy",itemHeight+"");
//listView1.setSelection(item); listView1.setSelection(item);
tv.setText("" + item); }
} @Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { /* View c = listView1.getChildAt(0);
int firstVisiblePosition = listView1.getFirstVisiblePosition();
Log.d("xx",firstVisiblePosition+"");
int top = c.getTop();
Log.d("xxy",top+"");
Log.d("xxyy", -top + firstVisiblePosition * c.getHeight() + "");
*/ item=firstVisibleItem; }
}); } public int getScrollY() {
View c = listView1.getChildAt(0);
if (c == null) { return 0; }
int firstVisiblePosition = listView1.getFirstVisiblePosition();
int top = c.getTop();//这里计算的是最上边能看到的item滑上去的距离
Log.d("xxy",top+"");
return -top + firstVisiblePosition * c.getHeight() ;
}
}
最新文章
- 对于shell脚本参数获取时的一点小技巧
- 高龄“潮男”优衣库老板柳井正_榜样_奢华主义_YOKA时尚网
- Codeforces Round #246 (Div. 2)
- APP上传APP Store遇到的各种问题
- Leetcode_12_Integer to Roman
- ASP.NET Core 系列目录
- freemark使用总结
- ChIP-seq 核心分析 下游分析
- Java 并发工具包 | J.U.C
- Three.js里自定义顶点构建三角形面的朝向问题
- 【转】Robot Framework用法总结
- Android : 基于alsa库的音乐播放
- Nginx配置资源下载目录
- XtraEditors五、SpinEdit、TimeEdit
- Android事件处理的2种方式:监听器与回调
- 20170716xlVba销售明细转销售单据
- ADB命令行工具使用
- C/C++ 函数指针 总结
- .Net4.0 任务(Task)[转]
- ny42 一笔画问题