Back to project page photo-share-android.
The source code is released under:
Apache License
If you think the Android project photo-share-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.project.photoshare.widget; /*w w w . jav a 2 s. c o m*/ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextPaint; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.project.photoshare.R; /** * TODO: document your custom view class. */ public class CustomEditText extends EditText { private String mExampleString; // TODO: use a default from R.string... private int mExampleColor = Color.RED; // TODO: use a default from R.color... private float mExampleDimension = 0; // TODO: use a default from R.dimen... private Drawable mExampleDrawable; private TextPaint mTextPaint; private float mTextWidth; private float mTextHeight; public CustomEditText(Context context) { super(context); //init(null, 0); } public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); //init(attrs, 0); } public CustomEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); //init(attrs, defStyle); } /** * This method disables the submit button whenever the EditableText inside is empty.<br> * @param button */ public void addTextWatcherForEmptyString(final Button button) { String input = getEditableText().toString(); if (input.equals("")) { button.setEnabled(false); addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { String input = s.toString(); if (input.equals("")) { button.setEnabled(false); } else { button.setEnabled(true); } } }); } } private void init(AttributeSet attrs, int defStyle) { // Load attributes final TypedArray a = getContext().obtainStyledAttributes( attrs, R.styleable.CustomEditText, defStyle, 0); mExampleString = a.getString( R.styleable.CustomEditText_exampleString); mExampleColor = a.getColor( R.styleable.CustomEditText_exampleColor, mExampleColor); // Use getDimensionPixelSize or getDimensionPixelOffset when dealing with // values that should fall on pixel boundaries. mExampleDimension = a.getDimension( R.styleable.CustomEditText_exampleDimension, mExampleDimension); if (a.hasValue(R.styleable.CustomEditText_exampleDrawable)) { mExampleDrawable = a.getDrawable( R.styleable.CustomEditText_exampleDrawable); mExampleDrawable.setCallback(this); } a.recycle(); // Set up a default TextPaint object mTextPaint = new TextPaint(); mTextPaint.setFlags(Paint.ANTI_ALIAS_FLAG); mTextPaint.setTextAlign(Paint.Align.LEFT); // Update TextPaint and text measurements from attributes invalidateTextPaintAndMeasurements(); } private void invalidateTextPaintAndMeasurements() { mTextPaint.setTextSize(mExampleDimension); mTextPaint.setColor(mExampleColor); mTextWidth = mTextPaint.measureText(mExampleString); Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics(); mTextHeight = fontMetrics.bottom; } /* @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // TODO: consider storing these as member variables to reduce // allocations per draw cycle. int paddingLeft = getPaddingLeft(); int paddingTop = getPaddingTop(); int paddingRight = getPaddingRight(); int paddingBottom = getPaddingBottom(); int contentWidth = getWidth() - paddingLeft - paddingRight; int contentHeight = getHeight() - paddingTop - paddingBottom; // Draw the text. canvas.drawText(mExampleString, paddingLeft + (contentWidth - mTextWidth) / 2, paddingTop + (contentHeight + mTextHeight) / 2, mTextPaint); // Draw the example drawable on top of the text. if (mExampleDrawable != null) { mExampleDrawable.setBounds(paddingLeft, paddingTop, paddingLeft + contentWidth, paddingTop + contentHeight); mExampleDrawable.draw(canvas); } } */ /** * Gets the example string attribute value. * @return The example string attribute value. */ public String getExampleString() { return mExampleString; } /** * Sets the view's example string attribute value. In the example view, this string * is the text to draw. * @param exampleString The example string attribute value to use. */ public void setExampleString(String exampleString) { mExampleString = exampleString; invalidateTextPaintAndMeasurements(); } /** * Gets the example color attribute value. * @return The example color attribute value. */ public int getExampleColor() { return mExampleColor; } /** * Sets the view's example color attribute value. In the example view, this color * is the font color. * @param exampleColor The example color attribute value to use. */ public void setExampleColor(int exampleColor) { mExampleColor = exampleColor; invalidateTextPaintAndMeasurements(); } /** * Gets the example dimension attribute value. * @return The example dimension attribute value. */ public float getExampleDimension() { return mExampleDimension; } /** * Sets the view's example dimension attribute value. In the example view, this dimension * is the font size. * @param exampleDimension The example dimension attribute value to use. */ public void setExampleDimension(float exampleDimension) { mExampleDimension = exampleDimension; invalidateTextPaintAndMeasurements(); } /** * Gets the example drawable attribute value. * @return The example drawable attribute value. */ public Drawable getExampleDrawable() { return mExampleDrawable; } /** * Sets the view's example drawable attribute value. In the example view, this drawable is * drawn above the text. * @param exampleDrawable The example drawable attribute value to use. */ public void setExampleDrawable(Drawable exampleDrawable) { mExampleDrawable = exampleDrawable; } }