大家下午好,我是CJJ,说说昨晚挑灯夜写毕业论文到凌晨三点多,当写到致谢词那块时,我违心的写下:
“
本论文在xxx导师的悉
心指导和亲切关怀下完成的。导师渊博的专业知识、严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严于律己、宽以待人的崇高风范,朴实无法、平易近人的人格魅力对本人影响深远。。。。。。”
其实,我就只见了指导老师一面而已。。。。转回正题,写的这个app,就只剩下
SlideMenuFragment这块还没有任何东西 ,那么我们就填充它把。。。。
android真实项目教程(一)——App应用框架搭建_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166151
android真实项目教程(二)——漫画App初构_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166262
android真实项目教程(三)——首页初点缀_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166630
android真实项目教程(四)——MY APP MY STYLE_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=167676
android真实项目教程(五)——有时三点两点雨_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=168422
android真实项目教程(六)——落叶醉赤壁_by_CJJ http://www.apkbus.com/android-168858-1-1.html
主要加入了两个功能:(1)设置头像,可以从相册选择,也可以相机拍摄;(2)ExpandableListView展开,item标明个功能模块。
效果如下图:
![](http://www.apkbus.com/data/attachment/forum/201405/05/151211t3lseeh33xd3zx5y.png)
主要源码:
复制代码
复制代码
复制代码
复制代码
没多少东西,你看看源码就能知道它怎么实现的了。呵呵。。。如果可以,我们一起加油把。。。。
源码:
v_7.rar (13.38 MB, 下载次数: 30)
cdsn有我上传的完整版: http://download.csdn.net/detail/junjichen/7297495
![](http://www.apkbus.com/static/image/smiley/yangchong/S52.gif)
android真实项目教程(一)——App应用框架搭建_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166151
android真实项目教程(二)——漫画App初构_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166262
android真实项目教程(三)——首页初点缀_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166630
android真实项目教程(四)——MY APP MY STYLE_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=167676
android真实项目教程(五)——有时三点两点雨_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=168422
android真实项目教程(六)——落叶醉赤壁_by_CJJ http://www.apkbus.com/android-168858-1-1.html
主要加入了两个功能:(1)设置头像,可以从相册选择,也可以相机拍摄;(2)ExpandableListView展开,item标明个功能模块。
效果如下图:
![](http://www.apkbus.com/data/attachment/forum/201405/05/151205uugg6paxa7igl0am.png)
![](http://www.apkbus.com/data/attachment/forum/201405/05/151211t3lseeh33xd3zx5y.png)
![](http://www.apkbus.com/data/attachment/forum/201405/05/151220bac8wcb82p0ll8z2.png)
主要源码:
- <font size="4">package com.cjj.shopapp.fragment;
-
-
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.graphics.Bitmap;
- 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.widget.ExpandableListView;
- import android.widget.ImageView;
- import android.widget.TextView;
-
- import com.cjj.shopapp.activity.R;
- import com.cjj.shopapp.adapter.ExpandableListViewSlideMenuAdapter;
- import com.cjj.shopapp.utils.ImageCropUtils;
-
- public class SlideMenuFragment extends Fragment implements OnClickListener {
- private ImageView img_head;
- private TextView tv_title;
- private AlertDialog headDialog;
- private ImageCropUtils cropUtils;
- private static final int OPEN_CAMERA = 0x101;
- private static final int CUT_CAMERA_RESULT = 0x102;
- private static final int CUT_GALLERY_RESULT = 0x103;
- private Bitmap bitmap;
- private ExpandableListView expandableListView;
- private ExpandableListViewSlideMenuAdapter adapter;
- private TextView tv_exit;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.fragment_slide_menu, null);
- return v;
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- adapter = new ExpandableListViewSlideMenuAdapter();
- expandableListView.setAdapter(adapter);
- expandableListView.setGroupIndicator(null);
- int groupCount = expandableListView.getCount();
-
- for (int i = 0; i < groupCount; i++) {
- expandableListView.expandGroup(i);
- }
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
- @Override
- public void onDestroyView() {
- img_head = null;
- tv_title = null;
- headDialog = null;
- cropUtils = null;
- bitmap = null;
- super.onDestroyView();
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- expandableListView = (ExpandableListView) view
- .findViewById(R.id.elv_slide_menu);
- img_head = (ImageView) view.findViewById(R.id.img_head);
- tv_title = (TextView) view.findViewById(R.id.tv_title);
- tv_exit = (TextView) view.findViewById(R.id.tv_exit);
- tv_exit.setOnClickListener(this);
- tv_title.setOnClickListener(this);
- img_head.setOnClickListener(this);
- initAlertUserHeadDialog();
- cropUtils = new ImageCropUtils(getActivity());
- }
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.img_head:
- case R.id.tv_title:
- headDialog.show();
- break;
- case R.id.tv_exit:
- System.exit(0);
- break;
- }
- }
-
-
- /**
- * 显示修改公会头像的对话框
- */
- private String[] photoItems = new String[] { "相册", "拍照" };
-
- private void initAlertUserHeadDialog() {
- headDialog = new AlertDialog.Builder(getActivity()).setTitle("修改头像")
- .setItems(photoItems, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- dialog.dismiss();
-
- switch (which) {
- case 0: // 相册
- cropUtils
- .openGalleryAndCropSmallPhoto(CUT_GALLERY_RESULT);
- break;
-
- case 1: // 拍照
-
- cropUtils.openCamera(OPEN_CAMERA);
- break;
- }
- }
- }).create();
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case OPEN_CAMERA:// 从相机
-
- cropUtils.cropBigPhotoByCamera(CUT_CAMERA_RESULT);
-
- break;
-
- case CUT_CAMERA_RESULT:// 返回记过
-
- bitmap = cropUtils.getBitmapByUri();
- img_head.setImageBitmap(bitmap);
-
- break;
-
- case CUT_GALLERY_RESULT:
-
- if (data != null) {
- bitmap = cropUtils.getBitmapByIntent(data);
- img_head.setImageBitmap(bitmap);
- }
-
- break;
- }
-
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- }</font>
- package com.cjj.shopapp.fragment;
-
-
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.graphics.Bitmap;
- 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.widget.ExpandableListView;
- import android.widget.ImageView;
- import android.widget.TextView;
-
- import com.cjj.shopapp.activity.R;
- import com.cjj.shopapp.adapter.ExpandableListViewSlideMenuAdapter;
- import com.cjj.shopapp.utils.ImageCropUtils;
-
- public class SlideMenuFragment extends Fragment implements OnClickListener {
- private ImageView img_head;
- private TextView tv_title;
- private AlertDialog headDialog;
- private ImageCropUtils cropUtils;
- private static final int OPEN_CAMERA = 0x101;
- private static final int CUT_CAMERA_RESULT = 0x102;
- private static final int CUT_GALLERY_RESULT = 0x103;
- private Bitmap bitmap;
- private ExpandableListView expandableListView;
- private ExpandableListViewSlideMenuAdapter adapter;
- private TextView tv_exit;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.fragment_slide_menu, null);
- return v;
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- adapter = new ExpandableListViewSlideMenuAdapter();
- expandableListView.setAdapter(adapter);
- expandableListView.setGroupIndicator(null);
- int groupCount = expandableListView.getCount();
-
- for (int i = 0; i < groupCount; i++) {
- expandableListView.expandGroup(i);
- }
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
- @Override
- public void onDestroyView() {
- img_head = null;
- tv_title = null;
- headDialog = null;
- cropUtils = null;
- bitmap = null;
- super.onDestroyView();
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- expandableListView = (ExpandableListView) view
- .findViewById(R.id.elv_slide_menu);
- img_head = (ImageView) view.findViewById(R.id.img_head);
- tv_title = (TextView) view.findViewById(R.id.tv_title);
- tv_exit = (TextView) view.findViewById(R.id.tv_exit);
- tv_exit.setOnClickListener(this);
- tv_title.setOnClickListener(this);
- img_head.setOnClickListener(this);
- initAlertUserHeadDialog();
- cropUtils = new ImageCropUtils(getActivity());
- }
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.img_head:
- case R.id.tv_title:
- headDialog.show();
- break;
- case R.id.tv_exit:
- System.exit(0);
- break;
- }
- }
-
-
- /**
- * 显示修改公会头像的对话框
- */
- private String[] photoItems = new String[] { "相册", "拍照" };
-
- private void initAlertUserHeadDialog() {
- headDialog = new AlertDialog.Builder(getActivity()).setTitle("修改头像")
- .setItems(photoItems, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- dialog.dismiss();
-
- switch (which) {
- case 0: // 相册
- cropUtils
- .openGalleryAndCropSmallPhoto(CUT_GALLERY_RESULT);
- break;
-
- case 1: // 拍照
-
- cropUtils.openCamera(OPEN_CAMERA);
- break;
- }
- }
- }).create();
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case OPEN_CAMERA:// 从相机
-
- cropUtils.cropBigPhotoByCamera(CUT_CAMERA_RESULT);
-
- break;
-
- case CUT_CAMERA_RESULT:// 返回记过
-
- bitmap = cropUtils.getBitmapByUri();
- img_head.setImageBitmap(bitmap);
-
- break;
-
- case CUT_GALLERY_RESULT:
-
- if (data != null) {
- bitmap = cropUtils.getBitmapByIntent(data);
- img_head.setImageBitmap(bitmap);
- }
-
- break;
- }
-
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@drawable/navigation_background"
- android:orientation="vertical" >
-
- <include layout="@layout/ab_slide_menu" />
-
- <View
- android:id="@+id/ab_top_line"
- android:layout_width="match_parent"
- android:layout_height="2.0px"
- android:background="@drawable/menu_divid_line" />
-
- <ExpandableListView
- android:id="@+id/elv_slide_menu"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:cacheColorHint="@android:color/transparent"
- android:divider="@android:color/transparent"
- android:fadingEdge="none"
- android:listSelector="@android:color/transparent"
- android:scrollbars="none" />
-
- <View
- android:id="@+id/ab_bottom_line"
- android:layout_width="match_parent"
- android:layout_height="1.0px"
- android:layout_above="@+id/ab_bottom"
- android:background="#ff3d3d3d" />
-
- <include layout="@layout/item_menu_slide" />
-
- </LinearLayout>
- package com.cjj.shopapp.adapter;
-
- import android.content.Context;
- import android.graphics.drawable.Drawable;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.BaseExpandableListAdapter;
- import android.widget.TextView;
- import android.widget.Toast;
-
- import com.cjj.shopapp.activity.MainActivity;
- import com.cjj.shopapp.activity.R;
- import com.cjj.shopapp.fragment.AboutFragment;
- import com.cjj.shopapp.fragment.CategoryFragment;
- import com.cjj.shopapp.fragment.HotFragment;
-
- public class ExpandableListViewSlideMenuAdapter extends
- BaseExpandableListAdapter implements OnClickListener {
- private Context mContext;
- private MainActivity mGroupActivity;
- private static final String[] title = new String[] { "功能", "其他" };
- private static final String[][] msg = new String[][] {
- { "主界面", "分类", "热门", "关于" }, { "分享", "反馈", "更多" } };
-
- private static final int[][] icon = new int[][] {
- { R.drawable.menu_home, R.drawable.slide_allgoods,
- R.drawable.menu_shop_order, R.drawable.menu_enter_order },
- { R.drawable.menu_message, R.drawable.menu_aler_user_info,
- R.drawable.menu_shop_commend, } };
-
- @Override
- public int getGroupCount() {
- return title.length;
- }
-
- @Override
- public int getChildrenCount(int groupPosition) {
- return msg[groupPosition].length;
- }
-
- @Override
- public String getGroup(int groupPosition) {
- // TODO Auto-generated method stub
- return title[groupPosition];
- }
-
- @Override
- public String getChild(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return msg[groupPosition][childPosition];
- }
-
- @Override
- public long getGroupId(int groupPosition) {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public long getChildId(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public boolean hasStableIds() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public View getGroupView(int groupPosition, boolean isExpanded,
- View convertView, ViewGroup parent) {
-
- mContext = parent.getContext();
- mGroupActivity = (MainActivity) mContext;
-
- if (convertView == null) {
- convertView = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.item_elv_slide_menu_group, null);
- mGroupHolder = new GroupHolder();
- mGroupHolder.tv_menuGroup = (TextView) convertView
- .findViewById(R.id.tv_menuGroup);
- mGroupHolder.ab_top_line = convertView
- .findViewById(R.id.ab_top_line);
- convertView.setTag(mGroupHolder);
- } else {
- mGroupHolder = (GroupHolder) convertView.getTag();
- }
-
- String groupName = getGroup(groupPosition);
- mGroupHolder.tv_menuGroup.setText(groupName);
-
- return convertView;
- }
-
- @Override
- public View getChildView(int groupPosition, int childPosition,
- boolean isLastChild, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.item_elv_slide_menu_child, null);
- mChildHolder = new ChildHolder();
- mChildHolder.tv_menuChild = (TextView) convertView
- .findViewById(R.id.tv_menuChild);
- mChildHolder.ab_top_line = convertView
- .findViewById(R.id.ab_top_line);
- convertView.setTag(mChildHolder);
- } else {
- mChildHolder = (ChildHolder) convertView.getTag();
- }
-
- String childName = getChild(groupPosition, childPosition);
-
- mChildHolder.tv_menuChild.setText(childName);
- drawLeftByTextView(mChildHolder.tv_menuChild,
- icon[groupPosition][childPosition]);
- mChildHolder.tv_menuChild.setTag(groupPosition + "," + childPosition);
- mChildHolder.tv_menuChild.setOnClickListener(this);
-
- return convertView;
- }
-
- private void drawLeftByTextView(TextView mTextView, int resource) {
- Drawable mDrawable = mContext.getResources().getDrawable(resource);
- mDrawable.setBounds(0, 0, mDrawable.getIntrinsicWidth(),
- mDrawable.getIntrinsicHeight());
- mTextView.setCompoundDrawables(mDrawable, null, null, null);
- }
-
- @Override
- public boolean isChildSelectable(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return false;
- }
-
- private class GroupHolder {
- private TextView tv_menuGroup;
- private View ab_top_line;
- }
-
- private class ChildHolder {
- private TextView tv_menuChild;
- private View ab_top_line;
- }
-
- private GroupHolder mGroupHolder;
- private ChildHolder mChildHolder;
-
- @Override
- public void onClick(View v) {
-
- String tag = v.getTag().toString();
- String[] strTag = tag.split(",");
- int childPosition = Integer.parseInt(strTag[1].toString());
- int groupPosition = Integer.parseInt(strTag[0].toString());
-
- if (groupPosition == 0) {
- if (childPosition == 0) {
- mGroupActivity.switchNewFragment(mGroupActivity
- .createNewHomeFragment());
- } else if (childPosition == 1) {
- mGroupActivity.switchNewFragment(new CategoryFragment());
- } else if (childPosition == 2) {
- mGroupActivity.switchNewFragment(new HotFragment());
- } else if (childPosition == 3) {
- mGroupActivity.switchNewFragment(new AboutFragment());
- }
- } else {
- if (childPosition == 0) {
- Toast.makeText(mContext, "待开发", 1000).show();
- } else if (childPosition == 1) {
- Toast.makeText(mContext, "待开发", 1000).show();
- } else if (childPosition == 2) {
- Toast.makeText(mContext, "待开发", 1000).show();
- }
- }
-
- }
-
- }
没多少东西,你看看源码就能知道它怎么实现的了。呵呵。。。如果可以,我们一起加油把。。。。
源码:
本帖隐藏的内容
由于文件过大,库包没有传上来:![](http://www.apkbus.com/static/image/filetype/rar.gif)
cdsn有我上传的完整版: http://download.csdn.net/detail/junjichen/7297495