`
xindrace
  • 浏览: 97135 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android瀑布流

 
阅读更多

今天研究了一下瀑布流,来说一下我实现它的方法。

看一下效果图:



 

 

 

基本的思路是重写了 ScrollView,让它包含一个LinearLayout,然后你要实现几列的就在里面添加几个LinearLayout,然后在循环在那几个LinearLayout里添加图片(也可以是别的view等)。

想看看重写ScrollView的LazyScrollView类

LazyScrollView类中定义了滑动的接口

 

/**
	 * 定义接口
	 * 
	 * @author lilongchun_hz
	 * 
	 */
	public interface OnScrollListener {
		void onBottom();

		void onTop();

		void onScroller();
	}

	private OnScrollListener onScrollListener;

	public void setOnScrollListener(OnScrollListener onScrollListener) {
		this.onScrollListener = onScrollListener;
	}

 

 然后在类中实现onTouchListener,onTouchListener中实现滑动时,调用OnScrollListener

 

// 屏幕touch点击事件
	OnTouchListener onTouchListener = new OnTouchListener() {

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			switch (event.getAction()) {
			case MotionEvent.ACTION_DOWN:
				System.out.println("down");
				break;
			case MotionEvent.ACTION_UP:
				System.out.println("up");
				if(view != null && onScrollListener !=null){
					handler.sendMessageDelayed(handler.obtainMessage(1), 200);
				}
				break;
			default:
				break;
			}
			return false;
		}
	};

 

 

 

 

    private Handler handler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			switch (msg.what) {
			case 1:
				// 滑动到底部
				if (view.getMeasuredHeight() <= (getScrollY() + getMeasuredHeight())) {
					if (onScrollListener != null) {
						onScrollListener.onBottom();
					}
				} else if (getScrollY() == 0) { // 滑动到顶部
					if (onScrollListener != null) {
						onScrollListener.onTop();
					}
				} else {// 滑动中
					if (onScrollListener != null) {
						onScrollListener.onScroller();
					}
				}
				break;

			default:
				break;
			}
		}
	};

 

 然后就是在MainActivity中添加LinearLayout

 

for (int i = 0; i < COLUMN_COUNT; i++) { // 生成三列的LinearLayout
			LinearLayout itemLayout = new LinearLayout(this);
			LinearLayout.LayoutParams itemParam = new LinearLayout.LayoutParams(
					itemWidth, LayoutParams.WRAP_CONTENT);
			itemLayout.setPadding(2, 2, 2, 2);
			itemLayout.setOrientation(LinearLayout.VERTICAL);
			itemLayout.setLayoutParams(itemParam);

			waterfall_items.add(itemLayout);
			waterfall_container.addView(itemLayout);
		}

 

 其余的就是添加ImageView了,这块就不讲了,其实都差不多。有需要的朋友可以下载源码看。


  • 大小: 115.3 KB
  • 大小: 74 KB
1
2
分享到:
评论
2 楼 messigoogle 2012-11-27  
我说您这个也是跟eoe上的差不多吧,加载的Assert中的图片,不能加载网络图片吧
1 楼 gundumw100 2012-10-26  
LazyScrollView是偶写的。欢迎使用。呵呵。
http://gundumw100.iteye.com/blog/1164066

相关推荐

    android 瀑布流效果

    总之,Android瀑布流效果的实现涉及布局管理、数据适配、动态计算和加载策略等多个方面,开发者需要对Android UI机制有深入理解。通过研究WaterfallDemo_2项目,可以系统地学习和掌握这一技术。

    Android瀑布流DEMO

    这个"Android瀑布流DEMO"提供了实现这种布局的示例代码,可以帮助开发者更好地理解和应用瀑布流设计。 首先,我们要了解瀑布流的核心组件——`RecyclerView`。它是Android SDK中的一个视图组件,用于高效地显示大量...

    Android 瀑布流照片墙

    瀑布流布局在Android应用开发中是一种常见的展示大量图片或内容的方式,它以其独特的视觉效果,类似于瀑布连续下落的形式,让信息呈现更有层次感。在这个名为"Android 瀑布流照片墙"的项目中,开发者使用Android ...

    android瀑布流容器

    综上所述,实现Android瀑布流容器并支持多重效果展示涉及到了Android UI布局的深度定制,包括自定义ViewGroup、测量与布局逻辑以及动画和交互设计。开发者需要具备扎实的Android基础知识,同时了解如何利用现有库和...

    android瀑布流代码大全

    本资源包包含了多个关于Android瀑布流的示例代码,涵盖了从基础到进阶的各种实现方式,帮助开发者深入理解和掌握瀑布流布局的实现。 1. **基本原理** 瀑布流布局的核心是通过计算每一列的高度来确定内容的排列。...

    Android瀑布流动态加载

    Android瀑布流是一种常见的移动应用界面布局方式,尤其在展示大量图片或者信息流的应用中非常常见,如社交媒体、电商应用等。这种布局模仿了瀑布一泻千里的效果,内容逐个向下排列,每列的高度根据内容自适应,形成...

    Android瀑布流demo

    综上所述,"Android瀑布流demo"项目涵盖了Android自定义布局、数据适配、图片加载、滚动监听、无限滚动等多个技术点,通过学习和实践这个demo,开发者可以掌握构建高效、美观的瀑布流界面的技能。

    Android 瀑布流源码.zip

    2. `Android+瀑布流+Demo.rar`:这是一个Android瀑布流的演示项目。解压后,里面可能包含了一个完整的Android Studio工程,包括必要的XML布局文件、Java或Kotlin源代码、资源文件等,你可以通过运行这个项目来理解和...

    Android瀑布流照片墙实现,代码

    实现Android瀑布流照片墙主要涉及以下几个技术点: 1. **布局管理器(LayoutManager)**:在Android的RecyclerView中,我们通常需要自定义一个LayoutManager来实现瀑布流布局。RecyclerView是Android系统提供的一个...

    android 瀑布流加载图片

    综上所述,实现Android瀑布流加载图片涉及多个环节,包括选择合适的图片加载库、构建瀑布流布局、处理点击事件以及性能优化。遵循这些步骤,你可以创建一个稳定、高效的瀑布流图片展示组件。记得在实际开发中,根据...

    android瀑布流加载

    综上所述,实现“android瀑布流加载”涉及到了Android的布局管理、数据加载策略、图片处理、性能优化、屏幕适配、动画效果、错误处理和异步编程等多个技术点。通过熟练掌握这些知识点,我们可以构建出高性能、用户...

    android 瀑布流显示图片

    总之,实现一个Android瀑布流图片显示程序,涉及到的知识点包括:RecyclerView和自定义LayoutManager、图片异步加载库的使用、无限滚动加载以及数据与视图的绑定。通过实践和学习,你可以掌握这些技能,为自己的应用...

    超简单的android瀑布流

    特别简单的android瀑布流开发例子,网上有个叫dodowaterfall的例子https://github.com/dodola/android_waterfall,感觉太麻烦了,所以弄了一个简单的

    android 瀑布流 刷新 加载更多

    瀑布流布局在Android开发中是一种常见的布局方式,尤其在展示图片、商品等信息时非常流行。它的特点是元素根据屏幕宽度自适应地垂直排列,形成一种类似瀑布的效果,每一列的高度根据内容不同而不同。这种布局方式能...

    Android瀑布流

    【Android瀑布流】是一种常见的移动应用布局方式,尤其在电商、社交等应用中广泛使用,它的特点是内容元素按一定规则自上而下排列,每个元素的宽度固定,但高度不固定,形成一种类似瀑布倾泻的效果。这种布局方式...

    Android瀑布流照片墙实现,体验不规则排列的美感-IT计算机-毕业设计.zip

    这个压缩包“Android瀑布流照片墙实现,体验不规则排列的美感”提供了一个具体的实现示例,对于学习Android应用源码和论文撰写具有很高的参考价值。 首先,瀑布流布局的核心在于自适应和滚动的流畅性。在Android中...

    Android瀑布流加载图片效果

    Android瀑布流加载图片效果

    android 瀑布流Demo

    瀑布流布局在Android应用开发中是一种常见的展示方式,尤其在电商、社交等应用中用于商品或图片的展示。它的特点是视图元素不均匀分布,每一列的高度根据内容自适应,形似瀑布倾泻而下。下面我们将深入探讨瀑布流...

    android瀑布流标签

    瀑布流布局在Android开发中是一种常见的布局方式,它模拟了网页设计中的Pinterest风格,使得屏幕上的元素能够以多列、自适应高度的方式排列,形成一种类似瀑布倾泻的效果。在这个场景下,"标签"通常指的是用于分类...

    Android 瀑布流开源框架

    标题中的“Android 瀑布流开源框架”指的是专门为Android平台设计的一类开源库,旨在帮助开发者快速、高效地构建瀑布流布局的界面。这些框架通常包括了数据加载、图片缓存、布局计算、滚动优化等核心功能。 描述中...

Global site tag (gtag.js) - Google Analytics