zoukankan      html  css  js  c++  java
  • listView 滑动时 滑到一半自动滑动到对应的位置

    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() ;
        }
    }
  • 相关阅读:
    javaScript对象
    javaScript基础
    使用javaScript和JQuery制作经典面试题:光棒效果
    Animate自定义动画
    使用jQuery快速高效制作网页交互特效
    jQuery中绑定事件bind() on() live() one()的异同
    小笔记1(Get请求)

    this关键字
    Eclipse断点调试(下)
  • 原文地址:https://www.cnblogs.com/bimingcong/p/5128222.html
Copyright © 2011-2022 走看看