package com.roboo.like.netease; import java.util.LinkedList; import org.json.JSONObject; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.TransitionDrawable; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageButton; import android.widget.Toast; import com.android.volley.RequestQueue; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.Volley; import com.roboo.like.netease.abs.ptr.PullToRefreshAttacher; import com.roboo.like.netease.dao.INewsCategoryDao; import com.roboo.like.netease.dao.impl.NewsCategoryDaoImpl; import com.roboo.like.netease.database.DBHelper; import com.roboo.like.netease.fragment.LeftMenuFragment; import com.roboo.like.netease.fragment.MainFragment; import com.roboo.like.netease.fragment.QuickContactFragment; import com.roboo.like.netease.fragment.RightMenuFragment; import com.roboo.like.netease.model.NewsCategory; import com.roboo.like.netease.slidingmenu.SlidingFragmentActivity; import com.roboo.like.netease.slidingmenu.SlidingMenu; import com.roboo.like.netease.view.MyViewPager; import com.roboo.like.netease.view.MyViewPager.TransitionEffect; import com.roboo.like.netease.view.PagerSlidingTabStrip; @SuppressLint("NewApi") public class MainActivity extends SlidingFragmentActivity implements View.OnClickListener { private ImageButton mIBtnSubscribe; private PullToRefreshAttacher mPullToRefreshAttacher; private final Handler handler = new Handler(); private PagerSlidingTabStrip tabs; private MyViewPager mViewPager; private MyPagerAdapter adapter; protected SlidingMenu mSlidingMenu; private Drawable oldBackground = null; private int currentColor = 0X00FF0000; private LinkedList<NewsCategory> mCustomedData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTVTitle(R.string.app_name); // TODO setContentView Method Tag setContentView(R.layout.activity_main); testJsonRequest(); isFirstRun(); this.mPullToRefreshAttacher = PullToRefreshAttacher.get(this); initView(); customSlidingMenu(); mViewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.pager_margin)); changeColor(currentColor); changeColor(Color.parseColor("#BC1100")); this.mIBtnSubscribe.setOnClickListener(this); } /** * 判断是否是第一次启动,如果是的话,跳转到{@link WelcomeActivity} */ private void isFirstRun() { SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE); System.out.println("preferences.getBoolean(isFirst) =" + preferences.getBoolean("isFirst", true)); if (preferences.getBoolean("isFirst", true)) { preferences.edit().putBoolean("isFirst", false).commit(); Intent intent = new Intent(this, WelcomeActivity.class); startActivity(intent); finish(); } } /** * TODO init view * */ private void initView() { this.mIBtnSubscribe = (ImageButton) findViewById(R.id.ibtn_subscribe); this.tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); this.mViewPager = (MyViewPager) findViewById(R.id.pager); this.mViewPager.setTransitionEffect(TransitionEffect.FlipHorizontal); this.mViewPager.setOffscreenPageLimit(1); } @Override protected void onResume() { super.onResume(); ViewServer.get(this).setFocusedWindow(this); INewsCategoryDao newsCategoryDao = new NewsCategoryDaoImpl(new DBHelper(this)); mCustomedData = newsCategoryDao.getCustomedList(); this.adapter = new MyPagerAdapter(getSupportFragmentManager(), mCustomedData); mViewPager.setAdapter(adapter); adapter.notifyDataSetChanged(); tabs.setViewPager(mViewPager); // setListener(); } @Override protected void onDestroy() { super.onDestroy(); ViewServer.get(this).removeWindow(this); } public void testJsonRequest() { RequestQueue queue = Volley.newRequestQueue(this); Listener<JSONObject> listener = new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Toast.makeText(MainActivity.this, "获取Json数据成功", Toast.LENGTH_SHORT).show(); System.out.println("response.toString = " + response.toString()); } }; ErrorListener errorListener = new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(MainActivity.this, "获取Json数据失败 错误原因 = " + error.getMessage(), Toast.LENGTH_SHORT).show(); } }; queue.add(new JsonObjectRequest(NewsApplication.SPECIFIC_WEATHER_URL, null, listener, errorListener)); } /** * TODO setListener method Tag * */ public void setListener() { this.mViewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { Object obj = adapter.instantiateItem(mViewPager, arg0); System.out.println("obj = " + obj); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: this.mSlidingMenu.showMenu(); break; case R.id.action_contact: QuickContactFragment dialog = new QuickContactFragment(); dialog.show(getSupportFragmentManager(), "QuickContactFragment"); break; case R.id.action_standard: this.mViewPager.setTransitionEffect(TransitionEffect.Standard); break; case R.id.action_tablet: this.mViewPager.setTransitionEffect(TransitionEffect.Tablet); break; case R.id.action_cube_in: this.mViewPager.setTransitionEffect(TransitionEffect.CubeIn); break; case R.id.action_cube_out: this.mViewPager.setTransitionEffect(TransitionEffect.CubeOut); break; case R.id.action_flip_horizontal: this.mViewPager.setTransitionEffect(TransitionEffect.FlipHorizontal); break; case R.id.action_flip_vertical: this.mViewPager.setTransitionEffect(TransitionEffect.FlipVertical); break; case R.id.action_stack: this.mViewPager.setTransitionEffect(TransitionEffect.Stack); break; case R.id.action_zoom_in: this.mViewPager.setTransitionEffect(TransitionEffect.ZoomIn); break; case R.id.action_zoom_out: this.mViewPager.setTransitionEffect(TransitionEffect.ZoomOut); break; case R.id.action_rotate_up: this.mViewPager.setTransitionEffect(TransitionEffect.RotateUp); break; case R.id.action_rotate_down: this.mViewPager.setTransitionEffect(TransitionEffect.RotateDown); break; case R.id.action_accordion: this.mViewPager.setTransitionEffect(TransitionEffect.Accordion); break; } return true; } private void changeColor(int newColor) { tabs.setIndicatorColor(newColor); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { Drawable colorDrawable = new ColorDrawable(newColor); Drawable bottomDrawable = getResources().getDrawable(R.drawable.actionbar_bottom); LayerDrawable ld = new LayerDrawable(new Drawable[] { colorDrawable, bottomDrawable }); if (oldBackground == null) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { ld.setCallback(drawableCallback); } else { getActionBar().setBackgroundDrawable(ld); } } else { TransitionDrawable td = new TransitionDrawable(new Drawable[] { oldBackground, ld }); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) { td.setCallback(drawableCallback); } else { getActionBar().setBackgroundDrawable(td); } td.startTransition(200); } oldBackground = ld; getActionBar().setDisplayShowTitleEnabled(false); getActionBar().setDisplayShowTitleEnabled(true); } currentColor = newColor; } public void onColorClicked(View v) { int color = Color.parseColor(v.getTag().toString()); changeColor(color); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("currentColor", currentColor); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); currentColor = savedInstanceState.getInt("currentColor"); changeColor(currentColor); } private Drawable.Callback drawableCallback = new Drawable.Callback() { @Override public void invalidateDrawable(Drawable who) { getActionBar().setBackgroundDrawable(who); } @Override public void scheduleDrawable(Drawable who, Runnable what, long when) { handler.postAtTime(what, when); } @Override public void unscheduleDrawable(Drawable who, Runnable what) { handler.removeCallbacks(what); } }; public class MyPagerAdapter extends FragmentPagerAdapter { private LinkedList<NewsCategory> data; public MyPagerAdapter(FragmentManager fm, LinkedList<NewsCategory> data) { super(fm); this.data = data; } @Override public CharSequence getPageTitle(int position) { return null == data ? "" : data.get(position).getNewsCategoryName(); } @Override public int getCount() { return null == data ? 0 : data.size(); } @Override public int getItemPosition(Object object) { return PagerAdapter.POSITION_NONE; } public Fragment getItem(int position) { Fragment fragment = MainFragment.newInstance(null == data ? null : data.get(position)); mViewPager.setObjectForPosition(fragment, position); return fragment; } } /** * TODO customSlidingMenu * */ private void customSlidingMenu() { this.mSlidingMenu = this.getSlidingMenu(); setSlidingActionBarEnabled(true); mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); mSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT); // mSlidingMenu.setBehindOffset((int)(50*getResources().getDisplayMetrics().density)); mSlidingMenu.setBehindWidth(getResources().getDisplayMetrics().widthPixels / 2); setBehindContentView(R.layout.menu_frame); this.mSlidingMenu.setSecondaryMenu(R.layout.menu_second_frame); getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, LeftMenuFragment.newInstance()).commit(); getSupportFragmentManager().beginTransaction().replace(R.id.menu_second_frame, RightMenuFragment.newInstance()).commit(); } public void showContent() { this.mSlidingMenu.showContent(true); } /** * TODO {@link View.OnClickListener} */ public void onClick(View v) { switch (v.getId()) { case R.id.ibtn_subscribe: Intent intent = new Intent(this, SubscribedActivity.class); startActivity(intent); break; case R.id.ibtn_left_top: this.mSlidingMenu.showMenu(true); break; default: super.onClick(v); break; } } public PullToRefreshAttacher getPullToRefreshAttacher() { return mPullToRefreshAttacher; } public void updateLeftTopImgAndTitle(int resId, String title) { this.mIbtnLeftTop.setImageResource(resId); setTVTitle(title); } }