Android 自定义布局—瀑布流
2015-12-30 19:29
543 查看
*
* 转载请标明出处:http://blog.csdn.net/u013598111/article/details/50436817
* @author:【JunTao_sun】
*
*
*/
当手指在中间 并且 在屏幕的2分之1高度 以上滑动 每个listview 即全屏滑动
如果在屏幕宽度3分之1 滑动 第一个子view获得触摸事件 滚动,其他同理。
package com.example.pinterestlistview;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView listv_1;
private ListView listv_2;
private ListView listv_3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listv_1 = (ListView) findViewById(R.id.lv1);
listv_2 = (ListView) findViewById(R.id.lv2);
listv_3 = (ListView) findViewById(R.id.lv3);
try {
listv_1.setAdapter(new MyAdapter1());
listv_2.setAdapter(new MyAdapter1());
listv_3.setAdapter(new MyAdapter1());
} catch (Exception e) {
e.printStackTrace();
}
}
private int ids[] = new int[] { R.drawable.ic_1, R.drawable.ic_10,
R.drawable.ic_10_s, R.drawable.ic_11,
R.drawable.ic_12, R.drawable.ic_13,
R.drawable.ic_14, R.drawable.ic_15,
R.drawable.ic_2, R.drawable.ic_4,
R.drawable.ic_6, R.drawable.ic_5,};
class MyAdapter1 extends BaseAdapter {
@Override
public int getCount() {
return 1000;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
HolderView holder=null;
if(convertView==null){
holder=new HolderView();
convertView = View.inflate(getApplicationContext(),
R.layout.lv_item, null);
holder.imagev=(ImageView) convertView.findViewById(R.id.iv);
convertView.setTag(holder);
}else {
holder=(HolderView) convertView.getTag();
}
int resId = (int) (Math.random() * 12);
holder.imagev.setImageResource(ids[resId]);
return convertView;
}
}
class HolderView{
ImageView imagev;
}
}
主要是是自定义LinearLayout 的实现 父布局处理触摸事件的分发
package com.example.pinterestlistview;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
public class MyLinearLayout extends LinearLayout {
public MyLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int width=getWidth()/getChildCount();
int height = getHeight();
int count=getChildCount();
float eventX = event.getX();
if (eventX<width){ // 滑动左边的 listView
event.setLocation(width/2, event.getY());
getChildAt(0).dispatchTouchEvent(event);
return true;
} else if (eventX > width && eventX < 2 * width) { //滑动中间的 listView
float eventY = event.getY();
if (eventY < height / 2) {
event.setLocation(width / 2, event.getY());
for (int i = 0; i < count; i++) {
View child = getChildAt(i);
try {
child.dispatchTouchEvent(event);
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
} else if (eventY > height / 2) {
event.setLocation(width / 2, event.getY());
try {
getChildAt(1).dispatchTouchEvent(event);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}else if (eventX>2*width){ //分发给 第三个子view listView 获得触摸事件
event.setLocation(width/2, event.getY());
getChildAt(2).dispatchTouchEvent(event);
return true;
}
return true;
}
}
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- android上改变listView的选中颜色
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- android中ListView数据刷新时的同步方法
- Android提高之ListView实现自适应表格的方法
- Android中实现水平滑动(横向滑动)ListView示例
- 异步加载技术实现当滚动条到最底部的瀑布流效果
- C#实现ListView选中项向上或向下移动的方法
- 原生JS实现美图瀑布流布局赏析
- avalonjs制作响应式瀑布流特效
- jquery 插件实现瀑布流图片展示实例
- jquery代码实现简单的随机图片瀑布流效果
- C# listview添加combobox到单元格的实现代码
- ListView Adapter优化 实例
- Android用ListView显示SDCard文件列表的小例子
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- jQuery.lazyload+masonry改良图片瀑布流代码
- asp.net ListView 数据绑定
- Android之ScrollView嵌套ListView和GridView冲突的解决方法