package com.andbase.main; import java.util.ArrayList; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.animation.Animation; import android.widget.Button; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.ab.cache.image.AbImageBaseCache; import com.ab.fragment.AbAlertDialogFragment.AbDialogOnClickListener; import com.ab.image.AbImageLoader; import com.ab.model.AbMenuItem; import com.ab.task.AbTask; import com.ab.task.AbTaskItem; import com.ab.task.AbTaskListener; import com.ab.util.AbAnimationUtil; import com.ab.util.AbDialogUtil; import com.ab.util.AbFileUtil; import com.ab.util.AbToastUtil; import com.andbase.R; import com.andbase.demo.activity.DemoMainActivity; import com.andbase.global.MyApplication; import com.andbase.im.activity.ContacterActivity; import com.andbase.im.activity.MessageActivity; import com.andbase.login.AboutActivity; import com.andbase.model.User; public class MainMenuFragment extends Fragment { private MyApplication application; private MainActivity mActivity = null; private ExpandableListView mMenuListView; private ArrayList<String> mGroupName = null; private ArrayList<ArrayList<AbMenuItem>> mChilds = null; private ArrayList<AbMenuItem> mChild1 = null; private ArrayList<AbMenuItem> mChild2 = null; private LeftMenuAdapter mAdapter; private OnChangeViewListener mOnChangeViewListener; private TextView mNameText; private TextView mUserPoint; private ImageView mUserPhoto; private ImageView sunshineView; private AbImageLoader mAbImageLoader = null; private RelativeLayout loginLayout = null; private User mUser = null; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mActivity = (MainActivity) this.getActivity(); application = (MyApplication) mActivity.getApplication(); View view = inflater.inflate(R.layout.main_menu, null); mMenuListView = (ExpandableListView) view.findViewById(R.id.menu_list); mNameText = (TextView) view.findViewById(R.id.user_name); mUserPhoto = (ImageView) view.findViewById(R.id.user_photo); mUserPoint = (TextView) view.findViewById(R.id.user_point); sunshineView = (ImageView) view.findViewById(R.id.sunshineView); loginLayout = (RelativeLayout) view.findViewById(R.id.login_layout); Button cacheClearBtn = (Button) view.findViewById(R.id.cacheClearBtn); cacheClearBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { AbDialogUtil.showProgressDialog(mActivity,0, "正在清空缓存..."); AbTask task = AbTask.newInstance(); // 定义异步执行的对象 final AbTaskItem item = new AbTaskItem(); item.setListener(new AbTaskListener() { @Override public void update() { AbDialogUtil.removeDialog(mActivity); AbToastUtil.showToast(mActivity, "缓存已清空完成"); } @Override public void get() { try { AbFileUtil.clearDownloadFile(); AbImageBaseCache.getInstance().clearBitmap(); } catch (Exception e) { AbToastUtil.showToastInThread(mActivity, e.getMessage()); } }; }); task.execute(item); } }); mGroupName = new ArrayList<String>(); mChild1 = new ArrayList<AbMenuItem>(); mChild2 = new ArrayList<AbMenuItem>(); ArrayList<ArrayList<AbMenuItem>> mChilds = new ArrayList<ArrayList<AbMenuItem>>(); mChilds.add(mChild1); mChilds.add(mChild2); mAdapter = new LeftMenuAdapter(mActivity, mGroupName, mChilds); mMenuListView.setAdapter(mAdapter); for (int i = 0; i < mGroupName.size(); i++) { mMenuListView.expandGroup(i); } mMenuListView.setOnGroupClickListener(new OnGroupClickListener() { public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return true; } }); mMenuListView.setOnChildClickListener(new OnChildClickListener() { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { if (mOnChangeViewListener != null) { mOnChangeViewListener.onChangeView(groupPosition, childPosition); } return true; } }); // 图片的下载 mAbImageLoader = new AbImageLoader(mActivity); initMenu(); AbAnimationUtil.playRotateAnimation(sunshineView, 2000, 5, Animation.RESTART); return view; } public interface OnChangeViewListener { public abstract void onChangeView(int groupPosition, int childPosition); } public void setOnChangeViewListener( OnChangeViewListener onChangeViewListener) { mOnChangeViewListener = onChangeViewListener; } @Override public void onStart() { super.onStart(); } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } public void initMenu() { mGroupName.clear(); mChild1.clear(); mChild2.clear(); mGroupName.add("常用"); mGroupName.add("操作"); AbMenuItem m0 = new AbMenuItem(); m0.setIconId(R.drawable.square); m0.setText("联系人"); mChild1.add(m0); AbMenuItem m1 = new AbMenuItem(); m1.setIconId(R.drawable.square); m1.setText("我的消息"); mChild1.add(m1); AbMenuItem m3 = new AbMenuItem(); m3.setIconId(R.drawable.share); m3.setText("程序案例"); mChild1.add(m3); AbMenuItem m4 = new AbMenuItem(); m4.setIconId(R.drawable.app); m4.setText("应用游戏"); mChild1.add(m4); AbMenuItem m5 = new AbMenuItem(); m5.setIconId(R.drawable.set); m5.setText("支持我"); mChild2.add(m5); AbMenuItem m6 = new AbMenuItem(); m6.setIconId(R.drawable.recommend); m6.setText("推荐给好友"); mChild2.add(m6); mUser = application.mUser; if (application.isLogin) { AbMenuItem m7 = new AbMenuItem(); m7.setIconId(R.drawable.quit); m7.setText("注销"); mChild2.add(m7); } AbMenuItem m8 = new AbMenuItem(); m8.setIconId(R.drawable.about); m8.setText("关于"); mChild2.add(m8); mAdapter.notifyDataSetChanged(); for (int i = 0; i < mGroupName.size(); i++) { mMenuListView.expandGroup(i); } if (!application.isLogin) { setNameText("登录"); setUserPhoto(R.drawable.photo01); setUserPoint("0"); mNameText.setCompoundDrawables(null, null, null, null); loginLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { mActivity.toLogin(mActivity.LOGIN_CODE); } }); } else { setNameText(mUser.getUserName()); downSetPhoto(mUser.getHeadUrl()); if ("MAN".equals(mUser.getSex())) { Drawable d = mActivity.getResources().getDrawable( R.drawable.user_info_male); d.setBounds(0, 0, 26, 26); mNameText.setCompoundDrawables(null, null, d, null); } else if ("WOMAN".equals(mUser.getSex())) { Drawable d = mActivity.getResources().getDrawable( R.drawable.user_info_female); d.setBounds(0, 0, 26, 26); mNameText.setCompoundDrawables(null, null, d, null); } else { mNameText.setCompoundDrawables(null, null, null, null); } setUserPoint(String.valueOf(mUser.getPoint())); loginLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { } }); } final String shareStr = this.getResources().getString( R.string.share_desc); setOnChangeViewListener(new OnChangeViewListener() { @Override public void onChangeView(int groupPosition, int childPosition) { if (groupPosition == 0) { if (childPosition == 0) { // 联系人 if (!application.isLogin) { mActivity.toLogin(mActivity.FRIEND_CODE); } else { Intent intent = new Intent(mActivity, ContacterActivity.class); mActivity.startActivity(intent); } } else if (childPosition == 1) { // 我的消息 Intent intent = new Intent(mActivity, MessageActivity.class); startActivity(intent); } else if (childPosition == 2) { // 程序案例 Intent intent = new Intent(mActivity, DemoMainActivity.class); startActivity(intent); } else if (childPosition == 3) { // 应用游戏 mActivity.showApp(); } } else if (groupPosition == 1) { if (childPosition == 0) { // 选项、赞助作者 mActivity.showApp(); } else if (childPosition == 1) { // 推荐 } else if (childPosition == 2) { if (application.isLogin) { AbDialogUtil.showAlertDialog(mActivity, "注销", "确定要注销该用户吗?", new AbDialogOnClickListener() { @Override public void onPositiveClick() { // 注销 application.clearLoginParams(); initMenu(); mActivity.stopIMService(); } @Override public void onNegativeClick() { // TODO Auto-generated method stub } }); } else { // 关于 Intent intent = new Intent(mActivity, AboutActivity.class); startActivity(intent); } } else if (childPosition == 3) { if (application.isLogin) { // 关于 Intent intent = new Intent(mActivity, AboutActivity.class); startActivity(intent); } else { // 无 } } } } }); } /** * 描述:用户名的设置 * * @param mNameText */ public void setNameText(String mNameText) { this.mNameText.setText(mNameText); } /** * 描述:设置用户阳光 * * @param mPoint */ public void setUserPoint(String mPoint) { this.mUserPoint.setText(mPoint); AbAnimationUtil.playRotateAnimation(sunshineView, 2000, 5, Animation.RESTART); } public void downSetPhoto(String mPhotoUrl) { // 缩放图片的下载 mAbImageLoader.display(mUserPhoto, mPhotoUrl,150,150); } /** * 描述:设置头像 * * @param drawable */ public void setUserPhoto(int resId) { this.mUserPhoto.setImageResource(resId); } }