package org.succlz123.doubanbooklog.ui.activity; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Color; import android.net.ConnectivityManager; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.view.*; import android.widget.*; import org.succlz123.doubanbooklog.DoubanApplication; import org.succlz123.doubanbooklog.R; import org.succlz123.doubanbooklog.bean.DbAccount; import org.succlz123.doubanbooklog.bean.DbInfo; import org.succlz123.doubanbooklog.dao.DbInfoApi; import org.succlz123.doubanbooklog.dao.GetBmApi; import org.succlz123.doubanbooklog.ui.leftfragment.*; import java.util.ArrayList; public class MyActivity extends FragmentActivity { /** * Called when the activity is first created. */ private Toolbar mToolbar; private DrawerLayout mDrawerLayout; private ListView mDrawerListview; private Button toolbarbtn; private int position; NotesFragment notesFragment = new NotesFragment(); CommentFragment commentFragment = new CommentFragment(); TagFragment tagFragment = new TagFragment(); AboutFragment aboutFragment = new AboutFragment(); MyFragment myFragment = new MyFragment(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // if(this.getApplicationContext()== DoubanApplication.getInstance()){ // Toast.makeText(this,"euqal",Toast.LENGTH_SHORT).show(); // } mToolbar = (Toolbar) findViewById(R.id.toolbar); mToolbar.setTitle("豆瓣BookLog"); mToolbar.setTitleTextColor(Color.parseColor("#FFFFFF")); setActionBar(mToolbar); toolbarbtn = (Button) findViewById(R.id.toolbar_btn); toolbarbtn.setOnClickListener(toolbarBtnListener); mDrawerLayout = (DrawerLayout) findViewById(R.id.darwer_layout); mDrawerLayout.setDrawerListener(mDrawerLayoutDrawerListener);//匿名内部类调用 // mDrawerLayout.setDrawerListener(new DoubanDrawerListener(toolbarbtn));//普通内部类调用 // getSupportFragmentManager().beginTransaction() // .add(R.id.darwer_frame, notesFragment, "1") // .hide(notesFragment).commitAllowingStateLoss(); // getSupportFragmentManager().beginTransaction() // .add(R.id.darwer_frame, commentFragment, "2") // .hide(commentFragment).commitAllowingStateLoss(); // getSupportFragmentManager().beginTransaction() // .add(R.id.darwer_frame, tagFragment, "3") // .hide(tagFragment).commitAllowingStateLoss(); // getSupportFragmentManager().beginTransaction() // .add(R.id.darwer_frame, aboutFragment, "4") // .hide(aboutFragment).commitAllowingStateLoss(); // getSupportFragmentManager().beginTransaction() // .add(R.id.darwer_frame, myFragment, "0") // .show(myFragment).commitAllowingStateLoss(); mDrawerListview = (ListView) findViewById(R.id.list_view); //实例在外面 final ArrayList<Fragment> fragmentList = new ArrayList<Fragment>(); fragmentList.add(myFragment); fragmentList.add(notesFragment); fragmentList.add(commentFragment); fragmentList.add(tagFragment); fragmentList.add(aboutFragment); // FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // for(Fragment fragment:fragments){ // transaction.add(R.id.darwer_frame,fragment,fragment.getClass().getSimpleName()); // transaction.hide(fragment); // } // transaction.show(myFragment); // transaction.commitAllowingStateLoss(); mDrawerListview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { MyActivity.this.position = position; FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); for (int i = 0; i < fragmentList.size(); i++) { Fragment fragment = fragmentList.get(i); if (i == position) { if (getSupportFragmentManager().findFragmentByTag(fragment.getClass().getSimpleName()) == null) { transaction.replace(R.id.darwer_frame, fragment, fragment.getClass().getSimpleName()); } transaction.show(fragment); } else { if (getSupportFragmentManager().findFragmentByTag(fragment.getClass().getSimpleName()) != null) { transaction.hide(fragment); } } } transaction.commitAllowingStateLoss(); // // switch (i) { // case 0: // getSupportFragmentManager().beginTransaction() // .hide(notesFragment) // .hide(commentFragment) // .hide(tagFragment) // .hide(aboutFragment) // .show(myFragment).commitAllowingStateLoss(); // break; // case 1: // getSupportFragmentManager().beginTransaction() // .hide(myFragment) // .hide(commentFragment) // .hide(tagFragment) // .hide(aboutFragment) // .show(notesFragment).commitAllowingStateLoss(); // break; // case 2: // getSupportFragmentManager().beginTransaction() // .hide(notesFragment) // .hide(myFragment) // .hide(tagFragment) // .hide(aboutFragment) // .show(commentFragment).commitAllowingStateLoss(); // break; // case 3: // getSupportFragmentManager().beginTransaction() // .hide(notesFragment) // .hide(commentFragment) // .hide(myFragment) // .hide(aboutFragment) // .show(tagFragment).commitAllowingStateLoss(); // break; // case 4: // getSupportFragmentManager().beginTransaction() // .hide(notesFragment) // .hide(commentFragment) // .hide(tagFragment) // .hide(myFragment) // .show(aboutFragment).commitAllowingStateLoss(); // break; // } mDrawerLayout.closeDrawer(Gravity.LEFT); } }); mDrawerListview.setAdapter(new BaseAdapter() { final int TYPE_INFO = 0; final int TYPE_COMMON = 1; @Override public int getCount() { return 5; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public int getItemViewType(int i) { if (i == 0) { return TYPE_INFO; } return TYPE_COMMON; } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int i, View view, ViewGroup viewGroup) { switch (getItemViewType(i)) { case TYPE_INFO: view = getLayoutInflater().inflate(R.layout.left_darwer_layout_info, viewGroup, false); ImageView imageView = (ImageView) view.findViewById(R.id.list_view_info_img); TextView textView1 = (TextView) view.findViewById(R.id.darwer_user_name); TextView textView2 = (TextView) view.findViewById(R.id.darwer_creat_time); Button button = (Button) view.findViewById(R.id.list_view_info_logout); ConnectivityManager con = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE); boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); boolean internet = con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting(); if (DoubanApplication.getInstance().getAccount() != null) { if (wifi | internet) { new MyInfoAsyncTask(textView1, DoubanApplication.getInstance().getAccount(), textView2, imageView) .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } else { textView1.setText("网络未连接"); Toast.makeText(getApplicationContext(), "网络未连接", Toast.LENGTH_LONG) .show(); } button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } else { textView1.setText("请登录"); } break; case TYPE_COMMON: view = getLayoutInflater().inflate(R.layout.left_darwer_layout_option, viewGroup, false); ImageView img = (ImageView) view.findViewById(R.id.list_view_img); //这个 img是在 上一个定义的 view 里找 不然就去 acitity里找了 TextView textView = (TextView) view.findViewById(R.id.list_view_text); if (i == 1) { img.setImageResource(R.drawable.note); textView.setText("我的笔记"); } else if (i == 2) { img.setImageResource(R.drawable.comment); textView.setText("我的书评"); } else if (i == 3) { img.setImageResource(R.drawable.tag); textView.setText("我的标签"); } else if (i == 4) { img.setImageResource(R.drawable.about); textView.setText("关于"); } break; } return view; } }); //代码模拟点击效果 mDrawerListview.performItemClick(null, 0, 0); } @Override public boolean onCreateOptionsMenu(Menu menu) { this.getMenuInflater().inflate(R.menu.oo, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { return super.onMenuItemSelected(featureId, item); } private View.OnClickListener toolbarBtnListener = new View.OnClickListener() { @Override public void onClick(View view) { if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) { mDrawerLayout.closeDrawer(Gravity.LEFT); toolbarbtn.setBackgroundResource(R.drawable.toolbar); } else { mDrawerLayout.openDrawer(Gravity.LEFT); toolbarbtn.setBackgroundResource(R.drawable.back); } } }; //匿名内部类 private DrawerLayout.DrawerListener mDrawerLayoutDrawerListener = new DrawerLayout.DrawerListener() { @Override public void onDrawerSlide(View view, float v) { } @Override public void onDrawerOpened(View view) { toolbarbtn.setBackgroundResource(R.drawable.back); } @Override public void onDrawerClosed(View view) { toolbarbtn.setBackgroundResource(R.drawable.toolbar); } @Override public void onDrawerStateChanged(int i) { } }; //普通内部类 // private class DoubanDrawerListener implements DrawerLayout.DrawerListener { // private Button toolbarBtn; // // public DoubanDrawerListener(Button toolbarBtn) { // this.toolbarBtn = toolbarBtn; // } // // @Override // public void onDrawerSlide(View drawerView, float slideOffset) { // // } // // @Override // public void onDrawerOpened(View view) { // this.toolbarBtn.setBackgroundResource(R.drawable.back); // } // // @Override // public void onDrawerClosed(View view) { // this.toolbarBtn.setBackgroundResource(R.drawable.toolbar); // } // // @Override // public void onDrawerStateChanged(int newState) { // // } // } @Override public void onBackPressed() { if (this.position != 0) { mDrawerListview.performItemClick(null, 0, 0); return; } super.onBackPressed(); } private class MyInfoAsyncTask extends AsyncTask<Void, DbInfo, DbInfo> { private TextView name; private DbAccount token; private TextView created; private ImageView avatar; private Bitmap bitmap; public MyInfoAsyncTask(TextView name, DbAccount token, TextView created, ImageView avatar) { this.name = name; this.token = token; this.created = created; this.avatar = avatar; } @Override protected DbInfo doInBackground(Void... voids) { //读取数据库资料 //没有的话读取网络,然后写入数据库 DbInfo info = DbInfoApi.getDbInfo(this.token.getAccess_token()); publishProgress(info); String xx = info.getLarge_avatar(); bitmap = GetBmApi.getBitMap(xx); return info; } @Override protected void onProgressUpdate(DbInfo... values) { super.onProgressUpdate(values); if (values[0] != null) { name.setText(values[0].getName()); created.setText(values[0].getCreated()); } } @Override protected void onPostExecute(DbInfo aVoid) { super.onPostExecute(aVoid); avatar.setImageBitmap(bitmap); } } }