package com.aincc.seoulexcursion.ui.widget; import android.content.Context; import android.util.AttributeSet; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.TextView; import com.aincc.seoulexcursion.R; import com.aincc.seoulexcursion.util.SeoulFont; /** * * <h3><b>MapOverlayPopup</b></h3></br> * * @author aincc@barusoft.com * @version 1.0.0 * @since 1.0.0 */ public class MapOverlayPopup extends LinearLayout implements OnClickListener { private static final String ANDROID_SCHEMA = "http://schemas.android.com/apk/res/android"; /** * 레이아웃 */ private static final int LAYOUT = R.layout.widget_map_overlay_popup; /** * 팝업값 */ private Object value; /** * 클릭리스너 */ private OnClickListener l; /** * 팝업메시지 */ private TextView textView; /** * * @since 1.0.0 * @param context */ public MapOverlayPopup(Context context) { super(context); applyLayout(context, "", "16sp", LAYOUT); } /** * * @since 1.0.0 * @param context * @param attrs */ public MapOverlayPopup(Context context, AttributeSet attrs) { super(context, attrs); int textResId = attrs.getAttributeResourceValue(ANDROID_SCHEMA, "text", 0); String text = ""; if (textResId == 0) { text = attrs.getAttributeValue(ANDROID_SCHEMA, "text"); } else { text = context.getString(textResId); } String textSize = attrs.getAttributeValue(ANDROID_SCHEMA, "textSize"); applyLayout(context, text, textSize, LAYOUT); } /** * * @since 1.0.0 * @param text * @param textSize * @param layoutResId */ private void applyLayout(Context context, CharSequence text, CharSequence textSize, int layoutResId) { LayoutInflater.from(getContext()).inflate(layoutResId, this); textView = (TextView) findViewById(R.id.popup_name); textView.setTypeface(SeoulFont.getInstance().getSeoulHangang()); findViewById(R.id.popup_layout).setOnClickListener(this); setText(text); setTextSize(textSize); } /** * * @since 1.0.0 * @return */ public CharSequence getText() { return textView.getText(); } /** * * @since 1.0.0 * @param text */ public void setText(CharSequence text) { textView.setText(text); } /** * * @since 1.0.0 * @return */ public float getTextSize() { return textView.getTextSize(); } /** * * @since 1.0.0 * @param textSize */ public void setTextSize(CharSequence textSize) { float size = 13.0f; int unit = TypedValue.COMPLEX_UNIT_SP; try { String value = textSize.toString().toLowerCase(); if (value.indexOf("sp") >= 0) { value = value.replace("sp", "").trim(); size = Float.parseFloat(value); unit = TypedValue.COMPLEX_UNIT_SP; } else if (value.indexOf("dp") >= 0) { value = value.replace("dp", "").trim(); size = Float.parseFloat(value); unit = TypedValue.COMPLEX_UNIT_DIP; } else if (value.indexOf("dip") >= 0) { value = value.replace("dip", "").trim(); size = Float.parseFloat(value); unit = TypedValue.COMPLEX_UNIT_DIP; } else if (value.indexOf("px") >= 0) { value = value.replace("px", "").trim(); size = Float.parseFloat(value); unit = TypedValue.COMPLEX_UNIT_PX; } } catch (Exception e) { } textView.setTextSize(unit, size); } /** * * @since 1.0.0 * @param obj */ public void setValue(Object obj) { value = obj; } /** * * @since 1.0.0 * @return */ public Object getValue() { return value; } @Override public void setOnClickListener(OnClickListener l) { this.l = l; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.popup_layout: if (null != l) { l.onClick(this); } break; } } }