Search in sources :

Example 6 with TransformationMethod

use of android.text.method.TransformationMethod in project UltimateAndroid by cymcsg.

the class AutofitTextView method refitText.

/**
     * Re size the font so the specified text fits in the text box assuming the text box is the
     * specified width.
     */
private void refitText() {
    if (!mSizeToFit) {
        return;
    }
    if (mMaxLines <= 0) {
        // Don't auto-size since there's no limit on lines.
        return;
    }
    CharSequence text = getText();
    TransformationMethod method = getTransformationMethod();
    if (method != null) {
        text = method.getTransformation(text, this);
    }
    int targetWidth = getWidth() - getPaddingLeft() - getPaddingRight();
    if (targetWidth > 0) {
        Context context = getContext();
        Resources r = Resources.getSystem();
        DisplayMetrics displayMetrics;
        float size = mMaxTextSize;
        float high = size;
        float low = 0;
        if (context != null) {
            r = context.getResources();
        }
        displayMetrics = r.getDisplayMetrics();
        mPaint.set(getPaint());
        mPaint.setTextSize(size);
        if ((mMaxLines == 1 && mPaint.measureText(text, 0, text.length()) > targetWidth) || getLineCount(text, mPaint, size, targetWidth, displayMetrics) > mMaxLines) {
            size = getTextSize(text, mPaint, targetWidth, mMaxLines, low, high, mPrecision, displayMetrics);
        }
        if (size < mMinTextSize) {
            size = mMinTextSize;
        }
        super.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
    }
}
Also used : Context(android.content.Context) TransformationMethod(android.text.method.TransformationMethod) Resources(android.content.res.Resources) DisplayMetrics(android.util.DisplayMetrics) TextPaint(android.text.TextPaint)

Example 7 with TransformationMethod

use of android.text.method.TransformationMethod in project AisenWeiBo by wangdan.

the class TimePickerDialog method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    View view = inflater.inflate(R.layout.time_picker_dialog, null);
    KeyboardListener keyboardListener = new KeyboardListener();
    view.findViewById(R.id.time_picker_dialog).setOnKeyListener(keyboardListener);
    Resources res = getResources();
    mHourPickerDescription = res.getString(R.string.hour_picker_description);
    mSelectHours = res.getString(R.string.select_hours);
    mMinutePickerDescription = res.getString(R.string.minute_picker_description);
    mSelectMinutes = res.getString(R.string.select_minutes);
    mBlue = Utils.resolveColor(getActivity(), R.attr.themeColor, res.getColor(R.color.comm_blue));
    mBlack = res.getColor(R.color.numbers_text_color);
    mHourView = (TextView) view.findViewById(R.id.hours);
    mHourView.setOnKeyListener(keyboardListener);
    mHourSpaceView = (TextView) view.findViewById(R.id.hour_space);
    mMinuteSpaceView = (TextView) view.findViewById(R.id.minutes_space);
    mMinuteView = (TextView) view.findViewById(R.id.minutes);
    mMinuteView.setOnKeyListener(keyboardListener);
    mAmPmTextView = (TextView) view.findViewById(R.id.ampm_label);
    mAmPmTextView.setOnKeyListener(keyboardListener);
    if (Build.VERSION.SDK_INT <= 14) {
        mAmPmTextView.setTransformationMethod(new TransformationMethod() {

            private final Locale locale = getResources().getConfiguration().locale;

            @Override
            public CharSequence getTransformation(CharSequence source, View view) {
                return source != null ? source.toString().toUpperCase(locale) : null;
            }

            @Override
            public void onFocusChanged(View view, CharSequence sourceText, boolean focused, int direction, Rect previouslyFocusedRect) {
            }
        });
    }
    String[] amPmTexts = new DateFormatSymbols().getAmPmStrings();
    mAmText = amPmTexts[0];
    mPmText = amPmTexts[1];
    mTimePicker = (RadialPickerLayout) view.findViewById(R.id.time_picker);
    mTimePicker.setOnValueSelectedListener(this);
    mTimePicker.setOnKeyListener(keyboardListener);
    mTimePicker.initialize(getActivity(), mInitialHourOfDay, mInitialMinute, mIs24HourMode, mVibrate);
    int currentItemShowing = HOUR_INDEX;
    if (savedInstanceState != null && savedInstanceState.containsKey(KEY_CURRENT_ITEM_SHOWING)) {
        currentItemShowing = savedInstanceState.getInt(KEY_CURRENT_ITEM_SHOWING);
    }
    setCurrentItemShowing(currentItemShowing, false, true, true);
    mTimePicker.invalidate();
    mHourView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setCurrentItemShowing(HOUR_INDEX, true, false, true);
            mTimePicker.tryVibrate();
        }
    });
    mMinuteView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setCurrentItemShowing(MINUTE_INDEX, true, false, true);
            mTimePicker.tryVibrate();
        }
    });
    mDoneButton = (TextView) view.findViewById(R.id.done_button);
    mDoneButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            onDoneButtonClick();
        }
    });
    mDoneButton.setOnKeyListener(keyboardListener);
    // Enable or disable the AM/PM view.
    mAmPmHitspace = view.findViewById(R.id.ampm_hitspace);
    if (mIs24HourMode) {
        mAmPmTextView.setVisibility(View.GONE);
        RelativeLayout.LayoutParams paramsSeparator = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        paramsSeparator.addRule(RelativeLayout.CENTER_IN_PARENT);
        TextView separatorView = (TextView) view.findViewById(R.id.separator);
        separatorView.setLayoutParams(paramsSeparator);
    } else {
        mAmPmTextView.setVisibility(View.VISIBLE);
        updateAmPmDisplay(mInitialHourOfDay < 12 ? AM : PM);
        mAmPmHitspace.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mTimePicker.tryVibrate();
                int amOrPm = mTimePicker.getIsCurrentlyAmOrPm();
                if (amOrPm == AM) {
                    amOrPm = PM;
                } else if (amOrPm == PM) {
                    amOrPm = AM;
                }
                updateAmPmDisplay(amOrPm);
                mTimePicker.setAmOrPm(amOrPm);
            }
        });
    }
    mAllowAutoAdvance = true;
    setHour(mInitialHourOfDay, true);
    setMinute(mInitialMinute);
    // Set up for keyboard mode.
    mDoublePlaceholderText = res.getString(R.string.time_placeholder);
    mDeletedKeyFormat = res.getString(R.string.deleted_key);
    mPlaceholderText = mDoublePlaceholderText.charAt(0);
    mAmKeyCode = mPmKeyCode = -1;
    generateLegalTimesTree();
    if (mInKbMode) {
        mTypedTimes = savedInstanceState.getIntegerArrayList(KEY_TYPED_TIMES);
        tryStartingKbMode(-1);
        mHourView.invalidate();
    } else if (mTypedTimes == null) {
        mTypedTimes = new ArrayList<Integer>();
    }
    return view;
}
Also used : Locale(java.util.Locale) Rect(android.graphics.Rect) LayoutParams(android.app.ActionBar.LayoutParams) ArrayList(java.util.ArrayList) TextView(android.widget.TextView) View(android.view.View) TransformationMethod(android.text.method.TransformationMethod) RelativeLayout(android.widget.RelativeLayout) OnClickListener(android.view.View.OnClickListener) DateFormatSymbols(java.text.DateFormatSymbols) TextView(android.widget.TextView) Resources(android.content.res.Resources)

Example 8 with TransformationMethod

use of android.text.method.TransformationMethod in project UltimateAndroid by cymcsg.

the class AutofitTextView method refitText.

/**
     * Re size the font so the specified text fits in the text box assuming the text box is the
     * specified width.
     */
private void refitText() {
    if (!mSizeToFit) {
        return;
    }
    if (mMaxLines <= 0) {
        // Don't auto-size since there's no limit on lines.
        return;
    }
    CharSequence text = getText();
    TransformationMethod method = getTransformationMethod();
    if (method != null) {
        text = method.getTransformation(text, this);
    }
    int targetWidth = getWidth() - getPaddingLeft() - getPaddingRight();
    if (targetWidth > 0) {
        Context context = getContext();
        Resources r = Resources.getSystem();
        DisplayMetrics displayMetrics;
        float size = mMaxTextSize;
        float high = size;
        float low = 0;
        if (context != null) {
            r = context.getResources();
        }
        displayMetrics = r.getDisplayMetrics();
        mPaint.set(getPaint());
        mPaint.setTextSize(size);
        if ((mMaxLines == 1 && mPaint.measureText(text, 0, text.length()) > targetWidth) || getLineCount(text, mPaint, size, targetWidth, displayMetrics) > mMaxLines) {
            size = getTextSize(text, mPaint, targetWidth, mMaxLines, low, high, mPrecision, displayMetrics);
        }
        if (size < mMinTextSize) {
            size = mMinTextSize;
        }
        super.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
    }
}
Also used : Context(android.content.Context) TransformationMethod(android.text.method.TransformationMethod) Resources(android.content.res.Resources) DisplayMetrics(android.util.DisplayMetrics) TextPaint(android.text.TextPaint)

Example 9 with TransformationMethod

use of android.text.method.TransformationMethod in project datetimepicker by flavienlaurent.

the class TimePickerDialog method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    View view = inflater.inflate(R.layout.time_picker_dialog, null);
    KeyboardListener keyboardListener = new KeyboardListener();
    view.setOnKeyListener(keyboardListener);
    Resources res = getResources();
    mHourPickerDescription = res.getString(R.string.hour_picker_description);
    mSelectHours = res.getString(R.string.select_hours);
    mMinutePickerDescription = res.getString(R.string.minute_picker_description);
    mSelectMinutes = res.getString(R.string.select_minutes);
    mBlue = res.getColor(R.color.blue);
    mBlack = res.getColor(R.color.numbers_text_color);
    mHourView = (TextView) view.findViewById(R.id.hours);
    mHourView.setOnKeyListener(keyboardListener);
    mHourSpaceView = (TextView) view.findViewById(R.id.hour_space);
    mMinuteSpaceView = (TextView) view.findViewById(R.id.minutes_space);
    mMinuteView = (TextView) view.findViewById(R.id.minutes);
    mMinuteView.setOnKeyListener(keyboardListener);
    mAmPmTextView = (TextView) view.findViewById(R.id.ampm_label);
    mAmPmTextView.setOnKeyListener(keyboardListener);
    if (Build.VERSION.SDK_INT <= 14) {
        mAmPmTextView.setTransformationMethod(new TransformationMethod() {

            private final Locale locale = getResources().getConfiguration().locale;

            @Override
            public CharSequence getTransformation(CharSequence source, View view) {
                return source != null ? source.toString().toUpperCase(locale) : null;
            }

            @Override
            public void onFocusChanged(View view, CharSequence sourceText, boolean focused, int direction, Rect previouslyFocusedRect) {
            }
        });
    }
    String[] amPmTexts = new DateFormatSymbols().getAmPmStrings();
    mAmText = amPmTexts[0];
    mPmText = amPmTexts[1];
    mTimePicker = (RadialPickerLayout) view.findViewById(R.id.time_picker);
    mTimePicker.setOnValueSelectedListener(this);
    mTimePicker.setOnKeyListener(keyboardListener);
    mTimePicker.initialize(getActivity(), mInitialHourOfDay, mInitialMinute, mIs24HourMode, mVibrate);
    int currentItemShowing = HOUR_INDEX;
    if (savedInstanceState != null && savedInstanceState.containsKey(KEY_CURRENT_ITEM_SHOWING)) {
        currentItemShowing = savedInstanceState.getInt(KEY_CURRENT_ITEM_SHOWING);
    }
    setCurrentItemShowing(currentItemShowing, false, true, true);
    mTimePicker.invalidate();
    mHourView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setCurrentItemShowing(HOUR_INDEX, true, false, true);
            mTimePicker.tryVibrate();
        }
    });
    mMinuteView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            setCurrentItemShowing(MINUTE_INDEX, true, false, true);
            mTimePicker.tryVibrate();
        }
    });
    mDoneButton = (TextView) view.findViewById(R.id.done_button);
    mDoneButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            onDoneButtonClick();
        }
    });
    mDoneButton.setOnKeyListener(keyboardListener);
    // Enable or disable the AM/PM view.
    mAmPmHitspace = view.findViewById(R.id.ampm_hitspace);
    if (mIs24HourMode) {
        mAmPmTextView.setVisibility(View.GONE);
        RelativeLayout.LayoutParams paramsSeparator = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        paramsSeparator.addRule(RelativeLayout.CENTER_IN_PARENT);
        TextView separatorView = (TextView) view.findViewById(R.id.separator);
        separatorView.setLayoutParams(paramsSeparator);
    } else {
        mAmPmTextView.setVisibility(View.VISIBLE);
        updateAmPmDisplay(mInitialHourOfDay < 12 ? AM : PM);
        mAmPmHitspace.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                mTimePicker.tryVibrate();
                int amOrPm = mTimePicker.getIsCurrentlyAmOrPm();
                if (amOrPm == AM) {
                    amOrPm = PM;
                } else if (amOrPm == PM) {
                    amOrPm = AM;
                }
                updateAmPmDisplay(amOrPm);
                mTimePicker.setAmOrPm(amOrPm);
            }
        });
    }
    mAllowAutoAdvance = true;
    setHour(mInitialHourOfDay, true);
    setMinute(mInitialMinute);
    // Set up for keyboard mode.
    mDoublePlaceholderText = res.getString(R.string.time_placeholder);
    mDeletedKeyFormat = res.getString(R.string.deleted_key);
    mPlaceholderText = mDoublePlaceholderText.charAt(0);
    mAmKeyCode = mPmKeyCode = -1;
    generateLegalTimesTree();
    if (mInKbMode) {
        mTypedTimes = savedInstanceState.getIntegerArrayList(KEY_TYPED_TIMES);
        tryStartingKbMode(-1);
        mHourView.invalidate();
    } else if (mTypedTimes == null) {
        mTypedTimes = new ArrayList<Integer>();
    }
    return view;
}
Also used : Locale(java.util.Locale) Rect(android.graphics.Rect) LayoutParams(android.app.ActionBar.LayoutParams) ArrayList(java.util.ArrayList) TextView(android.widget.TextView) View(android.view.View) TransformationMethod(android.text.method.TransformationMethod) RelativeLayout(android.widget.RelativeLayout) OnClickListener(android.view.View.OnClickListener) DateFormatSymbols(java.text.DateFormatSymbols) TextView(android.widget.TextView) Resources(android.content.res.Resources)

Example 10 with TransformationMethod

use of android.text.method.TransformationMethod in project android-autofittextview by grantland.

the class AutofitHelper method getMaxLines.

private static int getMaxLines(TextView view) {
    // No limit (Integer.MAX_VALUE also means no limit)
    int maxLines = -1;
    TransformationMethod method = view.getTransformationMethod();
    if (method != null && method instanceof SingleLineTransformationMethod) {
        maxLines = 1;
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        // setMaxLines() and getMaxLines() are only available on android-16+
        maxLines = view.getMaxLines();
    }
    return maxLines;
}
Also used : TransformationMethod(android.text.method.TransformationMethod) SingleLineTransformationMethod(android.text.method.SingleLineTransformationMethod) SingleLineTransformationMethod(android.text.method.SingleLineTransformationMethod) TextPaint(android.text.TextPaint)

Aggregations

TransformationMethod (android.text.method.TransformationMethod)13 TextPaint (android.text.TextPaint)11 Resources (android.content.res.Resources)7 SingleLineTransformationMethod (android.text.method.SingleLineTransformationMethod)6 Context (android.content.Context)5 DisplayMetrics (android.util.DisplayMetrics)5 TypedArray (android.content.res.TypedArray)3 Paint (android.graphics.Paint)3 TypedValue (android.util.TypedValue)3 LayoutParams (android.app.ActionBar.LayoutParams)2 Rect (android.graphics.Rect)2 View (android.view.View)2 OnClickListener (android.view.View.OnClickListener)2 RelativeLayout (android.widget.RelativeLayout)2 TextView (android.widget.TextView)2 DateFormatSymbols (java.text.DateFormatSymbols)2 ArrayList (java.util.ArrayList)2 Locale (java.util.Locale)2