package com.example.root.lyx_android_component.PictureWallFall;

import android.view.View.OnTouchListener;
import android.widget.ScrollView;

import java.util.logging.Handler;
import java.util.logging.LogRecord;

/**
 * Created by root on 15-4-10.
 */
public class FallScrollView extends ScrollView implements OnTouchListener {
    /**
     * 每页要加载的图片数量
     */
    public static final int PAGE_SIZE = 15;

    /**
     * 记录当前已加载到第几页
     */
    private int page;

    /**
     * 每一列的宽度
     */
    private int columnWidth;

    /**
     * 当前第一列的高度
     */
    private int firstColumnHeight;

    /**
     * 当前第二列的高度
     */
    private int secondColumnHeight;

    /**
     * 当前第三列的高度
     */
    private int thirdColumnHeight;

    /**
     * 是否已加载过一次layout，这里onLayout中的初始化只需加载一次
     */
    private boolean loadOnce;

    /**
     * 对图片进行管理的工具类
     */
    private ImageLoader imageLoader;

    /**
     * 第一列的布局
     */
    private LinearLayout firstColumn;

    /**
     * 第二列的布局
     */
    private LinearLayout secondColumn;

    /**
     * 第三列的布局
     */
    private LinearLayout thirdColumn;

    /**
     * 记录所有正在下载或等待下载的任务。
     */
    private static Set<LoadImageTask> taskCollection;

    /**
     * MyScrollView下的直接子布局。
     */
    private static View scrollLayout;

    /**
     * MyScrollView布局的高度。
     */
    private static int scrollViewHeight;

    /**
     * 记录上垂直方向的滚动距离。
     */
    private static int lastScrollY = -1;

    /**
     * 记录所有界面上的图片，用以可以随时控制对图片的释放。
     */
    private List<ImageView> imageViewList = new ArrayList<ImageView>();

    Handler mHandler = new Handler() {
        @Override
        public void close() {

        }

        @Override
        public void flush() {

        }

        @Override
        public void publish(LogRecord record) {

        }
    };
}

@@ -77,69 +77,334 @@
 oid.
-view.View.OnTouchListener;%0Aimport android.widget.ScrollView;%0A
+content.Context;%0Aimport android.os.Message;%0Aimport android.util.AttributeSet;%0Aimport android.view.View;%0Aimport android.view.View.OnTouchListener;%0Aimport android.widget.ImageView;%0Aimport android.widget.LinearLayout;%0Aimport android.widget.ScrollView;%0A%0Aimport java.util.ArrayList;%0Aimport java.util.HashSet;%0Aimport java.util.List;
 %0Aimp
@@ -1130,20 +1130,22 @@
 ate 
-Imag
+Pictur
 eLoader 
 imag
@@ -1140,20 +1140,23 @@
 eLoader 
-imag
+mPictur
 eLoader;
@@ -1785,17 +1785,18 @@
 geView%3E 
-i
+mI
 mageView
@@ -1839,100 +1839,366 @@
     
-Handler mHandler = new Handler() %7B
+public FallScrollView(Context context, AttributeSet attrs) %7B%0A        super(context, attrs);%0A        mPictureLoader = PictureLoader.getInstance();%0A        taskCollection = new HashSet%3CLoadImageTask%3E();%0A        setOnClickListener(this);
 %0A    
+%7D%0A%0A
     
-@Override%0A        public void close(
+private static Handler mHandler = new Handler() %7B%0A%0A        public void handleMessage(Message message
 ) %7B%0A
-%0A
         
 %7D%0A%0A 
@@ -2197,68 +2197,368 @@
     
-%7D%0A%0A
     
-    @Override%0A        public void flush() %7B%0A%0A
+FallScrollView fallScrollView = (FallScrollView) message.obj;%0A            int scrollY = fallScrollView.getScrollY();%0A            if (scrollY == lastScrollY) %7B%0A                if (scrollViewHeight + scrollY %3E= scrollLayout.getHeight()%0A                        && taskCollection.isEmpty()) %7B%0A                    fallScrollView.loadMoreImage();%0A       
         
 %7D%0A%0A 
@@ -2549,24 +2549,25 @@
             
+ 
 %7D%0A%0A        @
@@ -2569,66 +2569,228 @@
     
-@Override%0A        public void publish(LogRecord record) %7B%0A
+    %7D else %7B%0A                lastScrollY = scrollY;%0A                Message message1 = new Message();%0A                message1.obj = fallScrollView;%0A                mHandler.sendMessageDelayed(message1, 5);%0A            %7D
 %0A   
@@ -2799,14 +2799,15 @@
    %7D
+;
 %0A    %7D;%0A
 %7D%0A
@@ -2804,10 +2804,13 @@
 %0A    %7D;%0A
+%0A%0A
 %7D%0A
+%0A

add some code