package com.tencent.hq.qq.ui; import java.io.IOException; import com.tencent.hq.qq.CustomApplcation; import com.tencent.hq.qq.MyMessageReceiver; import com.tencent.hq.qq.R; import com.tencent.hq.qq.ui.fragment.ContactFragment; import com.tencent.hq.qq.ui.fragment.RecentFragment; import com.tencent.hq.qq.ui.fragment.SettingsFragment; import com.tencent.hq.qq.util.FileUtil; import com.tencent.hq.qq.widget.CircleImageView; import com.tencent.hq.qq.widget.HeaderLayout; import com.tencent.hq.qq.widget.residemenu.ResideMenu; import com.tencent.hq.qq.widget.residemenu.ResideMenuItem; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import cn.bmob.im.BmobChat; 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.config.BmobConfig; import cn.bmob.im.db.BmobDB; import cn.bmob.im.inteface.EventListener; /** * * @ClassName: MainActivity * @Description: TODO * @author HuTianQi * @date 2016-10-30 * @github:https://github.com/HuTianQi * @blog:http://blog.csdn.net/htq__ */ public class MainActivity extends ActivityBase implements EventListener,View.OnClickListener{ private Button[] mTabs; private ContactFragment contactFragment; private RecentFragment recentFragment; private SettingsFragment settingFragment; private Fragment[] fragments; private int index; private int currentTabIndex; public ResideMenu resideMenu; private TextView signText; ImageView iv_recent_tips,iv_contact_tips; ResideMenuItem item[]=new ResideMenuItem[4]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initResideMenu(); BmobChat.getInstance(this).startPollService(20); initNewMessageBroadCast(); initTagMessageBroadCast(); initView(); initTab(); } private void initResideMenu() { // attach to current activity; resideMenu = new ResideMenu(this); resideMenu.setUse3D(true); resideMenu.setBackground(R.drawable.left_layout_bg); resideMenu.attachToActivity(this); resideMenu.setScaleValue(0.55f); resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT); resideMenu.scrollViewLeftMenu.findViewById(R.id.mine_avatar).setOnClickListener(avatarListener); resideMenu.scrollViewLeftMenu.findViewById(R.id.mine_sign_relative).setOnClickListener(signOnClickListener); signText=(TextView) resideMenu.scrollViewLeftMenu.findViewById(R.id.sign_content); try { signText.setText(FileUtil.readSignFromFile()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // create menu items; String titles[] = { "我的钱包", "我的收藏", "我的相册", "关于我" }; int icon[] = { R.drawable.qq_setting_qianbao, R.drawable.qq_setting_shoucang, R.drawable.qq_setting_xiangce, R.drawable.mine_avatar }; for (int i = 0; i < titles.length; i++){ item[i]= new ResideMenuItem(this, icon[i], titles[i]); item[i].setOnClickListener(this); resideMenu.addMenuItem(item[i], ResideMenu.DIRECTION_LEFT); // or ResideMenu.DIRECTION_RIGHT } } private OnClickListener avatarListener=new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent =new Intent(MainActivity.this,SetMyInfoActivity.class); intent.putExtra("from", "me"); startActivity(intent); } }; private OnClickListener signOnClickListener=new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent =new Intent(MainActivity.this,EditSignActivity.class); startActivityForResult(intent, 0); } }; private void initView(){ mTabs = new Button[3]; mTabs[0] = (Button) findViewById(R.id.btn_message); mTabs[1] = (Button) findViewById(R.id.btn_contract); mTabs[2] = (Button) findViewById(R.id.btn_set); iv_recent_tips = (ImageView)findViewById(R.id.iv_recent_tips); iv_contact_tips = (ImageView)findViewById(R.id.iv_contact_tips); mTabs[0].setSelected(true); } private void initTab(){ contactFragment = new ContactFragment(); recentFragment = new RecentFragment(); settingFragment = new SettingsFragment(); fragments = new Fragment[] {recentFragment, contactFragment, settingFragment }; getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, recentFragment).commit(); //add(R.id.fragment_container, recentFragment). //add(R.id.fragment_container, contactFragment).hide(contactFragment).show(recentFragment).commit(); } public void onTabSelect(View view) { switch (view.getId()) { case R.id.btn_message: index = 0; break; case R.id.btn_contract: index = 1; break; case R.id.btn_set: index = 2; break; } if (currentTabIndex != index) { FragmentTransaction trx = getSupportFragmentManager().beginTransaction(); trx.replace(R.id.fragment_container, fragments[index]).commit(); /*trx.hide(fragments[currentTabIndex]); if (!fragments[index].isAdded()) { trx.add(R.id.fragment_container, fragments[index]); } trx.show(fragments[index]).commit();*/ } mTabs[currentTabIndex].setSelected(false); mTabs[index].setSelected(true); currentTabIndex = index; } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); 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); } MyMessageReceiver.ehList.add(this); MyMessageReceiver.mNewNum=0; } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); MyMessageReceiver.ehList.remove(this); } @Override public void onMessage(BmobMsg message) { // TODO Auto-generated method stub refreshNewMsg(message); } /** * @Title: refreshNewMsg * @Description: TODO * @param @param message * @return void * @throws */ private void refreshNewMsg(BmobMsg message){ // ������ʾ boolean isAllow = CustomApplcation.getInstance().getSpUtil().isAllowVoice(); if(isAllow){ CustomApplcation.getInstance().getMediaPlayer().start(); } iv_recent_tips.setVisibility(View.VISIBLE); if(message!=null){ BmobChatManager.getInstance(MainActivity.this).saveReceiveMessage(true,message); } if(currentTabIndex==0){ if(recentFragment != null){ recentFragment.refresh(); } } } NewBroadcastReceiver newReceiver; private void initNewMessageBroadCast(){ newReceiver = new NewBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(BmobConfig.BROADCAST_NEW_MESSAGE); intentFilter.setPriority(3); registerReceiver(newReceiver, intentFilter); } private class NewBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { refreshNewMsg(null); abortBroadcast(); } } TagBroadcastReceiver userReceiver; private void initTagMessageBroadCast(){ userReceiver = new TagBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(BmobConfig.BROADCAST_ADD_USER_MESSAGE); intentFilter.setPriority(3); registerReceiver(userReceiver, intentFilter); } /** * */ private class TagBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { BmobInvitation message = (BmobInvitation) intent.getSerializableExtra("invite"); refreshInvite(message); abortBroadcast(); } } @Override public void onNetChange(boolean isNetConnected) { // TODO Auto-generated method stub if(isNetConnected){ ShowToast(R.string.network_tips); } } @Override public void onAddUser(BmobInvitation message) { // TODO Auto-generated method stub refreshInvite(message); } /** * @Title: notifyAddUser * @Description: TODO * @param @param message * @return void * @throws */ private void refreshInvite(BmobInvitation message){ boolean isAllow = CustomApplcation.getInstance().getSpUtil().isAllowVoice(); if(isAllow){ CustomApplcation.getInstance().getMediaPlayer().start(); } iv_contact_tips.setVisibility(View.VISIBLE); if(currentTabIndex==1){ if(contactFragment != null){ contactFragment.refresh(); } }else{ String tickerText = message.getFromname()+"������Ӻ���"; boolean isAllowVibrate = CustomApplcation.getInstance().getSpUtil().isAllowVibrate(); BmobNotifyManager.getInstance(this).showNotify(isAllow,isAllowVibrate,R.drawable.ic_launcher, tickerText, message.getFromname(), tickerText.toString(),NewFriendActivity.class); } } @Override public void onOffline() { // TODO Auto-generated method stub showOfflineDialog(this); } @Override public void onReaded(String conversionId, String msgTime) { // TODO Auto-generated method stub } private static long firstTime; @Override public void onBackPressed() { // TODO Auto-generated method stub if (firstTime + 2000 > System.currentTimeMillis()) { super.onBackPressed(); } else { ShowToast("连续点击两次退出程序"); } firstTime = System.currentTimeMillis(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); try { unregisterReceiver(newReceiver); } catch (Exception e) { } try { unregisterReceiver(userReceiver); } catch (Exception e) { } // BmobChat.getInstance(this).stopPollService(); } @Override public void onClick(View v) { // TODO Auto-generated method stub if (v == item[0]){ new AlertDialog.Builder(MainActivity.this).setTitle("我的资产"). setIcon(R.drawable.mine_avatar).setMessage( "我的资产:$777777777777" +"\n"+ "您目前资产为7千亿美元,获得土豪勋章"+"\n"+"土豪我们做个朋友吧").show(); }else if (v == item[1]){ }else if (v == item[2]){ Intent intent=new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setType("image/*"); startActivity(intent);//ForResult(intent, 3); }else if (v == item[3]){ new AlertDialog.Builder(MainActivity.this).setTitle("关于作者"). setIcon(R.drawable.mine_avatar).setMessage( "name:胡琪 "+"\n"+"博客:http://blog.csdn.net/htq__" +"\n"+ "github:http://github.com/HuTianQi"+"\n"+"欢迎大家关注我的博客,follow我的github账号").show(); } // resideMenu.closeMenu(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { return resideMenu.dispatchTouchEvent(ev); } public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==0&&resultCode==7) { Bundle bundle=data.getExtras(); String str=bundle.getString("sign"); // Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show(); signText.setText(str); } } }