双listview下滚动头部文件

来源:互联网 发布:杨振宁和李政道 知乎 编辑:程序博客网 时间:2024/05/22 02:18

小小的借鉴了一下别人的代码和自己的想法写的,希望给需要的人一点帮助

主activity

package com.example.listtest;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;

public class MainActivity extends Activity implements OnTouchListener{
private scrollviewlist list1, list2;
private Button btn;
private List strli;
private SlidingDrawer mdrawer;
private LinearLayout content, content2;
private int _yDelta;

@SuppressWarnings("deprecation")@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    content = (LinearLayout) findViewById(R.id.content);    content2 = (LinearLayout) findViewById(R.id.content2);    list1 = (scrollviewlist) findViewById(R.id.listView1);    list2 = (scrollviewlist) findViewById(R.id.listView2);    list2.setAdapter(new ArrayAdapter<String>(this,            android.R.layout.simple_expandable_list_item_1, getData()));    list1.setAdapter(new ArrayAdapter<String>(this,            android.R.layout.simple_expandable_list_item_1, getData()));    content.setOnTouchListener(this);

// content2.setOnTouchListener(this);
}

@Overridepublic boolean onTouch(View view, MotionEvent event) {    // TODO Auto-generated method stub    final int Y = (int) event.getRawY();    switch (event.getAction() & MotionEvent.ACTION_MASK) {    case MotionEvent.ACTION_DOWN:        RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view                .getLayoutParams();        _yDelta = Y - lParams.topMargin;        break;    case MotionEvent.ACTION_UP:        break;    case MotionEvent.ACTION_POINTER_DOWN:        break;    case MotionEvent.ACTION_POINTER_UP:        break;    case MotionEvent.ACTION_MOVE:        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view                .getLayoutParams();        if (Y - _yDelta  > (-450)) {//判断隐藏了多少,-120可以更改            layoutParams.topMargin = Y - _yDelta ;        } else {            layoutParams.topMargin = -450;        }        if (Y - _yDelta  < 0) {//判断出现了多少,60可以更改            layoutParams.bottomMargin = Y - _yDelta ;        } else {            layoutParams.topMargin = 0;        }        view.setLayoutParams(layoutParams);        break;    }    return true;}private List<String> getData() {    List<String> data = new ArrayList<String>();    data.add("测试数据1");    data.add("测试数据2");    data.add("测试数据3");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据1");    data.add("测试数据2");    data.add("测试数据3");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    data.add("测试数据4");    return data;}

}

副:自定义listview
package com.example.listtest;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

public class scrollviewlist extends ListView {

public scrollviewlist(Context context) {    super(context);    // TODO Auto-generated constructor stub}public scrollviewlist(Context context, AttributeSet attrs) {    super(context, attrs);    // TODO Auto-generated constructor stub}public scrollviewlist(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);    // TODO Auto-generated constructor stub}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    // TODO Auto-generated method stub    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,            MeasureSpec.AT_MOST);    super.onMeasure(widthMeasureSpec, heightMeasureSpec);}

}

xml文件:

0 0