package com.mm.android.deviceaddmodule.mobilecommon.widget;
|
|
import android.annotation.SuppressLint;
|
import android.content.Context;
|
import android.graphics.Bitmap;
|
import android.support.annotation.DrawableRes;
|
import android.text.TextUtils;
|
import android.util.AttributeSet;
|
import android.util.TypedValue;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.ProgressBar;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
|
import com.mm.android.deviceaddmodule.R;
|
import com.mm.android.deviceaddmodule.mobilecommon.utils.UIUtils;
|
import com.mm.android.deviceaddmodule.mobilecommon.widget.linechart.utils.Utils;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.assist.FailReason;
|
import com.nostra13.universalimageloader.core.decode.FileImageDecoder;
|
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
|
|
public class CommonItem extends RelativeLayout {
|
private View mTopLine;
|
private View mBottomLine;
|
private TextView mNameTv;
|
private TextView mSubTv;
|
private TextView mTitleTv;
|
private ImageView mImageView;
|
private ProgressBar mLoadingPb;
|
private TextView mSwitchTv;
|
|
private OnSwitchClickListener mListener;
|
|
public CommonItem(Context context) {
|
this(context, null);
|
}
|
|
public CommonItem(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
LayoutInflater.from(context).inflate(R.layout.widget_common_itme, this);
|
initView();
|
setListeners();
|
}
|
|
public TextView getTittle() {
|
return mTitleTv;
|
}
|
|
private void initView() {
|
mTopLine = findViewById(R.id.top_line);
|
mBottomLine = findViewById(R.id.bottom_line);
|
mNameTv = (TextView) findViewById(R.id.name_tv);
|
mSubTv = (TextView) findViewById(R.id.sub_tv);
|
mTitleTv = (TextView) findViewById(R.id.title_tv);
|
mImageView = (ImageView) findViewById(R.id.img_iv);
|
mLoadingPb = (ProgressBar) findViewById(R.id.loading_pb);
|
mSwitchTv = (TextView) findViewById(R.id.switch_tv);
|
}
|
|
private void setListeners() {
|
mSwitchTv.setOnClickListener(new OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (mListener != null) {
|
mListener.onCommonSwitchClick(CommonItem.this);
|
}
|
}
|
});
|
}
|
|
public void setOnSwitchClickListener(OnSwitchClickListener listener) {
|
mListener = listener;
|
}
|
|
|
public interface OnSwitchClickListener {
|
void onCommonSwitchClick(View view);
|
}
|
|
|
/**
|
* 设置标题
|
*
|
* @param resId
|
*/
|
public void setTitle(int resId) {
|
if (mTitleTv == null || resId <= 0) {
|
return;
|
}
|
mTitleTv.setText(resId);
|
}
|
|
/**
|
* 目前仅我的页面使用,增加了左侧的drawable不显示下划线l
|
*
|
* @param drawableLeft
|
*/
|
@SuppressLint("ResourceType")
|
public void setCompoundDrawableLeft(@DrawableRes int drawableLeft) {
|
if (mTitleTv == null) {
|
return;
|
}
|
mBottomLine.setVisibility(View.GONE);
|
if (drawableLeft <= 0) {
|
mTitleTv.setCompoundDrawablePadding(0);
|
mTitleTv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
} else {
|
mTitleTv.setCompoundDrawablePadding((int) Utils.dp2px(13));
|
mTitleTv.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, 0, 0, 0);
|
}
|
}
|
|
/**
|
* 设置标题
|
*
|
* @param title
|
*/
|
public void setTitle(String title) {
|
if (mTitleTv == null || title == null) {
|
return;
|
}
|
mTitleTv.setText(title);
|
}
|
|
/**
|
* 设置名称
|
*
|
* @param resId
|
*/
|
public void setName(int resId) {
|
if (mNameTv == null || resId <= 0) {
|
return;
|
}
|
mNameTv.setText(resId);
|
setNameVisible(true);
|
setImageVisible(false);
|
setLoadingVisible(false);
|
setSwitchVisible(false);
|
}
|
|
/**
|
* 设置名称
|
*
|
* @param name
|
*/
|
public void setName(String name) {
|
if (mNameTv == null || name == null) {
|
return;
|
}
|
mNameTv.setText(name);
|
setNameVisible(true);
|
setImageVisible(false);
|
setLoadingVisible(false);
|
setSwitchVisible(false);
|
}
|
|
/**
|
* 设置名称
|
*/
|
public String getName() {
|
if (mNameTv == null) {
|
return "";
|
}
|
return mNameTv.getText().toString();
|
}
|
|
/**
|
* 设置箭头显示
|
*
|
* @param visible
|
*/
|
public void setSubVisible(boolean visible) {
|
if (mSubTv == null) {
|
return;
|
}
|
if (visible) {
|
mSubTv.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.device_manager_icon_nextarrow, 0);
|
} else {
|
mSubTv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
}
|
}
|
|
/**
|
* 设置进度条显示
|
*
|
* @param visible
|
*/
|
public void setLoadingVisible(boolean visible) {
|
if (mLoadingPb == null) {
|
return;
|
}
|
mLoadingPb.setVisibility(visible ? View.VISIBLE : View.GONE);
|
if (visible) {
|
setNameVisible(false);
|
setSwitchVisible(false);
|
setImageVisible(false);
|
}
|
}
|
|
private void setNameVisible(boolean visible) {
|
if (mNameTv == null) {
|
return;
|
}
|
mNameTv.setVisibility(visible ? View.VISIBLE : View.GONE);
|
}
|
|
public void setSwitchVisible(boolean visible) {
|
if (mSwitchTv == null) {
|
return;
|
}
|
mSwitchTv.setVisibility(visible ? View.VISIBLE : View.GONE);
|
}
|
|
private void setImageVisible(boolean visible) {
|
if (mImageView == null) {
|
return;
|
}
|
mImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
|
}
|
|
/**
|
* 设置顶部分割线显示
|
*
|
* @param visible
|
*/
|
public void setTopLineVisible(boolean visible) {
|
if (mTopLine == null) {
|
return;
|
}
|
mTopLine.setVisibility(visible ? View.VISIBLE : View.GONE);
|
}
|
|
/**
|
* 设置底部分割线显示
|
*
|
* @param visible
|
*/
|
public void setBottomLineVisible(boolean visible) {
|
if (mBottomLine == null) {
|
return;
|
}
|
mBottomLine.setVisibility(visible ? View.VISIBLE : View.GONE);
|
}
|
|
public void setBottomLineLeftMargin(int dp) {
|
if (mBottomLine == null) {
|
return;
|
}
|
|
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, mBottomLine.getContext().getResources().getDisplayMetrics());
|
setMargins(mBottomLine, px, 0, 0, 0);
|
}
|
|
public void setNameRightMargin(int dp){
|
if (mNameTv == null) {
|
return;
|
}
|
|
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, mNameTv.getContext().getResources().getDisplayMetrics());
|
setMargins(mNameTv, 0, 0, px, 0);
|
}
|
|
|
/**
|
* 设置无权限显示
|
*/
|
public void setItemNoAuthority() {
|
setName(R.string.common_no_authority);
|
setItemEnable(false);
|
setTitleEnable(true);
|
}
|
|
public void setTitleEnable(boolean enable) {
|
if (mTitleTv == null) {
|
return;
|
}
|
mTitleTv.setEnabled(enable);
|
}
|
|
/**
|
* 设置置灰显示
|
*/
|
public void setItemEnable(boolean enable) {
|
// setTitleEnable(enable);
|
// setNameEnable(enable);
|
setDevManagerItemEnable(enable, this, mSubTv);
|
// setSwitchEnable(enable);
|
// setSubVisible(enable);
|
setClickable(enable);
|
}
|
|
public void setIteEnableWithoutClickEnable(boolean enable) {
|
setDevManagerItemEnable(enable, this, null);
|
}
|
|
private void setDevManagerItemEnable(boolean enabled, ViewGroup viewGroup, TextView tv) {
|
UIUtils.setEnabledSub(enabled, viewGroup);
|
|
if (tv == null) {
|
return;
|
}
|
if (enabled) {
|
tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.device_manager_icon_nextarrow, 0);
|
} else {
|
tv.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
}
|
}
|
|
/**
|
* 设置是否可点击
|
*/
|
public void setItemClickable(boolean clickable) {
|
setClickable(clickable);
|
setSubVisible(clickable);
|
}
|
|
/**
|
* 设置离线显示
|
*/
|
public void setItemOffLine() {
|
setName(R.string.common_offline);
|
setItemEnable(false);
|
}
|
|
/**
|
* 设置封面图标显示
|
*
|
* @param url
|
*/
|
public void setImage(String url, FileImageDecoder fileImageDecoder) {
|
setImageVisible(true);
|
if (!TextUtils.isEmpty(url)) {
|
ImageLoader.getInstance().displayImage(url, mImageView,
|
new SimpleImageLoadingListener() {
|
@Override
|
public void onLoadingStarted(String imageUrl, View view) {
|
|
mLoadingPb.setVisibility(View.VISIBLE);
|
}
|
|
@Override
|
public void onLoadingComplete(String imageUrl,
|
View view, Bitmap loadImage) {
|
mLoadingPb.setVisibility(View.GONE);
|
}
|
|
@Override
|
public void onLoadingFailed(String imageUrl, View view,
|
FailReason failReason) {
|
mImageView.setBackgroundResource(R.drawable.default_cover_small);
|
mLoadingPb.setVisibility(View.GONE);
|
}
|
}, fileImageDecoder);
|
} else {
|
mImageView.setBackgroundResource(R.drawable.default_cover_small);
|
}
|
setSwitchVisible(false);
|
setNameVisible(false);
|
}
|
|
/**
|
* 设置封面图不显示
|
*/
|
public void setImageInVisible() {
|
setImageVisible(false);
|
setNameVisible(false);
|
setSwitchVisible(false);
|
setLoadingVisible(false);
|
}
|
|
/**
|
* 设置是否选中
|
*
|
* @param isSelected
|
*/
|
public void setSwitchSelected(boolean isSelected) {
|
if (mSwitchTv == null) {
|
return;
|
}
|
mSwitchTv.setSelected(isSelected);
|
setSwitchVisible(true);
|
setNameVisible(false);
|
setLoadingVisible(false);
|
setSubVisible(false);
|
}
|
|
/**
|
* 获取是否选中
|
*/
|
public boolean isSwitchSelected() {
|
return mSwitchTv != null && mSwitchTv.isSelected();
|
}
|
|
/**
|
* 设置按钮是否可点击
|
*
|
* @param enable
|
*/
|
public void setSwitchEnable(boolean enable) {
|
if (mSwitchTv == null) {
|
return;
|
}
|
mSwitchTv.setEnabled(enable);
|
}
|
|
/**
|
* 是否显示红点
|
*
|
* @param hasRedDot
|
*/
|
public void setNameRedDot(boolean hasRedDot) {
|
if (mNameTv == null) {
|
return;
|
}
|
if (hasRedDot) {
|
mNameTv.setCompoundDrawablesWithIntrinsicBounds(
|
0,
|
0,
|
R.drawable.common_newmessage,
|
0);
|
} else {
|
mNameTv.setCompoundDrawablesWithIntrinsicBounds(
|
0,
|
0,
|
0,
|
0);
|
}
|
}
|
|
// 设置view 的margin值
|
public static void setMargins(View v, int l, int t, int r, int b) {
|
if (v.getLayoutParams() instanceof MarginLayoutParams) {
|
MarginLayoutParams p = (MarginLayoutParams) v.getLayoutParams();
|
p.setMargins(l, t, r, b);
|
v.requestLayout();
|
}
|
}
|
|
//设置无箭头显示
|
public void setNoArrowName(int resId) {
|
setName(resId);
|
setSubVisible(false);
|
setLoadingVisible(false);
|
}
|
|
public void setRightDrawableCheck(boolean isCheck) {
|
setName("");
|
if (isCheck) {
|
mNameTv.setCompoundDrawablesWithIntrinsicBounds(
|
0,
|
0,
|
R.drawable.setting_icon_check,
|
0);
|
} else {
|
mNameTv.setCompoundDrawablesWithIntrinsicBounds(
|
0,
|
0,
|
0,
|
0);
|
}
|
}
|
}
|