/mgandroid-teamtalk/src/com/mogujie/tt/ui/activity/ImageGridActivity.java
Java | 346 lines | 297 code | 38 blank | 11 comment | 32 complexity | ea1eaba43a918bfba4e5edf78d3c4a29 MD5 | raw file
- package com.mogujie.tt.ui.activity;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import android.app.Activity;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Color;
- import android.graphics.drawable.ColorDrawable;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.View.OnTouchListener;
- import android.widget.AbsListView;
- import android.widget.AbsListView.OnScrollListener;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.mogujie.tt.R;
- import com.mogujie.tt.adapter.album.ImageGridAdapter;
- import com.mogujie.tt.adapter.album.ImageGridAdapter.TextCallback;
- import com.mogujie.tt.adapter.album.ImageItem;
- import com.mogujie.tt.cache.biz.CacheHub;
- import com.mogujie.tt.config.SysConstant;
- import com.mogujie.tt.entity.MessageInfo;
- import com.mogujie.tt.imlib.service.IMService;
- import com.mogujie.tt.imlib.utils.IMUIHelper;
- import com.mogujie.tt.log.Logger;
- import com.mogujie.tt.ui.utils.IMServiceHelper;
- import com.mogujie.tt.ui.utils.IMServiceHelper.OnIMServiceListner;
- /**
- * @Description 相册图片列表
- * @author Nana
- * @date 2014-5-9
- */
- public class ImageGridActivity extends Activity implements OnTouchListener, OnIMServiceListner {
- private List<ImageItem> dataList = null;
- private GridView gridView = null;
- private TextView title = null;
- private TextView cancel = null;
- private static TextView finish = null;
- private TextView preview = null;
- private String name = null;
- private ImageView leftBtn = null;
- private static Context context = null;
- private static String CHAT_USER_ID = null;
- private static ImageGridAdapter adapter = null;
- private Logger logger = Logger.getLogger(ImageGridActivity.class);
- private IMServiceHelper imServiceHelper = new IMServiceHelper();
-
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 0:
- Toast.makeText(ImageGridActivity.this,
- "最多选择" + SysConstant.MAX_SELECT_IMAGE_COUNT + "张图片",
- 400).show();
- break;
- default:
- break;
- }
- }
- };
- OnScrollListener onScrollListener = new OnScrollListener() {
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- switch (scrollState) {
- case OnScrollListener.SCROLL_STATE_FLING:
- adapter.lock();
- break;
- case OnScrollListener.SCROLL_STATE_IDLE:
- adapter.unlock();
- break;
- case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
- adapter.lock();
- break;
- default:
- break;
- }
- }
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- }
- };
- @SuppressWarnings("unchecked")
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- imServiceHelper.connect(this, null, IMServiceHelper.INTENT_NO_PRIORITY, this);
- setContentView(R.layout.tt_activity_image_grid);
- context = this;
- name = (String) getIntent().getSerializableExtra(
- SysConstant.EXTRA_ALBUM_NAME);
- dataList = (List<ImageItem>) getIntent().getSerializableExtra(
- SysConstant.EXTRA_IMAGE_LIST);
- CHAT_USER_ID = (String) getIntent().getSerializableExtra(
- SysConstant.EXTRA_CHAT_USER_ID);
- initView();
- initAdapter();
- }
- private void initAdapter() {
- adapter = new ImageGridAdapter(ImageGridActivity.this, dataList,
- mHandler);
- adapter.setTextCallback(new TextCallback() {
- public void onListen(int count) {
- setSendText(count);
- }
- });
- gridView.setAdapter(adapter);
- gridView.setOnScrollListener(onScrollListener);
- }
- private void initView() {
- gridView = (GridView) findViewById(R.id.gridview);
- gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
- gridView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- adapter.notifyDataSetChanged();
- }
- });
- title = (TextView) findViewById(R.id.base_fragment_title);
- if (name.length() > 12) {
- name = name.substring(0, 11) + "...";
- }
- title.setText(name);
- leftBtn = (ImageView) findViewById(R.id.back_btn);
- leftBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(ImageGridActivity.this,
- PickPhotoActivity.class);
- startActivity(intent);
- ImageGridActivity.this.finish();
- }
- });
- cancel = (TextView) findViewById(R.id.cancel);
- cancel.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- adapter.setSelectMap(null);
- setResult(RESULT_OK, null);
- ImageGridActivity.this.finish();
- }
- });
- finish = (TextView) findViewById(R.id.finish);
- finish.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- logger.d("pic#click send image btn");
- if (adapter.getSelectMap().size() > 0) {
-
- List<MessageInfo> messageList = new ArrayList<MessageInfo>();
- Iterator<Integer> iter = adapter.getSelectMap().keySet()
- .iterator();
-
- while (iter.hasNext()) {
- int position = iter.next();
- ImageItem imgItem = adapter.getSelectMap()
- .get(position);
- MessageInfo msg = drawMessageInfo(
- ImageGridActivity.this, imgItem);
- messageList.add(msg);
- }
- setSendText(0);
-
- setResult(RESULT_OK, null);
- ImageGridActivity.this.finish();
-
- String Dao = "";//TokenManager.getInstance().getDao();
- IMUIHelper.SessionInfo sessionInfo = CacheHub.getInstance().getSessionInfo();
- if (sessionInfo == null) {
- logger.e("pic#sessionInfo is null");
- return;
- }
- IMService imService = imServiceHelper.getIMService();
- if (imService != null) {
- imService.getMessageManager().sendImages(sessionInfo.getSessionId(), sessionInfo.getSessionType(), messageList);
- }
- } else {
- Toast.makeText(ImageGridActivity.this,
- R.string.need_choose_images, Toast.LENGTH_SHORT)
- .show();
- }
- }
- });
- preview = (TextView) findViewById(R.id.preview);
- preview.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- if (adapter.getSelectMap().size() > 0) {
- Intent intent = new Intent(ImageGridActivity.this,
- PreviewActivity.class);
- startActivityForResult(intent,
- SysConstant.ALBUM_PREVIEW_BACK);
- } else {
- Toast.makeText(ImageGridActivity.this,
- R.string.need_choose_images, Toast.LENGTH_SHORT)
- .show();
- }
- }
- });
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (RESULT_OK != resultCode)
- return;
-
- if (requestCode == SysConstant.ALBUM_PREVIEW_BACK) {
- boolean finishActivity = data.getExtras().getBoolean("finish");
- if (finishActivity) {
- ImageGridActivity.this.finish();
- }
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
- @Override
- protected void onDestroy() {
- setAdapterSelectedMap(null);
- imServiceHelper.disconnect(this);
- super.onStop();
- }
- public static MessageInfo drawMessageInfo(Activity activity, ImageItem item) {
- Logger.getLogger(ImageGridActivity.class).d("chat#pic#create picture messageinfo");
-
- MessageInfo msg = new MessageInfo();
- if (new File(item.getImagePath()).exists()) {
- msg.setSavePath(item.getImagePath());
- } else {
- if (new File(item.getThumbnailPath()).exists()) {
- msg.setSavePath(item.getThumbnailPath());
- } else {
- // 找不到图片路径时使用加载失败的图片展示
- msg.setSavePath(null);
- }
- }
- // 将图片发送至服务器
- msg.setMsgFromUserId(CacheHub.getInstance().getLoginUserId());
- msg.setIsSend(true);
- msg.setMsgCreateTime((int) (System.currentTimeMillis() / 1000));
- msg.setDisplayType(SysConstant.DISPLAY_TYPE_IMAGE);
- msg.setMsgType(SysConstant.MESSAGE_TYPE_TELETEXT);
- msg.setMsgContent("");
- msg.setMsgAttachContent("");
- msg.setTargetId(CHAT_USER_ID);
- msg.setMsgLoadState(SysConstant.MESSAGE_STATE_LOADDING);
- msg.setMsgReadStatus(SysConstant.MESSAGE_ALREADY_READ);
- //int messageSendRequestNo = CacheHub.getInstance().obtainMsgId();
- //msg.setMsgId(messageSendRequestNo);
- CacheHub.getInstance().pushMsg(msg);
- MessageActivity.addItem(msg);
- return msg;
- }
- public static void setSendText(int selNum) {
- if (selNum == 0) {
- finish.setText(context.getResources().getString(R.string.send));
- } else {
- finish.setText(context.getResources().getString(R.string.send)
- + "(" + selNum + ")");
- }
- }
- public static void setAdapterSelectedMap(Map<Integer, ImageItem> map) {
- Iterator<Integer> it = adapter.getSelectMap().keySet().iterator();
- if (map != null) {
- while (it.hasNext()) {
- int key = (Integer) it.next();
- if (map.containsKey(key)) {
- adapter.updateSelectedStatus(key, true);
- } else {
- adapter.updateSelectedStatus(key, false);
- }
- }
- adapter.setSelectMap(map);
- adapter.setSelectTotalNum(map.size());
- } else {
- while (it.hasNext()) {
- int key = (Integer) it.next();
- adapter.updateSelectedStatus(key, false);
- }
- adapter.setSelectMap(null);
- adapter.setSelectTotalNum(0);
- }
- adapter.notifyDataSetChanged();
- }
- public static ImageGridAdapter getAdapter() {
- return adapter;
- }
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- switch (motionEvent.getAction()) {
- case MotionEvent.ACTION_DOWN:
- adapter.unlock();
- break;
- }
- return false;
- }
- @Override
- public void onAction(String action, Intent intent,
- BroadcastReceiver broadcastReceiver) {
- // TODO Auto-generated method stub
-
- }
- @Override
- public void onIMServiceConnected() {
- // TODO Auto-generated method stub
-
- }
- }