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);


        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值