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); } } }
MainActivity
最新推荐文章于 2021-05-27 09:42:31 发布