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);
}
}
}