1 package cc.minsnail.activity;
3 import android.app.FragmentManager;
4 import android.app.FragmentTransaction;
5 import android.content.ComponentName;
6 import android.content.Context;
7 import android.content.DialogInterface;
8 import android.content.Intent;
9 import android.content.ServiceConnection;
10 import android.graphics.drawable.BitmapDrawable;
11 import android.os.Bundle;
12 import android.os.Handler;
13 import android.os.IBinder;
14 import android.os.Message;
15 import android.os.RemoteException;
16 import android.support.v7.app.AlertDialog;
17 import android.support.v7.app.AppCompatActivity;
18 import android.support.v7.widget.Toolbar;
19 import android.util.Log;
20 import android.view.Gravity;
21 import android.view.KeyEvent;
22 import android.view.Menu;
23 import android.view.MenuItem;
24 import android.view.View;
25 import android.widget.PopupWindow;
26 import android.widget.TextView;
28 import cc.minsnail.aidl.IServiceAidlInterface;
29 import cc.minsnail.fragment.MessageFragment;
30 import cc.minsnail.fragment.RosterFragment;
31 import cc.minsnail.smackclient.R;
32 import cc.minsnail.tools.SharedHelper;
33 import cc.minsnail.view.ImagePopupWindow;
36 * Created by yg on 2016/9/23.
38 public class MainActivity extends AppCompatActivity {
39 private static final int SHOW_INFO = 1;
40 private static final String TAG = "MainActivity";
41 private String mToUserName;
42 private IServiceAidlInterface mSmackService;
43 private ServiceConn mConn;
44 private RosterFragment mRosterFragment;
45 private MessageFragment mMessageFragment;
46 private TextView mMessage;
47 private TextView mRoster;
48 private Toolbar mToolbar;
49 private TextView mToolbarTitle;
50 private SharedHelper mSharedHelper;
51 private ImagePopupWindow popupWindow;
52 private Handler handler = new Handler(){
54 public void handleMessage(Message msg) {
57 mToolbar.setTitle(mToUserName);
58 mSharedHelper.put("toUserName",mToUserName);
64 public void onCreate(Bundle savedInstanceState) {
65 super.onCreate(savedInstanceState);
66 setContentView(R.layout.activity_main);
67 mToolbar = (Toolbar) findViewById(R.id.toolbar);
68 //toolbar.setLogo(R.mipmap.ic_launcher);
69 mToolbar.setTitle("");
70 setSupportActionBar(mToolbar);
73 mConn = new ServiceConn();
74 Intent intent = new Intent("android.intent.action.SMACK_CLIENT_SERVICE");
75 intent.setPackage("cc.minsnail.www.smackclient");
76 bindService(intent,mConn, Context.BIND_AUTO_CREATE);
78 mSharedHelper = new SharedHelper(MainActivity.this);
79 popupWindow = new ImagePopupWindow(MainActivity.this,mMessage);
81 private void initView(){
82 mToolbarTitle = (TextView) mToolbar.findViewById(R.id.toolbar_title);
83 mMessage = (TextView)findViewById(R.id.message);
84 mRoster = (TextView) findViewById(R.id.roster);
86 private void initEvent(){
87 mMessage.setOnClickListener(listener);
88 mRoster.setOnClickListener(listener);
90 private View.OnClickListener listener = new View.OnClickListener() {
92 public void onClick(View view) {
93 switch (view.getId()){
95 mToolbarTitle.setText("消息");
99 mToolbarTitle.setText("好友");
105 private void showFragment(int item){
106 FragmentManager fragmentManager = getFragmentManager();
107 FragmentTransaction transaction = fragmentManager.beginTransaction();
108 hideAllFragment(transaction);
111 if (mMessageFragment == null){
112 mMessageFragment = new MessageFragment();
113 transaction.add(R.id.main_fragment,mMessageFragment);
115 transaction.show(mMessageFragment);
119 if (mRosterFragment==null){
120 mRosterFragment = new RosterFragment(mSmackService);
121 transaction.add(R.id.main_fragment,mRosterFragment);
123 transaction.show(mRosterFragment);
129 transaction.commit();
131 private void hideAllFragment(FragmentTransaction transaction){
132 if (mRosterFragment!=null) transaction.hide(mRosterFragment);
133 if (mMessageFragment!=null) transaction.hide(mMessageFragment);
138 private void showInfo(){
139 new Thread(new Runnable() {
142 if (mSmackService != null){
144 mToUserName = mSmackService.getAccountAttribute("username");
145 handler.sendEmptyMessage(SHOW_INFO);
146 } catch (RemoteException e) {
154 public boolean onCreateOptionsMenu(Menu menu) {
155 getMenuInflater().inflate(R.menu.menu_main,menu);
156 return super.onCreateOptionsMenu(menu);
160 public boolean onOptionsItemSelected(MenuItem item) {
161 switch (item.getItemId()){
163 Intent intent = new Intent(getApplicationContext(),SearchUserActivity.class);
164 startActivity(intent);
174 return super.onOptionsItemSelected(item);
176 private void loginOut(){
177 AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
178 builder.setTitle(R.string.str_login_out_dialog_title)
179 .setMessage(R.string.str_login_out_dialog_message);
180 builder.setPositiveButton(R.string.str_ok, new DialogInterface.OnClickListener() {
182 public void onClick(DialogInterface dialogInterface, int i) {
187 builder.setNegativeButton(R.string.str_cancel, new DialogInterface.OnClickListener() {
189 public void onClick(DialogInterface dialogInterface, int i) {
194 AlertDialog dialog = builder.create();
197 class ServiceConn implements ServiceConnection {
199 public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
200 Log.d(TAG,"连接服务器成功");
201 mSmackService = IServiceAidlInterface.Stub.asInterface(iBinder);
208 public void onServiceDisconnected(ComponentName componentName) {
210 mSmackService = null;
213 public boolean onKeyDown(int keyCode, KeyEvent event) {
214 if (keyCode == KeyEvent.KEYCODE_BACK){
221 protected void onDestroy() {
222 unbindService(mConn);