Android双列滑动表格(双表头不动)

※效果

※用法

package com.cd.slidetest;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ScrollView;

public class MainActivity extends Activity implements OnScrollChangedListener{

	private GestureDetector mGestureDetector = null;
	private HScrollView mItemRoom = null;
	private ScrollView mVertical = null;
	private HScrollView mTimeItem = null;
	private LinearLayout mContain = null;
	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mGestureDetector = new GestureDetector(mGestureListener);
		makeItems();
		setContentView(mContain);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	private void makeItems(){
		mItemRoom = new HScrollView(this, mGestureDetector);
		mItemRoom.setListener(this);
		LinearLayout VLayout = new LinearLayout(this);
		VLayout.setOrientation(LinearLayout.VERTICAL);

		for(int i = 0;i < 20;i++){
			LinearLayout HLayout = new LinearLayout(this);
			for(int j = 0;j < 10;j++){
				TextItem item = new TextItem(this);
				item.setText(i*10+j + "vh");
				item.setBackgroundColor(Color.LTGRAY);
				LinearLayout.LayoutParams params = new LayoutParams(100,70);
				HLayout.addView(item, params);
			}
			VLayout.addView(HLayout);
		}

		mItemRoom.addView(VLayout);

		mVertical = new ScrollView(this);
		LinearLayout hlayout = new LinearLayout(this);
		LinearLayout vlayout = new LinearLayout(this);
		vlayout.setOrientation(LinearLayout.VERTICAL);
		for(int i = 0;i < 20;i++){
			TextItem item = new TextItem(this);
			item.setBackgroundColor(Color.BLUE);
			item.setText(i + "v");
			LinearLayout.LayoutParams params = new LayoutParams(100,70);
			vlayout.addView(item, params);
		}
		hlayout.addView(vlayout);
		hlayout.addView(mItemRoom);

		mVertical.addView(hlayout);

		LinearLayout tophlayout = new LinearLayout(this);
		mTimeItem = new HScrollView(this, mGestureDetector);
		mTimeItem.setListener(this);
		LinearLayout layout = new LinearLayout(this);
		for(int i = 0;i < 10;i++){
			TextItem item = new TextItem(this);
			item.setText(i + "h");
			item.setBackgroundColor(Color.GREEN);
			LinearLayout.LayoutParams params = new LayoutParams(100,70);
			layout.addView(item,params);
		}
		mTimeItem.addView(layout);
		TextItem item = new TextItem(this);
		item.setBackgroundColor(Color.RED);
		LinearLayout.LayoutParams params = new LayoutParams(100,70);
		tophlayout.addView(item,params);
		tophlayout.addView(mTimeItem);

		mContain = new LinearLayout(this);
		mContain.setOrientation(LinearLayout.VERTICAL);
		mContain.addView(tophlayout);
		mContain.addView(mVertical);
	}

	private SimpleOnGestureListener mGestureListener = new SimpleOnGestureListener(){

		@Override
		public boolean onScroll(MotionEvent e1, MotionEvent e2,
				float distanceX, float distanceY) {
			if(Math.abs(distanceX) > Math.abs(distanceY)) {
                return true;
			}
			return false;
		}

	};
	@Override
	public void onScrollChanged(HScrollView scroll, int x, int y, int oldx,
			int oldy) {
		if(scroll == mItemRoom){
			mTimeItem.scrollTo(x, y);
		}else if(scroll == mTimeItem){
			mItemRoom.scrollTo(x, y);
		}

	}
}

※下载地址

http://download.csdn.net/detail/u010785585/8062787

时间: 2024-10-28 03:57:19

Android双列滑动表格(双表头不动)的相关文章

Android图片管理组件(双缓存+异步加载)

转自:http://www.oschina.net/code/snippet_219356_18887?p=3#comments ImageManager2这个类具有异步从网络下载图片,从sd读取本地图片,内存缓存,硬盘缓存,图片使用动画渐现等功能,已经将其应用在包含大量图片的应用中一年多,没有出现oom Android程序常常会内存溢出,网上也有很多解决方案,如软引用,手动调用recycle等等.但经过我们实践发现这些方案,都没能起到很好的效果,我们的应用依然会出现很多oom,尤其我们的应用包

java018.双列集合Map

day18双列集合MapMap接口和Collection接口的区别: * Map是双列的,Collection是单列的 * Map的键唯一,Collection的子体系Set是唯一的,List体系可以存储重复值 * Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 * a:添加功能  * V put(K key,V value):添加元素.   * 如果键是第一次存储,就直接存储元素,返回null   * 如果键不是第一次存在,就用值把以前的值替换掉,

JAVA双列集合HashMap

HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类,   Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许重复.value同样不要求有序,但允许重复. Iterator接口是负责定义访问和遍历元素的接口 1. 使用Iterator迭代器缺点: 1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能 2. ListIterator和Iterator都有hasNex

Java总裁-Java-Map(双列接口)

public class Student { public static void main(String[] args) { /* * 声明一个HashMap双列集合,并且是String,int类的泛型. */ HashMap<String,Integer> map=new HashMap<String,Integer>(); map.put("张三", 800); map.put("李四", 1500); map.put("王五

集合(三)------双列集合

所谓双列集合就是存在映射关系并且是成对存在的. 双列集合体系: -------------| Map  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复.----------------| HashMap  底层也是基于哈希表实现 的.----------------| TreeMap   TreeMap也是基于红黑树(二叉树)数据结构实现 的, 特点:会对元素的键进行排序存储.----------------| Hashtable 和ha

IOS_Picker_双列联动实现

目录: 1 效果图 2 .h文件截图2张 3 .m文件截图2张:初始化数据代码和新添加方法 4 其他注意事项截图1张 1 效果图: 2 .h文件截图: 3 .m文件初始化数据截图: 新添加的方法截图: 4 其他注意事项截图 picker的OutLets连接: IOS_Picker_双列联动实现

C#中的组织语言-----------单双列,泛型集合

ArryList 非常类似于数组却又高于数组,因为ArryList可以动态维护,不会局限于存储学过的数组那样有个数限制的值,可以动态的添加,删除,遍历里边的值. 注意:ArryList类似于数组,所以也可以通过索引检索出里面的值,并且索引从0开始. ArryList中的添加,移除和遍历 ArrayList list = new ArrayList();                     list.Add("你好!!");                     list.Add(

双列集合Map及实现该接口的类的常用方法

为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接口的方法:   添加:    put(K key, V value)     putAll(Map<? extends K,? extends V> m)    删除    remove(Object key)     clear()   获取:    get(Object key)     si

Map集合(双列集合)

Map集合(双列集合)Map集合是键值对集合. 它的元素是由两个值组成的,元素的格式是:key=value. Map集合形式:{key1=value1 , key2=value2 , key3=value3 , .. } * Map集合系列: Map<K,V>(接口) / HashMap<K,V>(实现类) / LinkedHashMap<K,V>注意:Map集合只支持引用数据类型的元素存储. Map集合特点: 键是无序不重复的. 重复的键,后面加入的会直接覆盖前面.