package com.diandi.demo.ui.activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.diandi.demo.CustomApplication;
import com.diandi.demo.R;
import com.diandi.demo.receiver.MyMessageReceiver;
import com.diandi.dragmenu.DragLayout;
import com.diandi.demo.model.User;
import com.diandi.demo.sync.UserHelper;
import com.diandi.demo.ui.fragment.ContactFragment;
import com.diandi.demo.ui.fragment.DiandiFragment;
import com.diandi.demo.ui.fragment.RecentFragment;
import com.diandi.demo.util.OverridePendingUtil;
import com.nineoldandroids.view.ViewHelper;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.umeng.fb.FeedbackAgent;
import cn.bmob.im.BmobChatManager;
import cn.bmob.im.BmobNotifyManager;
import cn.bmob.im.bean.BmobInvitation;
import cn.bmob.im.bean.BmobMsg;
import cn.bmob.im.db.BmobDB;
import cn.bmob.im.inteface.EventListener;
/**
* *******************************************************************************
* ********* Author : klob(kloblic@gmail.com) .
* ********* Date : 2014-11-29 .
* ********* Time : 11:46 .
* ********* Project name : Diandi1.18 .
* ********* Version : 1.0
* ********* Copyright @ 2014, klob, All Rights Reserved
* *******************************************************************************
*/
public class MainActivity extends ActivityBase implements EventListener, View.OnClickListener {
public final static int INFOR_REFREFLASH = 100;
private static DragLayout mDragLayout;
private static long firstTime;
private ImageView iv_recent_tips, iv_contact_tips, iv_diandi_tips;//消息提示
private Button mDiandiBtn, mRecentBtn, mContanctBtn;
private View currentButton;
private LinearLayout mUserLayout;
private LinearLayout mFeedbackLayout;
private LinearLayout mAboutLayout;
private LinearLayout mSettingLayout;
private ImageView mUserIconImg;
private TextView mUserNameText;
private DiandiFragment diandiFragment;
private ContactFragment contactFragment;
private RecentFragment recentFragment;
private int currentTabIndex;
private View.OnClickListener diandiOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
diandiFragment = new DiandiFragment();
ft.replace(R.id.fragment_container, diandiFragment, TAG);
ft.commit();
setButton(view);
currentTabIndex = 0;
}
};
private View.OnClickListener recentOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (recentFragment == null)
recentFragment = new RecentFragment();
ft.replace(R.id.fragment_container, recentFragment, TAG);
ft.commit();
setButton(view);
currentTabIndex = 1;
}
};
private View.OnClickListener contanctOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (contactFragment == null)
contactFragment = new ContactFragment();
ft.replace(R.id.fragment_container, contactFragment, TAG);
ft.commit();
setButton(view);
currentTabIndex = 2;
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
findView();
initView();
}
@Override
void findView() {
setContentView(R.layout.activity_main);
mDragLayout = (DragLayout) findViewById(R.id.main_drag);
mUserLayout = (LinearLayout) findViewById(R.id.activity_main_user_layout);
mFeedbackLayout = (LinearLayout) findViewById(R.id.activity_main_feedback_layout);
mAboutLayout = (LinearLayout) findViewById(R.id.activity_main_about_layout);
mSettingLayout = (LinearLayout) findViewById(R.id.activity_main_setting_layout);
mUserIconImg = (ImageView) findViewById(R.id.activity_main_user_avatar_img);
mUserNameText = (TextView) findViewById(R.id.activity_main_user_name_text);
mDiandiBtn = (Button) findViewById(R.id.btn_diandi);
mRecentBtn = (Button) findViewById(R.id.btn_message);
mContanctBtn = (Button) findViewById(R.id.btn_contract);
iv_diandi_tips = (ImageView) findViewById(R.id.iv_diandi_tips);
iv_recent_tips = (ImageView) findViewById(R.id.iv_recent_tips);
iv_contact_tips = (ImageView) findViewById(R.id.iv_contact_tips);
}
public DragLayout getDragLayout() {
return mDragLayout;
}
@Override
void initView() {
bindEvent();
mDiandiBtn.performClick();
}
@Override
void bindEvent() {
mDragLayout.setDragListener(new DragLayout.DragListener() {
@Override
public void onOpen() {
}
@Override
public void onClose() {
}
@Override
public void onDrag(float percent) {
ViewHelper.setAlpha(diandiFragment.getUserAvatarImg(), 1 - percent);
}
});
mDiandiBtn.setOnClickListener(diandiOnClickListener);
mRecentBtn.setOnClickListener(recentOnClickListener);
mContanctBtn.setOnClickListener(contanctOnClickListener);
mUserLayout.setOnClickListener(this);
mFeedbackLayout.setOnClickListener(this);
mAboutLayout.setOnClickListener(this);
mSettingLayout.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.activity_main_user_layout:
Intent intent = new Intent(mContext, ProfileActivity.class);
intent.putExtra("from", "me");
startActivityForResult(intent, INFOR_REFREFLASH);
OverridePendingUtil.in(MainActivity.this);
break;
case R.id.activity_main_feedback_layout:
FeedbackAgent agent = new FeedbackAgent(MainActivity.this);
agent.startFeedbackActivity();
OverridePendingUtil.in(MainActivity.this);
break;
case R.id.activity_main_about_layout:
startAnimActivity(AboutActivity.class);
break;
case R.id.activity_main_setting_layout:
startAnimActivity(SettingActivity.class);
break;
}
}
private void setButton(View v) {
if (currentButton != null && currentButton.getId() != v.getId()) {
currentButton.setEnabled(true);
currentButton.setSelected(false);
}
v.setEnabled(false);
v.setSelected(true);
currentButton = v;
}
@Override
protected void onResume() {
super.onResume();
User user = UserHelper.getCurrentUser();
if (user != null) {
ImageLoader.getInstance().displayImage(user.getAvatar(), mUserIconImg, new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.default_head_cry)
.showImageForEmptyUri(R.drawable.default_head_cry)
.showImageOnFail(R.drawable.default_head_cry)
.resetViewBeforeLoading(true)
.cacheInMemory(true)
.cacheOnDisc(true)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(90))
.build());
mUserNameText.setText(user.getNick());
}
//小圆点提示
if (BmobDB.create(this).hasUnReadMsg()) {
iv_recent_tips.setVisibility(View.VISIBLE);
} else {
iv_recent_tips.setVisibility(View.GONE);
}
if (BmobDB.create(this).hasNewInvite()) {
iv_contact_tips.setVisibility(View.VISIBLE);
} else {
iv_contact_tips.setVisibility(View.GONE);
}
iv_diandi_tips.setVisibility(View.GONE);
MyMessageReceiver.ehList.add(this);// 监听推送的消息
//清空
MyMessageReceiver.mNewNum = 0;
}
@Override
protected void onPause() {
super.onPause();
MyMessageReceiver.ehList.remove(this);
}
@Override
public void onMessage(BmobMsg message) {
// 声音提示
boolean isAllow = CustomApplication.getInstance().getSpUtil().isAllowVoice();
if (isAllow) {
CustomApplication.getInstance().getMediaPlayer().start();
}
iv_recent_tips.setVisibility(View.VISIBLE);
//保存接收到的消息-并发送已读回执给对方
BmobChatManager.getInstance(this).saveReceiveMessage(true, message);
if (currentTabIndex == 1) {
//当前页面如果为会话页面,刷新此页面
if (recentFragment != null) {
recentFragment.refresh();
}
}
}
@Override
public void onNetChange(boolean isNetConnected) {
// TODO Auto-generated method stub
if (isNetConnected) {
ShowToast(R.string.network_tips);
}
}
@Override
public void onAddUser(BmobInvitation message) {
// 声音提示
boolean isAllow = CustomApplication.getInstance().getSpUtil().isAllowVoice();
if (isAllow) {
CustomApplication.getInstance().getMediaPlayer().start();
}
iv_contact_tips.setVisibility(View.VISIBLE);
if (currentTabIndex == 2) {
if (contactFragment != null) {
contactFragment.refresh();
}
} else {
String tickerText = message.getFromname() + "请求添加好友";
boolean isAllowVibrate = CustomApplication.getInstance().getSpUtil().isAllowVibrate();
BmobNotifyManager.getInstance(this).showNotify(isAllow, isAllowVibrate, R.drawable.icc_launcher, tickerText, message.getFromname(), tickerText, NewFriendActivity.class);
}
}
@Override
public void onOffline() {
showOfflineDialog(this);
}
@Override
public void onReaded(String conversionId, String msgTime) {
// TODO Auto-generated method stub
}
/**
* 连续按两次返回键就退出
*/
@Override
public void onBackPressed() {
if (firstTime + 2000 > System.currentTimeMillis()) {
finish();
} else {
Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
}
firstTime = System.currentTimeMillis();
}
}