Browse Source

修改朋友圈圈选择图片可进行多选(尚未完成)

gongpm 10 years ago
parent
commit
c10d2a642b
23 changed files with 400 additions and 188 deletions
  1. 5 4
      WeiChat/src/main/AndroidManifest.xml
  2. BIN
      WeiChat/src/main/assets/test.jpg
  3. 0 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/PublicMessageAdapter.java
  4. 70 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/SimpleCustomAdapter.java
  5. 0 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  6. 1 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BusinessCircleActivity.java
  7. 15 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/PhoneSelectActivity.java
  8. 6 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java
  9. 0 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/LinksManFragment.java
  10. 0 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/SwitchView.java
  11. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/LocalVideoActivity.java
  12. 4 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SettingActivity.java
  13. 52 44
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  14. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java
  15. 45 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/MultiImagePreviewActivity.java
  16. 0 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/SingleImagePreviewActivity.java
  17. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/CameraUtil.java
  18. 8 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/video/VideoActivity.java
  19. 92 89
      WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/Result.java
  20. BIN
      WeiChat/src/main/res/drawable-xhdpi/search_input.9.png
  21. 12 0
      WeiChat/src/main/res/layout/activity_phone_select.xml
  22. 85 0
      WeiChat/src/main/res/layout/message_header.xml
  23. BIN
      WeiChat/src/main/res/raw/test.jpg

+ 5 - 4
WeiChat/src/main/AndroidManifest.xml

@@ -396,9 +396,10 @@
         <activity android:name=".video.VideoActivity" />
         <activity android:name=".ui.erp.activity.CompanyActivity" />
         <activity android:name=".ui.erp.activity.BaseInfoActivity" />
-        <activity android:name=".ui.erp.activity.ClientActivity"></activity>
-        <activity android:name=".ui.erp.activity.SubscribeActivity"></activity>
-        <activity android:name=".ui.message.SubscriptionActivity"></activity>
+        <activity android:name=".ui.erp.activity.ClientActivity" />
+        <activity android:name=".ui.erp.activity.SubscribeActivity" />
+        <activity android:name=".ui.message.SubscriptionActivity" />
+        <activity android:name=".ui.circle.PhoneSelectActivity"></activity>
     </application>
 
-</manifest>
+</manifest>

BIN
WeiChat/src/main/assets/test.jpg


+ 0 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/PublicMessageAdapter.java

@@ -317,11 +317,8 @@ public class PublicMessageAdapter extends BaseAdapter implements BusinessCircleA
             viewHolder.command_listView = (ListView) convertView.findViewById(R.id.command_listView);
             viewHolder.viewLine = convertView.findViewById(R.id.line);
             viewHolder.praise_rl = (RelativeLayout) convertView.findViewById(R.id.praise_rl);
-
-
             viewHolder.img_praise_top = (ImageView) convertView.findViewById(R.id.img_praise_top);
             viewHolder.img_praise_line = convertView.findViewById(R.id.img_praise_line);
-
             if (innerView != null) {
                 viewHolder.content_fl.addView(innerView);
             }
@@ -330,7 +327,6 @@ public class PublicMessageAdapter extends BaseAdapter implements BusinessCircleA
         } else {
             viewHolder = (ViewHolder) convertView.getTag(R.id.tag_key_list_item_view);
         }
-
         final ViewHolder finalHolder = viewHolder;// 和ViewHolder一样的,只不过用作匿名内部类里面调用需要final
         // set data
         final PublicMessage message = mMessages.get(position);

+ 70 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/SimpleCustomAdapter.java

@@ -0,0 +1,70 @@
+package com.xzjmyk.pm.activity.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+
+import com.baidu.cyberplayer.utils.T;
+
+import java.util.List;
+
+public abstract class SimpleCustomAdapter extends BaseAdapter {
+    private Context context;
+    private List<T> beans;
+    protected View rootView;
+    private T viewHolder;
+
+    public SimpleCustomAdapter(Context context) {
+        this.context = context;
+        beans = getBeans();
+        viewHolder = (T) getViewHolder();
+    }
+
+    protected abstract List<T> getBeans();//
+
+    protected abstract int count();//获取长度
+
+    protected abstract int getTypeView();//获取视图id
+
+    protected abstract Object getViewHolder();
+
+    @Override
+    public int getCount() {
+        return count();
+    }
+
+    @Override
+    public Object getItem(int i) {
+        return beans.get(i);
+    }
+
+    @Override
+    public long getItemId(int i) {
+        return i;
+    }
+
+    @Override
+    public View getView(int i, View view, ViewGroup viewGroup) {
+        if (view == null) {
+            rootView = view;
+            view = LayoutInflater.from(context).inflate(getTypeView(), null);
+
+        } else {
+            viewHolder = (T) view.getTag();
+        }
+        doView(i, viewGroup);
+        return view;
+    }
+
+    protected abstract void doView(int i, ViewGroup viewGroup);
+
+    protected abstract void setViewHolders(Object tag);
+
+    protected View findViewById(int id) {
+        if (rootView == null) return null;
+        else return rootView.findViewById(id);
+    }
+
+}

+ 0 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -169,13 +169,9 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
                 mBusinessCircleFragment.onResult();
             }
         }
-
     }
 
 
-    private void hineColor() {
-
-    }
 
     /**
      * @desc:主页菜单入口
@@ -251,7 +247,6 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         }
         HashMap<String, String> params = new HashMap<String, String>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
-
         final BaseActivity mContext = MainActivity.this;
         StringJsonArrayRequest<CircleMessage> request = new StringJsonArrayRequest<CircleMessage>(
                 config.MSG_LIST, new Response.ErrorListener() {

+ 1 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BusinessCircleActivity.java

@@ -168,9 +168,7 @@ public class BusinessCircleActivity extends BaseActivity implements showCEView {
             @Override
             public void OnResize(int w, int h, int oldw, int oldh) {
                 if (oldh < h) {// 键盘被隐藏
-                    // mCommentReplyCache = null;
-                    // mPMsgBottomView.setHintText("");
-                    // mPMsgBottomView.reset();
+
                 }
             }
         });

+ 15 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/PhoneSelectActivity.java

@@ -0,0 +1,15 @@
+package com.xzjmyk.pm.activity.ui.circle;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import com.xzjmyk.pm.activity.R;
+
+public class PhoneSelectActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_phone_select);
+    }
+}

+ 6 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java

@@ -108,7 +108,10 @@ public class SendShuoshuoActivity extends BaseActivity {
                 int viewType = mAdapter.getItemViewType(position);
 
                 if (viewType == 1) {
-                    showSelectPictureDialog();
+                    showSelectPictureDialog();//第一个
+                    //TODO 选择图片页面
+//                    startActivityForResult(new Intent(SendShuoshuoActivity.this, PhoneSelectActivity.class), 222);
+
                 } else {
                     showPictureActionDialog(position);
                 }
@@ -123,10 +126,9 @@ public class SendShuoshuoActivity extends BaseActivity {
                 }
                 if (mPhotoList.size() <= 0) {// 发文字
                     sendShuoshuo();
-                } else {// 图片+文字
+                } else {//  图片+文字
                     new UploadPhpto().execute();
                 }
-
             }
         });
     }
@@ -197,6 +199,7 @@ public class SendShuoshuoActivity extends BaseActivity {
         } else if (requestCode == REQUEST_CODE_PICK_PHOTO) {// 选择一张图片,然后立即调用裁减
             if (resultCode == Activity.RESULT_OK) {
                 if (data != null && data.getData() != null) {
+                    Log.i("gongpengming", data.getData().getPath());
                     String path = CameraUtil.getImagePathFromUri(this, data.getData());
                     mPhotoList.add(path);
                     mAdapter.notifyDataSetInvalidated();

+ 0 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/LinksManFragment.java

@@ -466,13 +466,7 @@ public class LinksManFragment extends XutilsFragment implements View.OnClickList
                 if (mLoginUserId == null)
                     mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
                 final List<Friend> friends = FriendDao.getInstance().getFriends(mLoginUserId);
-                Log.i("wang", "friends =" + friends);
-                Log.i("wang", "friends mloginuserid=" + mLoginUserId);
-                // friends.clear();
                 getDataByDB(friends);
-                if (friends != null)
-                    Log.i("wang", "friends size()=" + friends.size());
-                Log.i("gongpegmign", friends.size() + "friends.size=");
                 long delayTime = 200 - (startTime - System.currentTimeMillis());// 保证至少200ms的刷新过程
                 if (delayTime < 0) {
                     delayTime = 0;

+ 0 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/SwitchView.java

@@ -213,14 +213,6 @@ public class SwitchView extends View {
 
 
     private void drawRectCir(Canvas canvas, int radius, int leftCenterX, int rightCenterX, int centerY, Paint paint) {
-//        // left circle
-//        canvas.drawCircle(leftCenterX, centerY, radius, paint);
-//        //right circle
-//        canvas.drawCircle(rightCenterX, centerY, radius, paint);
-//        // center Rectangle
-//        if (rightCenterX > leftCenterX) {
-//            canvas.drawRect(leftCenterX, centerY - radius, rightCenterX, centerY + radius, paint);
-//        }
         canvas.drawRoundRect(new RectF(leftCenterX-radius, centerY-radius, rightCenterX+radius, centerY+radius), radius, radius, paint);
     }
 

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/LocalVideoActivity.java

@@ -179,10 +179,12 @@ public class LocalVideoActivity extends ActionBackActivity {
             if (data != null) {
                 //转回来三个数据
                 String filePath = data.getStringExtra(VideoActivity.EXTRA_RESULT_FILE_PATH);
-                long timeLen = data.getLongExtra(VideoActivity.EXTRA_RESULT_TIME_LEN, 0);
+                long timeLen = data.getIntExtra(VideoActivity.EXTRA_RESULT_TIME_LEN, 0);
                 long fizeSize = data.getLongExtra(VideoActivity.EXTRA_RESULT_FILE_SIZE, 0);
                 if (timeLen <= 0) {
                     timeLen = 10 * 1000;// 数据出错,默认给个10s
+                }else{
+                    timeLen *= 1000;
                 }
 
                 if (fizeSize <= 0) {

+ 4 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SettingActivity.java

@@ -6,7 +6,6 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.Environment;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.Button;
@@ -187,10 +186,10 @@ public class SettingActivity extends ActionBackActivity implements View.OnClickL
 
     //分享单张图片
     public void shareSingleImage() {
-        String imagePath = Environment.getExternalStorageDirectory() + "/raw/test.jpg";
-        //由文件得到uri
-//        Uri imageUri =Uri.parse(imagePath);
-        String str = "android.resource://" + getApplicationContext().getPackageName() + "/" + R.raw.test;
+//        String imagePath = Environment.getExternalStorageDirectory() + "/raw/test.jpg";
+//        //由文件得到uri
+////        Uri imageUri =Uri.parse(imagePath);
+//        String str = "android.resource://" + getApplicationContext().getPackageName() + "/" + R.raw.test;
 //        Uri imageUri=  Uri.parse("android.resource://" + getApplicationContext().getPackageName() + "/" + R.raw.test);
 //        Intent shareIntent = new Intent();
 //        shareIntent.setAction(Intent.ACTION_SEND);

+ 52 - 44
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -12,6 +12,7 @@ import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
@@ -154,7 +155,7 @@ public class MessageFragment extends EasyFragment {
     @Override
     public void onResume() {
         super.onResume();
-            if (mNeedUpdate) {
+        if (mNeedUpdate) {
             mNeedUpdate = false;
             loadData();
             Log.i("MessageFragment", "加载流程数据...........................");
@@ -169,6 +170,7 @@ public class MessageFragment extends EasyFragment {
     }
 
     private void initView() {
+        initHeaderView();
         mClearEditText = (ClearEditText) findViewById(R.id.search_edit);
         mClearEditText.addTextChangedListener(new TextWatcher() {
             @Override
@@ -201,9 +203,7 @@ public class MessageFragment extends EasyFragment {
         mPullToRefreshListView = (PullToRefreshSlideListView) findViewById(R.id.pull_refresh_list);
         mPullToRefreshListView.setShowIndicator(false);
         mPullToRefreshListView.setMode(Mode.PULL_FROM_START);
-
         mAdapter = new NearlyMessageAdapter(getActivity());
-
         mPullToRefreshListView.getRefreshableView().setAdapter(mAdapter);
 
         mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<SlideListView>() {
@@ -255,6 +255,13 @@ public class MessageFragment extends EasyFragment {
         });
     }
 
+    private void initHeaderView() {
+        //将头部四个放在这里
+
+
+
+    }
+
     //by gongpm 刷新数据提取方法
     private void refreshUI() {
         upDataFriend();
@@ -277,7 +284,7 @@ public class MessageFragment extends EasyFragment {
         HashMap<String, String> params = new HashMap<String, String>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         Log.i("Arison", "MessageFragment:upDataFriend:279:" + MyApplication.getInstance().mAccessToken);
-        Log.i("Arison","MessageFragment:upDataFriend:280:"+ MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_LIST);
+        Log.i("Arison", "MessageFragment:upDataFriend:280:" + MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_LIST);
         StringJsonArrayRequest<AttentionUser> request = new StringJsonArrayRequest<AttentionUser>(
                 MyApplication.getInstance().getConfig().FRIENDS_ATTENTION_LIST, new ErrorListener() {
             @Override
@@ -324,7 +331,7 @@ public class MessageFragment extends EasyFragment {
 
     /**
      * 请求加载新的筛选条件的数据
-     * <p/>
+     * <p>
      * 是下拉刷新,还是上拉加载
      */
     private void loadData() {
@@ -359,7 +366,7 @@ public class MessageFragment extends EasyFragment {
 
                             }
                         }
-                        Log.i("Arison","MessageFragment:run:360:"+JSON.toJSONString(mFriendList));
+                        Log.i("Arison", "MessageFragment:run:360:" + JSON.toJSONString(mFriendList));
                         mAdapter.notifyDataSetChanged();
                         mPullToRefreshListView.onRefreshComplete();
                     }
@@ -543,7 +550,7 @@ public class MessageFragment extends EasyFragment {
                     avatar_img.setImageResource(R.drawable.qunliao);
                 } else {
                     AvatarHelper.getInstance().displayAvatarPng(friend.getRoomCreateUserId(), avatar_img, false);// 目前在备注名放房间的创建者Id
-                   // avatar_img.setImageResource(R.drawable.qunliao);
+                    // avatar_img.setImageResource(R.drawable.qunliao);
                 }
             }
             nick_name_tv.setText(friend.getRemarkName() != null ? friend.getRemarkName() : friend.getNickName());
@@ -889,46 +896,47 @@ public class MessageFragment extends EasyFragment {
     private void updateNews(Message msg) {
         final String result = msg.getData().getString("result");
         new Handler().postDelayed(new Runnable() {
-           @Override
-           public void run() {
-               int size;
-               int count;
-               NewsEntity news = JSON.parseObject(result, NewsEntity.class);
-               size = 0;
-               if (news != null) {
-                   size = news.getData().size();
-               }
-               count = 0;
-               for (int i = 0; i < size; i++) {
-                   if (!ObjectUtils.isEquals(news.getData().get(i).getSTATUS(), null)) {
-                       if (((int) news.getData().get(i).getSTATUS()) != -1) {
-                           count++;
-                       }
-                   } else {
-                       count++;//数据为空,算是未读
-                   }
-               }
-               if (count != 0) {
-                   Log.i("MessageFragment", "新闻 标注红点" + count);
-                   String owerId = MyApplication.getInstance().mLoginUser.getUserId();
-                   FriendDao.getInstance().markUserMessageRead(owerId, Friend.ID_ERP_NEWS);
-                   FriendDao.getInstance().markUserMessageUnRead(owerId, Friend.ID_ERP_ZHIHUI, count);
-                   FriendDao.getInstance().markUserMessageUnRead(owerId, Friend.ID_ERP_NEWS, count);
-                   updateNewsMsg("收到" + count + "条新闻");
-                   updateZhihuMsg("通知,公告,新闻信息");
-               } else {
-                   updateNewsMsg("暂无未读新闻");
-                   updateZhihuMsg("通知,公告,新闻信息");
-                   String owerId = MyApplication.getInstance().mLoginUser.getUserId();
-                   FriendDao.getInstance().markUserMessageRead(owerId, Friend.ID_ERP_NEWS);
-               }
-               MsgBroadcast.broadcastMsgNumReset(MyApplication.getInstance());//重置,从数据库查询
-               loadData();
-           }
-       }, 50);
+            @Override
+            public void run() {
+                int size;
+                int count;
+                NewsEntity news = JSON.parseObject(result, NewsEntity.class);
+                size = 0;
+                if (news != null) {
+                    size = news.getData().size();
+                }
+                count = 0;
+                for (int i = 0; i < size; i++) {
+                    if (!ObjectUtils.isEquals(news.getData().get(i).getSTATUS(), null)) {
+                        if (((int) news.getData().get(i).getSTATUS()) != -1) {
+                            count++;
+                        }
+                    } else {
+                        count++;//数据为空,算是未读
+                    }
+                }
+                if (count != 0) {
+                    Log.i("MessageFragment", "新闻 标注红点" + count);
+                    String owerId = MyApplication.getInstance().mLoginUser.getUserId();
+                    FriendDao.getInstance().markUserMessageRead(owerId, Friend.ID_ERP_NEWS);
+                    FriendDao.getInstance().markUserMessageUnRead(owerId, Friend.ID_ERP_ZHIHUI, count);
+                    FriendDao.getInstance().markUserMessageUnRead(owerId, Friend.ID_ERP_NEWS, count);
+                    updateNewsMsg("收到" + count + "条新闻");
+                    updateZhihuMsg("通知,公告,新闻信息");
+                } else {
+                    updateNewsMsg("暂无未读新闻");
+                    updateZhihuMsg("通知,公告,新闻信息");
+                    String owerId = MyApplication.getInstance().mLoginUser.getUserId();
+                    FriendDao.getInstance().markUserMessageRead(owerId, Friend.ID_ERP_NEWS);
+                }
+                MsgBroadcast.broadcastMsgNumReset(MyApplication.getInstance());//重置,从数据库查询
+                loadData();
+            }
+        }, 50);
     }
 
     private int processMsgTime;
+
     public void updateProcessMsg(String msg) {
         String ownerId = MyApplication.getInstance().mLoginUser.getUserId();
         ChatMessage chatMessage = new ChatMessage();

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java

@@ -25,7 +25,6 @@ import java.util.ArrayList;
 
 public class SubscriptionActivity extends BaseActivity {
     private static final int TAG_BIG = 1;
-    private static final int TAG_SUB = 2;
     private PullToRefreshListView listView;
     private ArrayList<SubscriptionMessage> SubscriptionMessages;
     private SubscriptionAdapter adapter;
@@ -68,7 +67,7 @@ public class SubscriptionActivity extends BaseActivity {
             SubscriptionMessages.add(message);
         }
         long i = SubscriptionDao.getInstance().addMessage(SubscriptionMessages);
-        Log.i("gongpengming", "i=" + i);
+
     }
 
     private void init2() {

+ 45 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/MultiImagePreviewActivity.java

@@ -1,6 +1,7 @@
 package com.xzjmyk.pm.activity.ui.tool;
 
 import android.content.Intent;
+import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v4.view.PagerAdapter;
@@ -15,6 +16,8 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.nostra13.universalimageloader.core.ImageLoader;
+import com.nostra13.universalimageloader.core.assist.FailReason;
+import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.ActionBackActivity;
@@ -24,6 +27,8 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import uk.co.senab.photoview.PhotoViewAttacher;
+
 /**
  * 图片集的预览
  * 
@@ -35,7 +40,7 @@ public class MultiImagePreviewActivity extends ActionBackActivity {
 	private ArrayList<String> mImages;
 	private int mPosition;
 	private boolean mChangeSelected;
-
+	private PhotoViewAttacher mAttacher;
 	private ViewPager mViewPager;
 	private CheckBox mCheckBox;
 	private TextView mIndexCountTv;
@@ -55,6 +60,7 @@ public class MultiImagePreviewActivity extends ActionBackActivity {
 		}
 		getSupportActionBar().hide();
 		setContentView(R.layout.activity_images_preview);
+		setNotTouchEvent(true);
 		initView();
 	}
 
@@ -117,7 +123,6 @@ public class MultiImagePreviewActivity extends ActionBackActivity {
 			public void onPageScrollStateChanged(int arg0) {
 			}
 		});
-
 	}
 
 	public void updateSelectIndex(final int index) {
@@ -205,7 +210,8 @@ public class MultiImagePreviewActivity extends ActionBackActivity {
 				break;
 			case UNKNOWN:// 如果不知道什么类型,且不为空,就当做是一个本地文件的路径来加载
 				if (!TextUtils.isEmpty(imageUrl)) {
-					ImageLoader.getInstance().displayImage(Uri.fromFile(new File(imageUrl)).toString(), (ImageView) view);
+					ImageLoader.getInstance().displayImage(Uri.fromFile(new File(imageUrl)).toString(), (ImageView) view,mImageLoadingListener);
+//					ImageLoader.getInstance().displayImage(imageUrl, (ImageView) view, mImageLoadingListener);
 				}
 				break;
 			default:
@@ -213,6 +219,8 @@ public class MultiImagePreviewActivity extends ActionBackActivity {
 				break;
 			}
 			container.addView(view);
+
+
 			return view;
 		}
 
@@ -227,5 +235,39 @@ public class MultiImagePreviewActivity extends ActionBackActivity {
 		}
 
 	}
+	private ImageLoadingListener mImageLoadingListener = new ImageLoadingListener() {
+		@Override
+		public void onLoadingStarted(String arg0, View arg1) {
+
+		}
+
+		@Override
+		public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
+
+		}
+
+		@Override
+		public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
+			mAttacher=new PhotoViewAttacher((ImageView) arg1);
+			mAttacher.update();
+
+			mAttacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
+				@Override
+				public void onPhotoTap(View view, float x, float y) {
+					finish();
+					overridePendingTransition(0, R.anim.alpha_scale_out);
+				}
+
+				@Override
+				public void onOutsidePhotoTap() {
 
+				}
+			});
+		}
+
+		@Override
+		public void onLoadingCancelled(String arg0, View arg1) {
+
+		}
+	};
 }

+ 0 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/SingleImagePreviewActivity.java

@@ -83,7 +83,6 @@ public class SingleImagePreviewActivity extends ActionBackActivity {
 			// 其他 drawable asset类型不处理
 			break;
 		}
-		Log.i("wang","end mImageUri:"+mImageUri);
 		if (showProgress) {
 			ImageLoader.getInstance().displayImage(mImageUri, mImageView, mImageLoadingListener);
 		} else {
@@ -103,14 +102,12 @@ public class SingleImagePreviewActivity extends ActionBackActivity {
 
 	@Override
 	public void onBackPressed() {
-		Log.i("gongpengmingIMAGE","onBackPressed");
 		finish();
 		overridePendingTransition(0, R.anim.alpha_scale_out);
 	}
 
 	@Override
 	protected boolean onHomeAsUp() {
-		Log.i("gongpengmingIMAGE","onBackPressed");
 		finish();
 		overridePendingTransition(0, R.anim.alpha_scale_out);
 		return true;

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/CameraUtil.java

@@ -66,7 +66,6 @@ public final class CameraUtil {
 
 	/**
 	 * invoke the system Camera app and capture a image。 you can received the
-	 * capture result in {@link Activity.onActivityResult(int,int,Intent)}。 If
 	 * successed,you can use the outputUri to get the image
 	 * 
 	 * @param activity
@@ -115,7 +114,7 @@ public final class CameraUtil {
 	}
 
 	/**
-	 * 调用系统图库选择照片 使用 {@link getImagePathFromUri}方法从
+	 * 调用系统图库选择照片 使用 {@link }方法从
 	 * onActivityResult的data.getData()中解析获得的Uri
 	 * 
 	 * @param activity

+ 8 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/video/VideoActivity.java

@@ -2,22 +2,23 @@ package com.xzjmyk.pm.activity.video;
 
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
 import android.content.Intent;
 import android.hardware.Camera;
 import android.media.CamcorderProfile;
 import android.media.MediaRecorder;
 import android.os.Bundle;
 import android.os.CountDownTimer;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
 import android.widget.Button;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.util.FileUtil;
 
 import java.io.File;
@@ -27,7 +28,7 @@ import java.io.IOException;
 /**
  * Created by gongpm on 2016/6/8.
  */
-public class VideoActivity extends BaseActivity implements MediaRecorder.OnErrorListener {
+public class VideoActivity extends Activity implements MediaRecorder.OnErrorListener {
     private Camera mCamera;
     private TextView tvTime;
     private Button btn;
@@ -48,8 +49,10 @@ public class VideoActivity extends BaseActivity implements MediaRecorder.OnError
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        this.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
+        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         setContentView(R.layout.activity_video);
-        Log.i("gong", " FileUtil.getRandomVideoFilePath();=" + FileUtil.getRandomVideoFilePath());
         surfaceView = (SurfaceView) findViewById(R.id.lib_surface_view);
         tvTime = (TextView) findViewById(R.id.lib_video_tv_time);
         btn = (Button) findViewById(R.id.btn);
@@ -72,12 +75,11 @@ public class VideoActivity extends BaseActivity implements MediaRecorder.OnError
 
     }
 
-
     private void doTheEnd() {
         //TODO 拍摄成功后最后操作
         Intent intent = new Intent();
         intent.putExtra(EXTRA_RESULT_FILE_PATH, filePath);
-        intent.putExtra(EXTRA_RESULT_TIME_LEN, MAX_NUM - timeLen);
+        intent.putExtra(EXTRA_RESULT_TIME_LEN, (MAX_NUM - timeLen));
         intent.putExtra(EXTRA_RESULT_FILE_SIZE, mVecordFile.length());
         setResult(RESULT_OK, intent);
         finish();

+ 92 - 89
WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/Result.java

@@ -2,95 +2,98 @@ package com.xzjmyk.pm.activity.volley;
 
 import android.content.Context;
 import android.text.TextUtils;
+import android.util.Log;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.xzjmyk.pm.activity.R;
 
 public class Result {
-	/**
-	 * 通用的Http Result Code http 请求返回的结果码 <br/>
-	 * 0表示一般性错误</br> 1-100表示成功</br> 大于100000表示一些详细的错误</br>
-	 */
-	public final static int CODE_ERROE = 0;// 未知的错误 或者系统内部错误
-	public final static int CODE_SUCCESS = 1;// 正确的Http请求返回状态码
-	public final static int CODE_ARGUMENT_ERROR1 = 1010101;// 请求参数验证失败,缺少必填参数或参数错误
-	public final static int CODE_ARGUMENT_ERROR2 = 1010102;// 缺少请求参数:%1$s
-
-	public final static int CODE_INTERNAL_ERROR = 1020101;// 接口内部异常
-	public final static int CODE_NO_TOKEN = 1030101;// 缺少访问令牌
-	public final static int CODE_TOKEN_ERROR = 1030102;// 访问令牌过期或无效
-
-	/* 登陆接口的Http Result Code */
-	public final static int CODE_ACCOUNT_INEXISTENCE = 1040101;// 帐号不存在
-	public final static int CODE_ACCOUNT_ERROE = 1040102;// 帐号或密码错误
-
-	public static final String RESULT_CODE = "resultCode";
-	public static final String RESULT_MSG = "resultMsg";
-	public static final String DATA = "data";
-
-	private int resultCode;
-	private String resultMsg;
-	//private JSONObject jsonObject;//返回响应正文数据
-	private String resultData;//响应正文
-
-	public static boolean defaultParser(Context context, Result result, boolean showToast) {
-		if (result == null) {
-			if (showToast) {
-				Toast.makeText(context, context.getString(R.string.data_exception), Toast.LENGTH_SHORT).show();
-			}
-			return false;
-		}
-		if (result.resultCode == CODE_SUCCESS) {// 成功
-			return true;
-		} else if (result.resultCode == CODE_NO_TOKEN) {// 缺少参数Token
-			//TODO 发出异常登录的广播
-
+    /**
+     * 通用的Http Result Code http 请求返回的结果码 <br/>
+     * 0表示一般性错误</br> 1-100表示成功</br> 大于100000表示一些详细的错误</br>
+     */
+    public final static int CODE_ERROE = 0;// 未知的错误 或者系统内部错误
+    public final static int CODE_SUCCESS = 1;// 正确的Http请求返回状态码
+    public final static int CODE_ARGUMENT_ERROR1 = 1010101;// 请求参数验证失败,缺少必填参数或参数错误
+    public final static int CODE_ARGUMENT_ERROR2 = 1010102;// 缺少请求参数:%1$s
+
+    public final static int CODE_INTERNAL_ERROR = 1020101;// 接口内部异常
+    public final static int CODE_NO_TOKEN = 1030101;// 缺少访问令牌
+    public final static int CODE_TOKEN_ERROR = 1030102;// 访问令牌过期或无效
+
+    /* 登陆接口的Http Result Code */
+    public final static int CODE_ACCOUNT_INEXISTENCE = 1040101;// 帐号不存在
+    public final static int CODE_ACCOUNT_ERROE = 1040102;// 帐号或密码错误
+
+    public static final String RESULT_CODE = "resultCode";
+    public static final String RESULT_MSG = "resultMsg";
+    public static final String DATA = "data";
+
+    private int resultCode;
+    private String resultMsg;
+    //private JSONObject jsonObject;//返回响应正文数据
+    private String resultData;//响应正文
+
+    public static boolean defaultParser(Context context, Result result, boolean showToast) {
+        if (result == null) {
+            if (showToast) {
+                Toast.makeText(context, context.getString(R.string.data_exception), Toast.LENGTH_SHORT).show();
+            }
+            return false;
+        }
+        if (result.resultCode == CODE_SUCCESS) {// 成功
+            return true;
+        } else if (result.resultCode == CODE_NO_TOKEN) {// 缺少参数Token
+            //TODO 发出异常登录的广播
+            Log.i("gongpengming", "发出异常登录的广播1");
 //			LoginHelper.broadcastToken(context);
 //			LoginHelper.broadcastConflict(context);
-			if (showToast)
-				showResultToast(context, result);
-			return false;
-		} else if (result.resultCode == CODE_TOKEN_ERROR) {// Token过期或错误
-			//TODO 发出异常登录的广播
+            if (showToast)
+                showResultToast(context, result);
+            return false;
+        } else if (result.resultCode == CODE_TOKEN_ERROR) {// Token过期或错误
+            //TODO 发出异常登录的广播
+            Log.i("gongpengming", "发出异常登录的广播2");
 //			LoginHelper.broadcastToken(context);
 //			LoginHelper.broadcastConflict(context);
-			if (showToast)
-				showResultToast(context, result);
-			return false;
-		} else {
-			if (showToast){
-				//TODO 返回错误
-				showResultToast(context, result);
-			}
-			return false;
-		}
-	}
-
-	private static void showResultToast(Context context, Result result) {
-		if (TextUtils.isEmpty(result.resultMsg)) {
-			Toast.makeText(context, context.getString(R.string.data_exception), Toast.LENGTH_SHORT).show();
-		} else {
-			Toast.makeText(context, result.resultMsg, Toast.LENGTH_SHORT).show();
-		}
-	}
-
-	public int getResultCode() {
-		return resultCode;
-	}
-
-	public void setResultCode(int resultCode) {
-		this.resultCode = resultCode;
-	}
-
-	public String getResultMsg() {
-		return resultMsg;
-	}
-
-	public void setResultMsg(String resultMsg) {
-		this.resultMsg = resultMsg;
-	}
-	//	public JSONObject getJsonObject() {
+            if (showToast)
+                showResultToast(context, result);
+            return false;
+        } else {
+            if (showToast) {
+                //TODO 返回错误
+                Log.i("gongpengming", "返回错误");
+                showResultToast(context, result);
+            }
+            return false;
+        }
+    }
+
+    private static void showResultToast(Context context, Result result) {
+        if (TextUtils.isEmpty(result.resultMsg)) {
+            Toast.makeText(context, context.getString(R.string.data_exception), Toast.LENGTH_SHORT).show();
+        } else {
+            Toast.makeText(context, result.resultMsg, Toast.LENGTH_SHORT).show();
+        }
+    }
+
+    public int getResultCode() {
+        return resultCode;
+    }
+
+    public void setResultCode(int resultCode) {
+        this.resultCode = resultCode;
+    }
+
+    public String getResultMsg() {
+        return resultMsg;
+    }
+
+    public void setResultMsg(String resultMsg) {
+        this.resultMsg = resultMsg;
+    }
+    //	public JSONObject getJsonObject() {
 //		return jsonObject;
 //	}
 //
@@ -98,17 +101,17 @@ public class Result {
 //		this.jsonObject = jsonObject;
 //	}
 
-	public String getResultData() {
-		return resultData;
-	}
+    public String getResultData() {
+        return resultData;
+    }
 
-	public void setResultData(String resultData) {
-		this.resultData = resultData;
-	}
+    public void setResultData(String resultData) {
+        this.resultData = resultData;
+    }
 
-	@Override
-	public String toString() {
-		return JSON.toJSON(this).toString();
-	}
+    @Override
+    public String toString() {
+        return JSON.toJSON(this).toString();
+    }
 
 }

BIN
WeiChat/src/main/res/drawable-xhdpi/search_input.9.png


+ 12 - 0
WeiChat/src/main/res/layout/activity_phone_select.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.xzjmyk.pm.activity.ui.circle.PhoneSelectActivity">
+
+</RelativeLayout>

+ 85 - 0
WeiChat/src/main/res/layout/message_header.xml

@@ -0,0 +1,85 @@
+<?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:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:descendantFocusability="blocksDescendants"
+        android:minHeight="@dimen/item_height"
+        android:paddingLeft="15dp"
+        android:paddingRight="15dp">
+        <!--android:background="@color/item_color1"-->
+        <FrameLayout
+            android:id="@+id/head_area"
+            android:layout_width="57dp"
+            android:layout_height="64dp"
+            android:layout_centerVertical="true">
+
+            <ImageView
+                android:id="@+id/avatar_img"
+                android:layout_width="@dimen/item_img_height"
+                android:layout_height="@dimen/item_img_width"
+                android:layout_gravity="center_vertical"
+                android:background="@color/gray_light"
+                android:contentDescription="@string/app_name"
+                android:padding="1dp"
+                android:src="@drawable/avatar_normal" />
+
+            <TextView
+                android:id="@+id/num_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="top|right"
+                android:background="@drawable/tab_unread_bg"
+                android:gravity="center"
+                android:textColor="@android:color/white"
+                android:textSize="10.0dip"
+                android:visibility="visible" />
+        </FrameLayout>
+
+        <RelativeLayout
+            android:id="@+id/content"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="3dp"
+            android:layout_toRightOf="@id/head_area"
+            android:gravity="center_vertical">
+
+            <TextView
+                android:id="@+id/nick_name_tv"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:layout_toLeftOf="@+id/time_tv"
+                android:ellipsize="end"
+                android:singleLine="true"
+                android:textColor="@color/text_main"
+                android:textSize="16sp" />
+
+            <TextView
+                android:id="@+id/time_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:ellipsize="end"
+                android:singleLine="true"
+                android:textColor="@color/text_hine"
+                android:textSize="14sp" />
+
+            <TextView
+                android:id="@+id/content_tv"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/nick_name_tv"
+                android:layout_marginTop="8dp"
+                android:ellipsize="end"
+                android:singleLine="true"
+                android:textColor="@color/text_hine"
+                android:textSize="14sp" />
+        </RelativeLayout>
+
+    </RelativeLayout>
+</LinearLayout>

BIN
WeiChat/src/main/res/raw/test.jpg