public void handleMessage(Message msg) { switch (msg.what) { case UPDATE_COPY_LINK: mCopyLinkDialog.dismiss(); break; case UPDATE_RENAME_SHOW: int position = msg.getData().getInt("position"); mRoomData.get(position).setmMeetType2(2); mAdapter.notifyDataSetChanged(); if (mDebug) Log.e(TAG, "UPDATE_RENAME_SHOW"); break; case UPDATE_LISTVIEW_SCROLL: mAdapter.notifyDataSetChanged(); mListView.animate().translationY(-mDy).setDuration(2000); break; case UPDATE_RENAME_END: mAdapter.notifyDataSetChanged(); if (mDy == 0) mListView.smoothScrollToPositionFromTop(0, 0, 1000); else { mListView.animate().translationYBy(mDy).setDuration(10); mListView.smoothScrollToPositionFromTop(0, 0, 500); } break; default: break; } };
/** * getItemHeight * * @param listView * @return */ private int getItemHeight(final ListView listView) { View view = mAdapter.getView(0, null, listView); view.measure(0, 0); int i = (int) ScreenUtils.dip2Dimension(10.0f, this); Log.e(TAG, " i " + i); return view.getMeasuredHeight(); }
/** For EventBus callback. */ public void onEventMainThread(Message msg) { switch (EventType.values()[msg.what]) { case MSG_SIGNOUT_SUCCESS: if (mDebug) Log.e(TAG, "MSG_SIGNOUT_SUCCESS"); finish(); System.exit(0); break; case MSG_SIGNOUT_FAILED: if (mDebug) Log.e(TAG, "MSG_SIGNOUT_FAILED"); break; case MSG_GET_ROOM_LIST_SUCCESS: if (mDebug) Log.e(TAG, "MSG_GET_ROOM_LIST_SUCCESS"); mRoomData.clear(); mRoomData.addAll(TeamMeetingApp.getMyself().getmRoomList()); mAdapter.notifyDataSetChanged(); if (mCreateRoomFlag) { Intent intent = new Intent(MainActivity.this, InvitePeopleActivity.class); startActivity(intent); overridePendingTransition(R.anim.activity_open_enter, R.anim.activity_open_exit); mCreateRoomFlag = false; } break; case MSG_GET_ROOM_LIST_FAILED: if (mDebug) Log.e(TAG, "MSG_GET_ROOM_LIST_FAILED"); break; case MSG_APPLY_ROOM_SUCCESS: if (mDebug) Log.e(TAG, "MSG_APPLY_ROOM_SUCCESS"); mNetWork.getRoomList(mSign, 1 + "", 20 + ""); break; case MSG_APPLY_ROOMT_FAILED: if (mDebug) Log.e(TAG, "MSG_APPLY_ROOMT_FAILED"); break; case MSG_UPDATE_MEET_ROOM_NAME_SUCCESS: if (mDebug) Log.e(TAG, "MSG_UPDATE_MEET_ROOM_NAME_SUCCESS"); break; case MSG_UPDATE_MEET_ROOM_NAME_FAILED: if (mDebug) Log.e(TAG, "MSG_UPDATE_MEET_ROOM_NAME_FAILED"); break; default: break; } }
/** onActivityResult */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); String sign; int position; String meetingId; switch (resultCode) { case ExtraType.RESULT_CODE_ROOM_SETTING_MESSAGE_INVITE: break; case ExtraType.RESULT_CODE_ROOM_SETTING_WEIXIN_INVITE: break; case ExtraType.RESULT_CODE_ROOM_SETTING_COPY_LINK: mCopyLinkDialog = new CopyLinkDialog(this); mCopyLinkDialog.show(); mUIHandler.sendEmptyMessageDelayed(UPDATE_COPY_LINK, 3000); break; case ExtraType.RESULT_CODE_ROOM_SETTING_NOTIFICATION: break; case ExtraType.RESULT_CODE_ROOM_SETTING_RENAME: mReNameFlag = true; sign = TeamMeetingApp.getMyself().getmAuthorization(); position = data.getIntExtra("position", 0); mPosition = position; meetingId = data.getStringExtra("meetingId"); String meetingName = data.getStringExtra("meetingName"); listViewSetScroll(position); Message msg = new Message(); msg.what = UPDATE_RENAME_SHOW; Bundle bundle = new Bundle(); bundle.putInt("position", position); msg.setData(bundle); mUIHandler.sendMessageDelayed(msg, 3000); // mUIHandler.sendEmptyMessageDelayed(UPDATE_RENAME_SHOW, 5500); break; case ExtraType.RESULT_CODE_ROOM_SETTING_DELETE: sign = TeamMeetingApp.getMyself().getmAuthorization(); position = data.getIntExtra("position", 0); meetingId = data.getStringExtra("meetingId"); mNetWork.deleteRoom(sign, meetingId); mRoomData.remove(position); mAdapter.notifyDataSetChanged(); break; default: break; } };
@Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { String roomName = mCreateRoom.getText().toString(); if (roomName.length() == 0 || roomName == null) { roomName = "Untitled room"; } String sign = TeamMeetingApp.getMyself().getmAuthorization(); mNetWork.applyRoom(sign, roomName, "0", "", "123"); mAdapter.notifyDataSetChanged(); mIMM.hideSoftInputFromWindow(mCreateRoom.getWindowToken(), 0); mCreateRoom.setVisibility(View.GONE); mRoomCancel.setVisibility(View.GONE); mCreateRoomFlag = true; return false; }
/** * listViewSetScroll * * @param position */ private void listViewSetScroll(int position) { int itemHeight = getItemHeight(mListView); float temp = mListView.getHeight() / (float) getItemHeight(mListView); int visibleItem = (int) Math.ceil(temp); int maxItemTop = mAdapter.getCount() - visibleItem; if (position <= maxItemTop) { mDy = 0; mListView.smoothScrollToPositionFromTop(position, 0, 2000); } else { int incompleteItemheight = mListView.getHeight() - (visibleItem - 1) * itemHeight; mDy = itemHeight * (position - maxItemTop - 1) + incompleteItemheight; Log.e(TAG, "maxItemTop " + maxItemTop + " incompleteItemheight " + incompleteItemheight); // mListView.smoothScrollToPositionFromTop(maxItemTop, 0, 1000); // mListView.smoothScrollToPosition(maxItemTop-1); mListView.setSelection(mListView.getBottom()); // mListView.animate().translationY(-mDy).setDuration(2000); mUIHandler.sendEmptyMessageDelayed(UPDATE_LISTVIEW_SCROLL, 1500); } }
@Override public void onItemClickListener(View v, int position) { // TODO Auto-generated method stub String sign; String meetingId; String meetingName; if (hideKeyboard()) { return; } Intent intent; switch (v.getId()) { case R.id.fl_front: meetingName = mRoomData.get(position).getmMeetName(); intent = new Intent(mContext, MeetingActivity.class); intent.putExtra("meetingName", meetingName); mContext.startActivity(intent); break; case R.id.btn_delete: sign = TeamMeetingApp.getMyself().getmAuthorization(); meetingId = mRoomData.get(position).getmMeetingId(); mNetWork.deleteRoom(sign, meetingId); mRoomData.remove(position); mAdapter.notifyDataSetChanged(); break; case R.id.imgbtn_more_setting: intent = new Intent(mContext, RoomSettingActivity.class); meetingName = mRoomData.get(position).getmMeetName(); meetingId = mRoomData.get(position).getmMeetingId(); intent.putExtra("meetingName", meetingName); intent.putExtra("meetingId", meetingId); intent.putExtra("position", position); startActivityForResult(intent, ExtraType.REQUEST_CODE_ROOM_SETTING); ((Activity) mContext) .overridePendingTransition(R.anim.activity_open_enter, R.anim.activity_open_exit); break; case R.id.et_rename: EditText reName = (EditText) v.findViewById(R.id.et_rename); String newName = reName.getText().toString(); String oldName = mRoomData.get(position).getmMeetName(); if (!newName.equals(oldName)) { sign = TeamMeetingApp.getMyself().getmAuthorization(); meetingId = mRoomData.get(position).getmMeetingId(); mNetWork.updateMeetRoomName(sign, meetingId, newName); mRoomData.get(position).setmMeetName(newName); } mRoomData.get(position).setmMeetType2(1); mIMM.hideSoftInputFromWindow(reName.getWindowToken(), 0); mUIHandler.sendEmptyMessageDelayed(UPDATE_RENAME_END, 500); mReNameFlag = false; break; default: break; } }