MainActivity

package com.bwie.topnewsnormal;

import android.content.Intent;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.andy.library.ChannelActivity;
import com.andy.library.ChannelBean;
import com.bwie.topnewsnormal.adapter.MyPagerAdapter;
import com.bwie.topnewsnormal.bean.ChannelList;
import com.bwie.topnewsnormal.database.NewsDao;
import com.bwie.topnewsnormal.utils.ThemeUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //AppCompatActivity
    private TabLayout tablayout;
    private ViewPager vp;
    private ImageView ivIcon;
    private SlidingMenu slidingMenu;
    private ImageView ivSetting;
    private ImageView ivQQ;
    private ImageView night_mode;
    private ImageView iv_download;
    private ImageView iv_addChannel;
    private LinearLayout more_loginmode;
    private ArrayList<ChannelBean> allChannelList;
    private ArrayList<ChannelBean> userChannelList;
    private NewsDao newsDao;
    private MyPagerAdapter myPagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ThemeUtils.OnActivityCreate(this);
        setContentView(R.layout.activity_main);

        //得到操作數據庫的類
        newsDao = new NewsDao(this);

        //找控件
        tablayout = (TabLayout) findViewById(R.id.tablayout);
        vp = (ViewPager) findViewById(R.id.vp);
        ivIcon = (ImageView) findViewById(R.id.ivIcon);
        iv_addChannel = (ImageView) findViewById(R.id.iv_addChannel);

        //添加頻道的imageview設置監聽
        iv_addChannel.setOnClickListener(this);
        //給側拉欄圖標設置監聽
        ivIcon.setOnClickListener(this);

        //初始化數據  設置viewpager和頻道
        initData();

        //關聯viewpager之前init頻道數據(設置完適配器  再關聯tablayout        tablayout.setupWithViewPager(vp);

        //初始化側拉欄 進行一些設置
        initLeftSlidingMenu();

    }


    public void initLeftSlidingMenu() {
        //得到一個側拉菜單
        slidingMenu = new SlidingMenu(this);
        //顯示位置
        slidingMenu.setMode(SlidingMenu.LEFT);
        //設置觸摸的區域
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        //設置距離右邊
        slidingMenu.setBehindOffset(200);
        //範圍是 0 - 1f ,當設置成1的時候菜單欄有明顯的褪色效果
        // slidingMenu.setFadeDegree(1);
        //activity關聯起來
        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        //設置view
        slidingMenu.setMenu(R.layout.slidingmenu_left_layout);

        //可以直接找側拉欄中的控件
        ivQQ = (ImageView) findViewById(R.id.ivQQ);
        ivSetting = (ImageView) findViewById(R.id.ivSetting);
        night_mode = (ImageView) findViewById(R.id.night_mode);
        iv_download = (ImageView) findViewById(R.id.iv_download);
        more_loginmode = (LinearLayout) findViewById(R.id.more_loginmode);
        more_loginmode.setOnClickListener(this);
        ivQQ.setOnClickListener(this);
        night_mode.setOnClickListener(this);
        ivSetting.setOnClickListener(this);
        iv_download.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ivIcon:
                slidingMenu.toggle();
                break;
            case R.id.ivQQ:
                UMShareAPI.get(this).getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, authListener);
                break;
            case R.id.night_mode:
                ThemeUtils.onClick(this,allChannelList);
                break;
            case R.id.ivSetting:
                startActivity(new Intent(MainActivity.this, SettingActivity.class));
                break;
            case R.id.iv_download:
                startActivity(new Intent(MainActivity.this, DownLoadActivity.class));
                break;
            case R.id.more_loginmode:
                startActivity(new Intent(MainActivity.this, LoginActivity.class));
                break;
            case R.id.iv_addChannel:
                //傳過去可選擇的頻道
                ChannelActivity channelActivity = new ChannelActivity();
                channelActivity.startChannelActivity(this, allChannelList);
                break;

        }
    }


    UMAuthListener authListener = new UMAuthListener() {
        /**
         * @desc 授權開始的回調
         * @param platform 平臺名稱
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授權成功的回調
         * @param platform 平臺名稱
         * @param action 行爲序號,開發者用不上
         * @param data 用戶資料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

            Toast.makeText(MainActivity.this, "QQ登錄成功", Toast.LENGTH_LONG).show();
            String name = data.get("name");
            String gender = data.get("gender");
            String photoUrl = data.get("iconurl");
            DisplayImageOptions builder = new DisplayImageOptions.Builder()
                    .displayer(new RoundedBitmapDisplayer(90))
                    .build();
            ImageLoader.getInstance().displayImage(photoUrl, ivIcon, builder);

        }

        /**
         * @desc 授權失敗的回調
         * @param platform 平臺名稱
         * @param action 行爲序號,開發者用不上
         * @param t 錯誤原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {

            if (UMShareAPI.get(MainActivity.this).isInstall(MainActivity.this, SHARE_MEDIA.QQ)) {
                Toast.makeText(MainActivity.this, "失敗:" + t.getMessage(), Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(MainActivity.this, "沒有安裝qq" + t.getMessage(), Toast.LENGTH_LONG).show();
            }

        }

        /**
         * @desc 授權取消的回調
         * @param platform 平臺名稱
         * @param action 行爲序號,開發者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show();
        }
    };

    private void initData() {
        allChannelList = new ArrayList<>();
        userChannelList = new ArrayList<>();

        List<ChannelBean> allChannels = newsDao.queryAll();

        //當第一次進入activity的時候  數據庫查詢不到內容  就要設置一些默認的頻道
        if (allChannels == null || allChannels.size() < 1) {

            //用戶已選擇的頻道  爲了讓activity有內容
            if (getSharedPreferences("firsttime", MODE_PRIVATE).getBoolean("flag", true)) {
                getSharedPreferences("firsttime", MODE_PRIVATE).edit().putBoolean("flag", false);
                System.out.println("+++++++++++++++++++走了");
                userChannelList.add(new ChannelBean("頭條", true));
                userChannelList.add(new ChannelBean("新聞", true));
                //全部的頻道
                allChannelList.add(new ChannelBean("頭條", true));
                allChannelList.add(new ChannelBean("新聞", true));
                allChannelList.add(new ChannelBean("財經", false));
                allChannelList.add(new ChannelBean("體育", false));
                allChannelList.add(new ChannelBean("娛樂", false));
                allChannelList.add(new ChannelBean("軍事", false));
                allChannelList.add(new ChannelBean("教育", false));
                allChannelList.add(new ChannelBean("科技", false));
                allChannelList.add(new ChannelBean("NBA", false));
                allChannelList.add(new ChannelBean("股票", false));
                allChannelList.add(new ChannelBean("星座", false));
                allChannelList.add(new ChannelBean("女性", false));
                allChannelList.add(new ChannelBean("健康", false));
                allChannelList.add(new ChannelBean("育兒", false));

                newsDao.add(allChannelList);
            }

        } else {
            //如果有內容  直接賦值
            allChannelList.addAll(newsDao.queryAll());
            userChannelList.addAll(newsDao.queryUser());
        }

        myPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), userChannelList);
        vp.setAdapter(myPagerAdapter);




    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
        if (requestCode == ChannelActivity.REQUEST_CODE && resultCode == ChannelActivity.RESULT_CODE) {
            String json = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);
            if (TextUtils.isEmpty(json)) {
                return;
            }
            List<ChannelBean> list = new Gson().fromJson(json, new TypeToken<List<ChannelBean>>() {
            }.getType());

            if (list == null || list.size() < 1) {
                return;
            }
//          每次返回都清空集合 然後重新賦值
            allChannelList.clear();
            userChannelList.clear();


            for (ChannelBean bean : list) {

                if (bean.isSelect()) {
                    userChannelList.add(bean);
                }
                allChannelList.add(bean);
            }

            myPagerAdapter.notifyDataSetChanged();

            //每次設置頻道  都要刪除表中的內容  並且重新保存
            newsDao.delete();
            newsDao.add(allChannelList);


        }
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章