package com.netease.nim.uikit.session.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.netease.nim.uikit.R;
import com.netease.nim.uikit.common.activity.UI;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.netease.nim.uikit.session.SessionCustomization;
import com.netease.nim.uikit.session.constant.Extras;
import com.netease.nim.uikit.session.fragment.MessageFragment;
import java.util.List;
/**
* Created by zhoujianghua on 2015/9/10.
*/
public abstract class BaseMessageActivity extends UI {
protected String sessionId;
private SessionCustomization customization;
private MessageFragment messageFragment;
protected abstract MessageFragment fragment();
protected abstract int getContentViewId();
protected abstract void initToolBar();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentViewId());
initToolBar();
parseIntent();
messageFragment = (MessageFragment) switchContent(fragment());
}
@Override
public void onBackPressed() {
if (messageFragment == null || !messageFragment.onBackPressed()) {
super.onBackPressed();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (messageFragment != null) {
messageFragment.onActivityResult(requestCode, resultCode, data);
}
if (customization != null) {
customization.onActivityResult(this, requestCode, resultCode, data);
}
}
private void parseIntent() {
sessionId = getIntent().getStringExtra(Extras.EXTRA_ACCOUNT);
customization = (SessionCustomization) getIntent().getSerializableExtra(Extras.EXTRA_CUSTOMIZATION);
if (customization != null) {
addRightCustomViewOnActionBar(this, customization.buttons);
}
}
// 添加action bar的右侧按钮及响应事件
private void addRightCustomViewOnActionBar(UI activity, List<SessionCustomization.OptionsButton> buttons) {
if (buttons == null || buttons.size() == 0) {
return;
}
Toolbar toolbar = getToolBar();
if (toolbar == null) {
return;
}
LinearLayout view = (LinearLayout) LayoutInflater.from(activity).inflate(R.layout.nim_action_bar_custom_view, null);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
for (final SessionCustomization.OptionsButton button : buttons) {
ImageView imageView = new ImageView(activity);
imageView.setImageResource(button.iconId);
imageView.setBackgroundResource(R.drawable.nim_nim_action_bar_button_selector);
imageView.setPadding(ScreenUtil.dip2px(10), 0, ScreenUtil.dip2px(10), 0);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button.onClick(BaseMessageActivity.this, v, sessionId);
}
});
view.addView(imageView, params);
}
toolbar.addView(view, new Toolbar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.RIGHT | Gravity.CENTER));
}
}