// Path: app/src/main/java/com/topnews/android/utils/UIUtils.java
// public class UIUtils {
// 
//     /**
//      * 获取上下文对象
//      * @return
//      */
//     public static Context getContext(){
// 
//         return BaseApplication.getmContext();
//     }
// 
//     /**
//      * 获取主线程id
//      * @return
//      */
//     public static int getMainThreadId(){
//         return BaseApplication.getMainThreadId();
//     }
// 
//     /**
//      * 获取handler实例
//      * @return
//      */
//     public static Handler getHandler(){
//         return BaseApplication.getmHandler();
//     }
// 
//     /**
//      * 判断当前是否运行在主线程
//      * @return
//      */
//     public static boolean isRunOnUiThread(){
//         return getMainThreadId()==android.os.Process.myTid();
//     }
// 
//     /**
//      * 确保当前的操作运行在UI主线程
//      * @param runnable
//      */
//     public static void runOnUiThread(Runnable runnable){
//         if(isRunOnUiThread()){
//             runOnUiThread(runnable);
//         }else{
//             getHandler().post(runnable);
//         }
//     }
// 
//     /**
//      * 获取字符串数组
//      * @param id
//      * @return
//      */
//     public static String[] getStringArray(int id){
//         return getContext().getResources().getStringArray(id);
//     }
// 
//     /**
//      * dp转px
//      * @param dp
//      * @return
//      */
//     public static int dip2px(int dp){
//         int mDensity=(int) getContext().getResources().getDisplayMetrics().density;
//         return dp*mDensity;
//     }
// 
//     /**
//      * px转dp
//      * @param px
//      * @return
//      */
//     public static float px2dip(int px){
//         float mDensity=getContext().getResources().getDisplayMetrics().density;
//         return px/mDensity;
//     }
// }


import android.content.Context;
import android.support.annotation.UiThread;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import com.topnews.android.R;
import com.topnews.android.utils.UIUtils;
package com.topnews.android.view;



/**
 * Created by dell on 2017/2/28.
 *
 * 根据当前状态来显示不同页面的自定义控件
 *
 * 页面状态：未加载、正在加载、数据为空、加载失败、加载成功
 */

public abstract class LoadingPage extends FrameLayout {

    private static final int PAGE_LOAD_UNDO=1;
    private static final int PAGE_LOAD_LOADING=2;
    private static final int PAGE_LOAD_NONE=3;
    private static final int PAGE_LOAD_FAIL=4;
    private static final int PAGE_LOAD_SUCCESS=5;

    private int currentState=PAGE_LOAD_UNDO;       //当前状态

    private View pageLoading;
    private View pageError;
    private View pageEmpty;
    private View pageSuccess;

    public LoadingPage(Context context) {
        super(context);

        initView();
    }

    public LoadingPage(Context context, AttributeSet attrs) {
        super(context, attrs);

        initView();
    }

    public LoadingPage(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        initView();
    }

    public LoadingPage(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, int currentState) {
        super(context, attrs, defStyleAttr, defStyleRes);

        initView();
    }

    /**
     * 初始化布局
     * @return
     */
    public void initView(){

        if(pageLoading==null){                   //初始化加载中的布局
// Path: app/src/main/java/com/topnews/android/utils/UIUtils.java
// public class UIUtils {
// 
//     /**
//      * 获取上下文对象
//      * @return
//      */
//     public static Context getContext(){
// 
//         return BaseApplication.getmContext();
//     }
// 
//     /**
//      * 获取主线程id
//      * @return
//      */
//     public static int getMainThreadId(){
//         return BaseApplication.getMainThreadId();
//     }
// 
//     /**
//      * 获取handler实例
//      * @return
//      */
//     public static Handler getHandler(){
//         return BaseApplication.getmHandler();
//     }
// 
//     /**
//      * 判断当前是否运行在主线程
//      * @return
//      */
//     public static boolean isRunOnUiThread(){
//         return getMainThreadId()==android.os.Process.myTid();
//     }
// 
//     /**
//      * 确保当前的操作运行在UI主线程
//      * @param runnable
//      */
//     public static void runOnUiThread(Runnable runnable){
//         if(isRunOnUiThread()){
//             runOnUiThread(runnable);
//         }else{
//             getHandler().post(runnable);
//         }
//     }
// 
//     /**
//      * 获取字符串数组
//      * @param id
//      * @return
//      */
//     public static String[] getStringArray(int id){
//         return getContext().getResources().getStringArray(id);
//     }
// 
//     /**
//      * dp转px
//      * @param dp
//      * @return
//      */
//     public static int dip2px(int dp){
//         int mDensity=(int) getContext().getResources().getDisplayMetrics().density;
//         return dp*mDensity;
//     }
// 
//     /**
//      * px转dp
//      * @param px
//      * @return
//      */
//     public static float px2dip(int px){
//         float mDensity=getContext().getResources().getDisplayMetrics().density;
//         return px/mDensity;
//     }
// }


// Path: app/src/main/java/com/topnews/android/view/LoadingPage.java
import android.content.Context;
import android.support.annotation.UiThread;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import com.topnews.android.R;
import com.topnews.android.utils.UIUtils;

package com.topnews.android.view;



/**
 * Created by dell on 2017/2/28.
 *
 * 根据当前状态来显示不同页面的自定义控件
 *
 * 页面状态：未加载、正在加载、数据为空、加载失败、加载成功
 */

public abstract class LoadingPage extends FrameLayout {

    private static final int PAGE_LOAD_UNDO=1;
    private static final int PAGE_LOAD_LOADING=2;
    private static final int PAGE_LOAD_NONE=3;
    private static final int PAGE_LOAD_FAIL=4;
    private static final int PAGE_LOAD_SUCCESS=5;

    private int currentState=PAGE_LOAD_UNDO;       //当前状态

    private View pageLoading;
    private View pageError;
    private View pageEmpty;
    private View pageSuccess;

    public LoadingPage(Context context) {
        super(context);

        initView();
    }

    public LoadingPage(Context context, AttributeSet attrs) {
        super(context, attrs);

        initView();
    }

    public LoadingPage(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        initView();
    }

    public LoadingPage(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes, int currentState) {
        super(context, attrs, defStyleAttr, defStyleRes);

        initView();
    }

    /**
     * 初始化布局
     * @return
     */
    public void initView(){

        if(pageLoading==null){                   //初始化加载中的布局
            pageLoading = View.inflate(UIUtils.getContext(), R.layout.page_loading,null);