package com.zhong.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.LinearLayout; import android.widget.TextView; import com.zhong.adapter.MainFragmentPagerAdapter; import com.zhong.app.MyApplication; import com.zhong.config.MyConfig; import com.zhong.fragment.ContentFragment; import com.zhong.helper.JsonHelper; import com.zhong.helper.MyHttpClientHelper; /** * 实现主界面 百科、新闻等加载 * * @author 仲丛旭 * */ public class MainActivity extends FragmentActivity { private final String TAG = "MainActivity"; /** 导航栏 */ private LinearLayout layout_main_container; /** 存储每一个Fragment的viewPager */ private ViewPager viewPager_main_content; /** 文本导航内容 */ private TextView[] arr_tabspec; /** viewpager适配器的数据源 */ private List<Fragment> list = null; /** 主界面viewPager适配器 */ private MainFragmentPagerAdapter mainFragmentPagerAdapter; /** 五个访问网络数据的url */ private String[] urlStr; /** 全局变量之图片缓存map */ protected Map<String, Bitmap> cacheImageMap; /** * oncreate生命周期的开始 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "==onCreate()"); setContentView(R.layout.activity_main); initData(); initDot(); } private void initData() { cacheImageMap = ((MyApplication) (this.getApplication())) .getCacheImageMap(); Log.i(TAG, "cacheImageMap==" + cacheImageMap); urlStr = new String[6]; urlStr[0] = MyConfig.JSON_LIST_DATA_0; urlStr[1] = MyConfig.JSON_LIST_DATA_1; urlStr[2] = MyConfig.JSON_LIST_DATA_2; urlStr[3] = MyConfig.JSON_LIST_DATA_3; urlStr[4] = MyConfig.JSON_LIST_DATA_4; urlStr[5] = ""; new MyTask(MainActivity.this).execute(urlStr[0], urlStr[1], urlStr[2], urlStr[3], urlStr[4]); } /** * 初始化导航点 */ public void initDot() { /* 导航 */ layout_main_container = (LinearLayout) findViewById(R.id.layout_main_container); arr_tabspec = new TextView[layout_main_container.getChildCount()]; for (int i = 0; i < arr_tabspec.length; i++) { TextView view = (TextView) layout_main_container.getChildAt(i); if (i == 5) { view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { goSearchActivity(); } }); break; } arr_tabspec[i] = view; if (i == 0) { arr_tabspec[i].setEnabled(false); } else { arr_tabspec[i].setEnabled(true); arr_tabspec[i].setBackgroundColor(Color.parseColor("#ebebeb")); } arr_tabspec[i].setTextColor(Color.GRAY); arr_tabspec[i].setTag(i); arr_tabspec[i].setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { viewPager_main_content.setCurrentItem((Integer) v.getTag(), false); } }); } } /** * 初始化viewPager布局 */ private void initLayout(Map<String, List<Map<String, Object>>> result) { Log.i(TAG, "==initLayout()"); /* viewPager */ list = new ArrayList<Fragment>(); for (int i = 0; i < arr_tabspec.length; i++) { Fragment fragment = new ContentFragment(urlStr[i], (List<Map<String, Object>>) result.get(urlStr[i]), cacheImageMap); list.add(fragment); } mainFragmentPagerAdapter = new MainFragmentPagerAdapter( getSupportFragmentManager(), list); viewPager_main_content = (ViewPager) findViewById(R.id.viewPager_main_content); viewPager_main_content.setAdapter(mainFragmentPagerAdapter); viewPager_main_content .setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { Log.i(TAG, "onPageSelected()==arg0-->" + arg0); if (arg0 == 5) { goSearchActivity();// 跳转到搜索页,然后还原显示最后一个有数据的viewPager页 arr_tabspec[4].performClick(); return; } for (int i = 0; i < arr_tabspec.length - 1; i++) { if (i == arg0) { arr_tabspec[i].setEnabled(false); arr_tabspec[i].setTextColor(Color .parseColor("#3d9d01")); arr_tabspec[i] .setBackgroundResource(R.drawable.tabbg); } else { arr_tabspec[i].setEnabled(true); arr_tabspec[i].setTextColor(Color.GRAY); arr_tabspec[i].setBackgroundColor(Color .parseColor("#ebebeb")); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } /** * 跳转到搜索页 */ private void goSearchActivity() { Log.i(TAG, "==跳转"); Intent intent = new Intent(MainActivity.this, FunctionActivity.class); intent.putExtra("titleTagStr", "0");// 0表示查百科 startActivity(intent); } /** * 访问网络得到五页的数据 * * @author 仲丛旭 * */ class MyTask extends AsyncTask<String, Void, Object> { private Context context; private ProgressDialog pDialog; public MyTask(Context context) { this.context = context; pDialog = new ProgressDialog(this.context); pDialog.setTitle("网络访问"); pDialog.setMessage("正在加载..."); } @Override protected void onPreExecute() { super.onPreExecute(); pDialog.show(); } @Override protected Object doInBackground(String... params) { Map<String, List<Map<String, Object>>> map = new HashMap<String, List<Map<String, Object>>>(); for (int i = 0; i < params.length; i++) { String jsonString = MyHttpClientHelper.loadTextFromURL( params[i], "UTF-8");// 网络访问得到数据 List<Map<String, Object>> list = JsonHelper.jsonStringToList( jsonString, new String[] { "title", "source", "nickname", "create_time", "wap_thumb", "id" }, "data"); map.put(params[i], list); } return map; } @Override protected void onPostExecute(Object result) { super.onPostExecute(result); // Log.i(TAG,"result=="+result); initLayout((Map<String, List<Map<String, Object>>>) result); pDialog.dismiss(); } } /** * 提示是否退出对话框 */ protected void dialog() { AlertDialog.Builder builder = new Builder(this); builder.setMessage("是否退出?"); builder.setTitle("操作提示"); builder.setPositiveButton("是", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); System.exit(0); } }); builder.setNegativeButton("否", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } /** * 返回键双击 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); return true; } return true; } // =======================================本来想做广告是否隐藏动画来着,结果失败了没弄懂 // private float lastX = 0; // private float lastY = 0; // /**判断标题是否隐藏了*/ // private boolean mIsTitleHide = false; // // /** // * 按下或移动,控件广告是否显示。 // */ // @Override // public boolean dispatchTouchEvent(MotionEvent event) { // super.dispatchTouchEvent(event); // Log.i(TAG, "==dispatchTouchEvent()"); // // if (mIsAnim || viewPager_main_content.getChildCount() <= 1) // // {//最大的viewPager // // return false; // // } // final int action = event.getAction(); // // float x = event.getX(); // float y = event.getY(); // System.out.println(MotionEvent.ACTION_MOVE); // switch (action) { // case MotionEvent.ACTION_DOWN: // Log.i(TAG, "ACTION_DOWN=="); // lastY = y; // lastX = x; // return false; // case MotionEvent.ACTION_MOVE: // Log.i(TAG, "ACTION_MOVE=="); // float dY = Math.abs(y - lastY); // float dX = Math.abs(x - lastX); // boolean down = y > lastY ? true : false; // lastY = y; // lastX = x; // if (dX < 8 && dY > 8 && !mIsTitleHide && !down) {// 判断是否大于8像素 // //广告布局隐藏 // // Animation anim = AnimationUtils.loadAnimation( // // MainActivity.this, R.anim.push_top_in); // // // anim.setFillAfter(true); // // anim.setAnimationListener(MainActivity.this); // // title.startAnimation(anim);//标题开启动画 // } else if (dX < 8 && dY > 8 && mIsTitleHide && down) { // // Animation anim = AnimationUtils.loadAnimation( // // MainActivity.this, R.anim.push_top_out); // // // anim.setFillAfter(true); // // anim.setAnimationListener(MainActivity.this); // // // title.startAnimation(anim); // } else { // return false; // } // // mIsTitleHide = !mIsTitleHide;//广告栏标记 // // mIsAnim = true; // break; // default: // return false; // } // return false; // } }