package com.dtr.settingview.lib.item;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.dtr.settingview.lib.entity.SettingData;
import com.dtr.settingviewlib.R;
public class CheckItemViewV extends FrameLayout {
private LayoutInflater mInflater = null;
private LinearLayout mItemViewContainer = null;
private TextView mTitle = null;
private TextView mSubTitle = null;
private ImageView mCheck = null;
private ImageView mDrawable = null;
private View mItemView = null;
private onCheckItemChangedListener mChangedListener = null;
public CheckItemViewV(Context context) {
super(context);
// TODO Auto-generated constructor stub
init(context);
}
public CheckItemViewV(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init(context);
readAttrs(context, attrs);
}
private void init(Context context) {
mInflater = LayoutInflater.from(context);
mItemView = mInflater.inflate(R.layout.setting_view_check_item_v, null);
addView(mItemView);
mTitle = (TextView) mItemView.findViewById(R.id.setting_view_check_item_v_title);
mSubTitle = (TextView) mItemView.findViewById(R.id.setting_view_check_item_v_subtitle);
mDrawable = (ImageView) mItemView.findViewById(R.id.setting_view_check_item_v_icon);
mCheck = (ImageView) mItemView.findViewById(R.id.setting_view_check_item_v_check);
mItemViewContainer = (LinearLayout) mItemView.findViewById(R.id.setting_view_check_item_v_container);
mItemViewContainer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mCheck.getVisibility() == View.GONE) {
mCheck.setVisibility(View.VISIBLE);
if (null != mChangedListener) {
mChangedListener.onCheckItemChanged(true);
}
} else {
mCheck.setVisibility(View.GONE);
if (null != mChangedListener) {
mChangedListener.onCheckItemChanged(false);
}
}
}
});
}
private void readAttrs(Context context, AttributeSet attrs) {
if (null != attrs) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SettingViewItem);
if (a.hasValue(R.styleable.SettingViewItem_check)) {
Drawable drawable = a.getDrawable(R.styleable.SettingViewItem_check);
if (null != drawable) {
mCheck.setImageDrawable(drawable);
} else {
mCheck.setImageResource(R.drawable.setting_view_check);
}
}
if (a.hasValue(R.styleable.SettingViewItem_background)) {
Drawable drawable = a.getDrawable(R.styleable.SettingViewItem_background);
if (null != drawable) {
mItemViewContainer.setBackgroundDrawable(drawable);
} else {
mItemViewContainer.setBackgroundResource(R.drawable.setting_view_item_selector);
}
}
if (a.hasValue(R.styleable.SettingViewItem_drawable)) {
Drawable drawable = a.getDrawable(R.styleable.SettingViewItem_drawable);
if (null != drawable) {
mDrawable.setImageDrawable(drawable);
} else {
mDrawable.setVisibility(View.GONE);
}
} else {
mDrawable.setVisibility(View.GONE);
}
if (a.hasValue(R.styleable.SettingViewItem_title)) {
String title = a.getString(R.styleable.SettingViewItem_title);
if (!TextUtils.isEmpty(title)) {
mTitle.setText(title);
}
}
if (a.hasValue(R.styleable.SettingViewItem_titleColor)) {
ColorStateList colors = a.getColorStateList(R.styleable.SettingViewItem_titleColor);
if (null != colors) {
mTitle.setTextColor(colors);
}
}
if (a.hasValue(R.styleable.SettingViewItem_titleSize)) {
int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, a.getDimensionPixelSize(R.styleable.SettingViewItem_titleSize, 16), getResources()
.getDisplayMetrics());
mTitle.setTextSize(textSize);
}
if (a.hasValue(R.styleable.SettingViewItem_subTitle)) {
String subTitle = a.getString(R.styleable.SettingViewItem_subTitle);
if (!TextUtils.isEmpty(subTitle)) {
mSubTitle.setText(subTitle);
}
}
if (a.hasValue(R.styleable.SettingViewItem_subTitleColor)) {
ColorStateList colors = a.getColorStateList(R.styleable.SettingViewItem_subTitleColor);
if (null != colors) {
mSubTitle.setTextColor(colors);
}
}
if (a.hasValue(R.styleable.SettingViewItem_subTitleSize)) {
int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, a.getDimensionPixelSize(R.styleable.SettingViewItem_subTitleSize, 12), getResources()
.getDisplayMetrics());
mSubTitle.setTextSize(textSize);
}
if (a.hasValue(R.styleable.SettingViewItem_clickable)) {
mItemViewContainer.setClickable(a.getBoolean(R.styleable.SettingViewItem_clickable, true));
} else {
mItemViewContainer.setClickable(true);
}
if (a.hasValue(R.styleable.SettingViewItem_checked)) {
boolean isChecked = a.getBoolean(R.styleable.SettingViewItem_checked, false);
if (isChecked) {
mCheck.setVisibility(View.VISIBLE);
} else {
mCheck.setVisibility(View.GONE);
}
}
a.recycle();
}
}
public void fillData(SettingData data) {
if (null != data) {
if (!TextUtils.isEmpty(data.getTitle())) {
mTitle.setText(data.getTitle());
} else {
mTitle.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(data.getSubTitle())) {
mSubTitle.setText(data.getSubTitle());
} else {
mTitle.setVisibility(View.GONE);
}
if (null != data.getDrawable()) {
mDrawable.setImageDrawable(data.getDrawable());
} else {
mDrawable.setVisibility(View.GONE);
}
if (null != data.getCheck()) {
mCheck.setImageDrawable(data.getCheck());
} else {
mCheck.setImageResource(R.drawable.setting_view_check);
}
if (null != data.getBackground()) {
mItemViewContainer.setBackgroundDrawable(data.getBackground());
} else {
mItemViewContainer.setBackgroundResource(R.drawable.setting_view_item_selector);
}
if (data.getTitleColor() > 0) {
mTitle.setTextColor(data.getTitleColor());
}
if (data.getTitleSize() > 0) {
int titleSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, data.getTitleSize(), getResources().getDisplayMetrics());
mTitle.setTextSize(titleSize);
}
if (data.getSubTitleColor() > 0) {
mSubTitle.setTextColor(data.getSubTitleColor());
}
if (data.getSubTitleSize() > 0) {
int subTitleSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, data.getSubTitleSize(), getResources().getDisplayMetrics());
mSubTitle.setTextSize(subTitleSize);
}
if (data.isChecked()) {
mCheck.setVisibility(View.VISIBLE);
} else {
mCheck.setVisibility(View.GONE);
}
}
}
public interface onCheckItemChangedListener {
public void onCheckItemChanged(boolean isChecked);
}
public void setOnCheckItemChangedListener(onCheckItemChangedListener listener) {
mChangedListener = listener;
}
public TextView getmTitle() {
return mTitle;
}
public TextView getmSubTitle() {
return mSubTitle;
}
public ImageView getmDrawable() {
return mDrawable;
}
public ImageView getmCheck() {
return mCheck;
}
}