package com.sunsky.marqueeviewdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.sunsky.marqueeview.MarqueeView;

import java.util.ArrayList;
import java.util.List;

/**
 * 类描述:仿淘宝首页的 淘宝头条滚动的自定义View
 * 双行
 * 创建人:sunsky
 * 创建时间:2017/6/1 17:47
 * 修改人:sunsky
 * 修改时间:2017/6/1 17:47
 * 修改备注:
 */
public class MainActivity extends AppCompatActivity {


    private MarqueeView marqueeView1;
    private MarqueeView marqueeView2;
    List<String> data = new ArrayList<>();
    List<View> views1 = new ArrayList<>();
    List<View> views2 = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initParam();
        initdata();
        initView();
    }


    @Override
    protected void onStart() {
        super.onStart();
        marqueeView1.startFlipping();
        marqueeView2.startFlipping();
    }

    @Override
    protected void onStop() {
        super.onStop();
        marqueeView1.stopFlipping();
        marqueeView2.stopFlipping();
    }

    /**
     * 实例化控件
     */
    private void initParam() {
        marqueeView1 = (MarqueeView) findViewById(R.id.upview1);
        marqueeView2 = (MarqueeView) findViewById(R.id.upview2);
    }

    /**
     * 初始化界面程序
     */
    private void initView() {
        setViewTwoLines();
        setViewSingleLine();
        marqueeView1.setViews(views1);
        marqueeView2.setViews(views2);
//        /**
//         * 设置item_view的监听
//         */
//        marqueeView.setOnItemClickListener(new MarqueeView.OnItemClickListener() {
//            @Override
//            public void onItemClick(int position, View view) {
//                Toast.makeText(MainActivity.this, "你点击了第几个items" + position, Toast.LENGTH_SHORT).show();
//            }
//        });
    }

    /**
     * 初始化需要循环的View
     * 为了灵活的使用滚动的View,所以把滚动的内容让用户自定义
     * 假如滚动的是三条或者一条,或者是其他,只需要把对应的布局,和这个方法稍微改改就可以了,
     * 条数为奇数时做了些处理:奇数时最后一个没有内容 将第一个拼接到最后显示
     */
    private void setViewTwoLines() {
        views1.clear();//记得加这句话,不然可能会产生重影现象
        for (int i = 0; i < data.size(); i = i + 2) {
            final int position = i;
            //设置滚动的单个布局
            LinearLayout moreView = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_view, null);
            //初始化布局的控件
            TextView tv1 = (TextView) moreView.findViewById(R.id.tv1);
            TextView tv2 = (TextView) moreView.findViewById(R.id.tv2);

            /**
             * 设置监听
             */
            moreView.findViewById(R.id.rl).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(MainActivity.this, position + "你点击了" + data.get(position).toString(), Toast.LENGTH_SHORT).show();
                }
            });
            /**
             * 设置监听
             */
            moreView.findViewById(R.id.rl2).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (data.size() > position + 1) {
                        Toast.makeText(getApplicationContext(), position + "你点击了" + data.get(position + 1).toString(), Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(getApplicationContext(), position + "你点击了" + data.get(0).toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            });
            //进行对控件赋值
            tv1.setText(data.get(i).toString());
            if (data.size() > i + 1) {//奇数条
                tv2.setText(data.get(i + 1).toString());
            } else {//偶数条
                //因为淘宝那儿是两条数据,但是当数据是奇数时就不需要赋值第二个,所以加了一个判断,还应该把第二个布局给隐藏掉
                //moreView.findViewById(R.id.rl2).setVisibility(View.GONE);
                //修改了最后一个没有 将第一个拼接到最后显示
                tv2.setText(data.get(0).toString());
            }

            //添加到循环滚动数组里面去
            views1.add(moreView);
        }
    }


    /**
     * 自定义布局——单行滚动
     */
    private void setViewSingleLine() {
        views2.clear();//记得加这句话,不然可能会产生重影现象
        for (int i = 0; i < data.size(); i++) {
            final int position = i;
            //设置滚动的单个布局
            LinearLayout moreView = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_view_single, null);
            //初始化布局的控件
            TextView tv1 = (TextView) moreView.findViewById(R.id.tv1);

            /**
             * 设置监听
             */
            moreView.findViewById(R.id.rl).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(getApplicationContext(), position + "你点击了" + data.get(position).toString(), Toast.LENGTH_SHORT).show();
                }
            });

            //进行对控件赋值
            tv1.setText(data.get(i).toString());

            //添加到循环滚动数组里面去
            views2.add(moreView);
        }
    }


    /**
     * 初始化数据
     */
    private void initdata() {
        data = new ArrayList<>();
        data.add("git常用命令");
        data.add("Git配置SSH访问GitHub(window)");
        data.add("关于java的抽象和接口");
//        data.add("阿里HotFix2.0升级详解 畅谈热修复领域那些事");

    }

}