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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.