package com.tencent.tws.pluginhost.ui.view;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.tencent.tws.pluginhost.R;
public class CellItem extends RelativeLayout {
private ImageView mNotifyImageView = null;
private ImageView mImageView = null;
private TextView mTextView = null;
private ComponentName mComponentName = new ComponentName();
private int mComponentType = 0;
private boolean mIsFocus = false;
private Drawable mNormalBackground;
private Drawable mFocusBackground;
private int mTextColor_normal;
private int mTextColor_focus;
// 用于显示的索引位置
private int mLocation = 0;
private int mTagIndex = 0;
public ActionBarInfo mActionBarInfo = new ActionBarInfo();
public CellItem(Context context) {
this(context, null);
}
public CellItem(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CellItem(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public ComponentName getComponentName() {
return mComponentName;
}
public int getComponentType() {
return mComponentType;
}
private void init(Context context) {
int id = 0x7b0a0000;
// setGravity(Gravity.CENTER_HORIZONTAL);
// weight 在设置LayoutParams的时候处理
// craete ImageView
mImageView = new ImageView(context);
final float home_bottom_tab_img_width = getResources().getDimension(R.dimen.home_bottom_tab_img_width);
final float home_bottom_tab_img_height = getResources().getDimension(R.dimen.home_bottom_tab_img_height);
LayoutParams ivParams = new LayoutParams((int) home_bottom_tab_img_width, (int) home_bottom_tab_img_height);
// int top = (int) getResources().getDimension(R.dimen.home_bottom_tab_img_margin_top);
// ivParams.topMargin = top;
// ivParams.setMargins(0, top, 0, 0);
ivParams.addRule(RelativeLayout.CENTER_IN_PARENT);
mImageView.setLayoutParams(ivParams);
mImageView.setId(id);
++id;
// tvParams.addRule(RelativeLayout.RIGHT_OF, mImageView.getId());
addView(mImageView, 0);
// create TextView
mTextView = new TextView(context);
LayoutParams tvParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tvParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
tvParams.addRule(RelativeLayout.BELOW, mImageView.getId());
mTextView.setLayoutParams(tvParams);
// mTextView.setTextColor(getResources().getColor(R.color.home_bottom_tab_text_pressed_color));
addView(mTextView, 1);
mTextView.setVisibility(View.GONE);
++id;
}
public void setNormalBackground(Drawable drawable) {
mNormalBackground = drawable;
if (mNormalBackground == null) {
mNormalBackground = getResources().getDrawable(R.drawable.ic_launcher);
}
if (!mIsFocus) {
mImageView.setBackground(mNormalBackground);
}
}
public void setFocusBackground(Drawable drawable) {
mFocusBackground = drawable;
if (mFocusBackground == null) {
mFocusBackground = getResources().getDrawable(R.drawable.ic_launcher);
}
if (mIsFocus) {
mImageView.setBackground(mFocusBackground);
}
}
public void setTextColorNormal(int color) {
mTextColor_normal = color;
if (!mIsFocus) {
mTextView.setTextColor(mTextColor_normal);
}
}
public void setTextColorFocus(int color) {
mTextColor_focus = color;
if (mIsFocus) {
mTextView.setTextColor(mTextColor_focus);
}
}
public void setText(CharSequence text) {
mTextView.setText(text);
}
public void setText(int resid) {
mTextView.setText(resid);
}
public CharSequence getText() {
if (mTextView != null) {
return mTextView.getText();
}
return null;
}
public void setActionClass(String classId, String packageName, int componentType) {
mComponentName.setValue(classId, packageName);
mComponentType = componentType;
}
public void setFocus(boolean focus) {
if (mIsFocus == focus)
return;
mIsFocus = focus;
if (mIsFocus) {
mTextView.setTextColor(mTextColor_focus);
mImageView.setBackground(mFocusBackground);
} else {
mTextView.setTextColor(mTextColor_normal);
mImageView.setBackground(mNormalBackground);
}
}
public void setComponentName(ComponentName componentName) {
mComponentName.setValue(componentName);
}
public void setLocation(int location) {
mLocation = location;
}
public int getLocation() {
return mLocation;
}
public void setTagIndex(int tagIndex) {
mTagIndex = tagIndex;
}
public int getTagIndex() {
return mTagIndex;
}
public class ActionBarInfo {
public ActionBarInfo() {
ab_title = getResources().getString(R.string.app_name);
}
// ActionBar
// 这里就部分语言环境了,直接复制就行
public String ab_title = null;
// ActionBar右侧按钮上触发点击后行为的内容类型,同contentType【当前默认是activity,而且也暂时只有activity】
public int ab_rbtnctype = 2;// 默认是activity
// ActionBar右侧按钮上触发点击后的行为内容
public String ab_rbtncontent = null;
// 显示在ActionBar右侧按钮上的内容类型 1、String文本资源 2、图标资源
public int ab_rbtnrestype = 1;
// 显示在ActionBar右侧按钮上的内容,根据类型进行配置
public String ab_rbtnres_normal = null;
public String ab_rbtnres_focus = null;
@Override
public String toString() {
return "ab_title=" + ab_title + " ab_rbtnctype=" + ab_rbtnctype + " ab_rbtncontent=" + ab_rbtncontent
+ " ab_rbtnrestype=" + ab_rbtnrestype + " ab_rbtnres_normal=" + ab_rbtnres_normal
+ " ab_rbtnres_focus=" + ab_rbtnres_focus;
}
}
public Object getPluginPackageName() {
return mComponentName.getPluginPackageName();
}
public String getClassId() {
return mComponentName.getClassId();
}
// 将fragment的ClassId和插件的包名捆绑在一起,这样有利于避开多插件的命名规范同时也可以优化查找速度
public class ComponentName {
private String mClassId;
// 保存标识用于判断
private String mPluginPackageName = "";
public void setValue(ComponentName componentName) {
this.mClassId = componentName.mClassId;
this.mPluginPackageName = componentName.mPluginPackageName;
}
public void setValue(String classId, String packageName) {
this.mClassId = classId;
this.mPluginPackageName = packageName;
}
public String getClassId() {
return mClassId;
}
public String getPluginPackageName() {
return mPluginPackageName;
}
}
private void setToNotify() {
if (mNotifyImageView != null)
return;
// create ImageView
mNotifyImageView = new ImageView(getContext());
LayoutParams nivParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
nivParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
nivParams.topMargin = 15;
nivParams.addRule(RelativeLayout.START_OF, mImageView.getId());
// nivParams.addRule(RelativeLayout.ALIGN_TOP, mImageView.getId());
mNotifyImageView.setLayoutParams(nivParams);
mNotifyImageView.setBackground(getResources().getDrawable(R.drawable.red_point));
int id = mImageView.getId() + 2;
mNotifyImageView.setId(id);
addView(mNotifyImageView, 2);
}
public void setHighlight(boolean needHighlight) {
if (needHighlight) {
setToNotify();
mNotifyImageView.setVisibility(View.VISIBLE);
} else if (mNotifyImageView != null) {
mNotifyImageView.setVisibility(View.INVISIBLE);
}
}
}