Java Code Examples for android.text.TextPaint#descent()
The following examples show how to use
android.text.TextPaint#descent() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SimpleMonthView.java From android_9.0.0_r45 with Apache License 2.0 | 6 votes |
private void drawDaysOfWeek(Canvas canvas) { final TextPaint p = mDayOfWeekPaint; final int headerHeight = mMonthHeight; final int rowHeight = mDayOfWeekHeight; final int colWidth = mCellWidth; // Text is vertically centered within the day of week height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; final int rowCenter = headerHeight + rowHeight / 2; for (int col = 0; col < DAYS_IN_WEEK; col++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (isLayoutRtl()) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } final String label = mDayOfWeekLabels[col]; canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p); } }
Example 2
Source File: SimpleMonthView.java From android_9.0.0_r45 with Apache License 2.0 | 6 votes |
/** * Returns the row (0 indexed) closest to previouslyFocusedRect or center if null. */ private int findClosestRow(@Nullable Rect previouslyFocusedRect) { if (previouslyFocusedRect == null) { return 3; } else if (mDayHeight == 0) { return 0; // There hasn't been a layout, so just choose the first row } else { int centerY = previouslyFocusedRect.centerY(); final TextPaint p = mDayPaint; final int headerHeight = mMonthHeight + mDayOfWeekHeight; final int rowHeight = mDayHeight; // Text is vertically centered within the row height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; final int rowCenter = headerHeight + rowHeight / 2; centerY -= rowCenter - halfLineHeight; int row = Math.round(centerY / (float) rowHeight); final int maxDay = findDayOffset() + mDaysInMonth; final int maxRows = (maxDay / DAYS_IN_WEEK) - ((maxDay % DAYS_IN_WEEK == 0) ? 1 : 0); row = MathUtils.constrain(row, 0, maxRows); return row; } }
Example 3
Source File: SimpleMonthView.java From AppCompat-Extension-Library with Apache License 2.0 | 6 votes |
private void drawDaysOfWeek(Canvas canvas) { final TextPaint p = mDayOfWeekPaint; final int headerHeight = mMonthHeight; final int rowHeight = mDayOfWeekHeight; final int colWidth = mCellWidth; // Text is vertically centered within the day of week height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; final int rowCenter = headerHeight + rowHeight / 2; for (int col = 0; col < DAYS_IN_WEEK; col++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (ViewCompatUtils.isLayoutRtl(this)) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } final int dayOfWeek = (col + mWeekStart) % DAYS_IN_WEEK; final String label = getDayOfWeekLabel(dayOfWeek); canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p); } }
Example 4
Source File: SimpleMonthView.java From DateTimePicker with Apache License 2.0 | 6 votes |
/** * Returns the row (0 indexed) closest to previouslyFocusedRect or center if null. */ private int findClosestRow(@Nullable Rect previouslyFocusedRect) { if (previouslyFocusedRect == null) { return 3; } else { int centerY = previouslyFocusedRect.centerY(); final TextPaint p = mDayPaint; final int headerHeight = mMonthHeight + mDayOfWeekHeight; final int rowHeight = mDayHeight; // Text is vertically centered within the row height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; final int rowCenter = headerHeight + rowHeight / 2; centerY -= rowCenter - halfLineHeight; int row = Math.round(centerY / (float) rowHeight); final int maxDay = findDayOffset() + mDaysInMonth; final int maxRows = (maxDay / DAYS_IN_WEEK) - ((maxDay % DAYS_IN_WEEK == 0) ? 1 : 0); row = mathConstrain(row, 0, maxRows); return row; } }
Example 5
Source File: SimpleMonthView.java From DateTimePicker with Apache License 2.0 | 6 votes |
private void drawDaysOfWeek(Canvas canvas) { final TextPaint p = mDayOfWeekPaint; final int headerHeight = mMonthHeight; final int rowHeight = mDayOfWeekHeight; final int colWidth = mCellWidth; // Text is vertically centered within the day of week height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; final int rowCenter = headerHeight + rowHeight / 2; for (int col = 0; col < DAYS_IN_WEEK; col++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (isLayoutRtl()) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } final String label = mDayOfWeekLabels[col]; canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p); } }
Example 6
Source File: SimpleMonthView.java From SublimePicker with Apache License 2.0 | 6 votes |
private void drawDaysOfWeek(Canvas canvas) { final TextPaint p = mDayOfWeekPaint; final int headerHeight = mMonthHeight; final int rowHeight = mDayOfWeekHeight; final int colWidth = mCellWidth; // Text is vertically centered within the day of week height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; final int rowCenter = headerHeight + rowHeight / 2; for (int col = 0; col < DAYS_IN_WEEK; col++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (SUtils.isLayoutRtlCompat(this)) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } final int dayOfWeek = (col + mWeekStart) % DAYS_IN_WEEK; final String label = getDayOfWeekLabel(dayOfWeek); canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p); } }
Example 7
Source File: SplashView.java From kernel_adiutor with Apache License 2.0 | 6 votes |
private void draw(Canvas canvas, int x, int y, int radius) { if (radius > 0) canvas.drawCircle(x / 2, y / 2, radius, mPaintCircle); matrix.postRotate(rotate); Bitmap iconRotate = Bitmap.createBitmap(icon, 0, 0, icon.getWidth(), icon.getHeight(), matrix, false); canvas.drawBitmap(iconRotate, x / 2 - iconRotate.getWidth() / 2, y / 2 - iconRotate.getHeight() / 2, mPaintCircle); TextPaint textPaint = new TextPaint(); textPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD)); textPaint.setColor(textColor); textPaint.setAntiAlias(true); textPaint.setTextAlign(Paint.Align.CENTER); textPaint.setTextSize(textSize); float textHeight = textPaint.descent() - textPaint.ascent(); float textOffset = (textHeight / 2) - textPaint.descent(); canvas.drawText(getResources().getString(R.string.root_waiting), x / 2, y - textOffset - y / 4, textPaint); }
Example 8
Source File: CircleChart.java From kernel_adiutor with Apache License 2.0 | 6 votes |
private void draw(Canvas canvas, int x, int y) { mRectF.set(mPadding, mPadding, x - mPadding, y - mPadding); canvas.drawArc(mRectF, 0, 360, false, mPaintBackground); float offset = 360 / (float) mMax; canvas.drawArc(mRectF, 270, offset * mProgress, false, mPaintCircle); TextPaint textPaint = new TextPaint(); textPaint.setColor(mCircleColor); textPaint.setAntiAlias(true); textPaint.setTextAlign(Paint.Align.CENTER); textPaint.setTextSize(mTextsize); float textHeight = textPaint.descent() - textPaint.ascent(); float textOffset = (textHeight / 2) - textPaint.descent(); RectF bounds = new RectF(mPadding, mPadding, x - mPadding, y - mPadding); String text = String.valueOf(mProgress); canvas.drawText(text, bounds.centerX(), bounds.centerY() + textOffset, textPaint); }
Example 9
Source File: SplashView.java From KA27 with Apache License 2.0 | 6 votes |
private void draw(Canvas canvas, int x, int y, int radius) { if (radius > 0) canvas.drawCircle(x / 2, y / 2, radius, mPaintCircle); matrix.postRotate(rotate); Bitmap iconRotate = Bitmap.createBitmap(icon, 0, 0, icon.getWidth(), icon.getHeight(), matrix, false); canvas.drawBitmap(iconRotate, x / 2 - iconRotate.getWidth() / 2, y / 2 - iconRotate.getHeight() / 2, mPaintCircle); TextPaint textPaint = new TextPaint(); textPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD)); textPaint.setColor(textColor); textPaint.setAntiAlias(true); textPaint.setTextAlign(Paint.Align.CENTER); textPaint.setTextSize(textSize); float textHeight = textPaint.descent() - textPaint.ascent(); float textOffset = (textHeight / 2) - textPaint.descent(); canvas.drawText(getResources().getString(R.string.root_waiting), x / 2, y - textOffset - y / 4, textPaint); }
Example 10
Source File: RecipientEditTextView.java From ChipsLibrary with Apache License 2.0 | 5 votes |
private static float getTextYOffset(final String text,final TextPaint paint,final int height) { final Rect bounds=new Rect(); paint.getTextBounds(text,0,text.length(),bounds); final int textHeight=bounds.bottom-bounds.top; return height-(height-textHeight)/2-(int)paint.descent(); }
Example 11
Source File: TextFloatingActionButton.java From TextFloatingActionButton with MIT License | 5 votes |
public TextFloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); final Resources res = getResources(); mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); mTextPaint.density = res.getDisplayMetrics().density; mTextPaint.setTextAlign(Paint.Align.CENTER); yCenterOffset = -(int) ((mTextPaint.descent() + mTextPaint.ascent()) / 2); init(context, attrs, defStyleAttr); }
Example 12
Source File: TextChipsEditView.java From talk-android with MIT License | 5 votes |
/** * Given a height, returns a Y offset that will draw the text in the middle of the height. */ protected float getTextYOffset(String text, TextPaint paint, int height) { Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); int textHeight = bounds.bottom - bounds.top; return height - ((height - textHeight) / 2) - (int) paint.descent() / 2; }
Example 13
Source File: RecipientEditTextView.java From talk-android with MIT License | 5 votes |
/** * Given a height, returns a Y offset that will draw the text in the middle of the height. */ protected float getTextYOffset(String text, TextPaint paint, int height) { Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); int textHeight = bounds.bottom - bounds.top; return height - ((height - textHeight) / 2) - (int) paint.descent() / 2; }
Example 14
Source File: WaterMarkCreator.java From WatermarkCreator with Apache License 2.0 | 4 votes |
public Bitmap convertToBitmapFromText() { if (mTextSize == 0.0F) { throw new WaterMarkCreatorException("Did not provide the text size"); } if (mTextColor == 0) { throw new WaterMarkCreatorException("Did not provide the text color"); } TextPaint paint = new TextPaint(); paint.setColor(mTextColor); paint.setTextSize(mTextSize); paint.setStrokeWidth(5); paint.setTypeface(Typeface.MONOSPACE); paint.setAntiAlias(true); paint.setTextAlign(Paint.Align.LEFT); //ascent : The recommended distance above the baseline for singled spaced text float baseline = (int) (-paint.ascent() + 3f); // ascent() is negative Log.e("test", " " + paint.ascent() + " baseline: " + baseline); // First decode with Rect to check dimensions Rect bounds = new Rect(); paint.getTextBounds(mText.toString(), 0, mText.length(), bounds); int boundWidth = bounds.width() + MARGIN_RIGHT; // mRequestWidth must be in pixels if (boundWidth > mTextMaxWidth) { boundWidth = mTextMaxWidth; } StaticLayout staticLayout = new StaticLayout(mText, 0, mText.length(), paint, mTextMaxWidth, android.text.Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false); int lineCount = staticLayout.getLineCount(); //Descent: The recommended distance below the baseline for singled spaced text int height = (int) (baseline + paint.descent() + 3) * lineCount + 10; Bitmap image = Bitmap.createBitmap(boundWidth, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(image); canvas.drawARGB(0xFF, 0xFF, 0xFF, 0xFF); staticLayout.draw(canvas); return image; }
Example 15
Source File: SimpleMonthView.java From DateTimePicker with Apache License 2.0 | 4 votes |
/** * Draws the month days. */ private void drawDays(Canvas canvas) { final TextPaint p = mDayPaint; final int headerHeight = mMonthHeight + mDayOfWeekHeight; final int rowHeight = mDayHeight; final int colWidth = mCellWidth; // Text is vertically centered within the row height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; int rowCenter = headerHeight + rowHeight / 2; for (int day = 1, col = findDayOffset(); day <= mDaysInMonth; day++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (isLayoutRtl()) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } int stateMask = 0; final boolean isDayEnabled = isDayEnabled(day); if (isDayEnabled) { stateMask |= StateSet.VIEW_STATE_ENABLED; } final boolean isDayActivated = mActivatedDay == day; final boolean isDayHighlighted = mHighlightedDay == day; if (isDayActivated) { stateMask |= StateSet.VIEW_STATE_ACTIVATED; // Adjust the circle to be centered on the row. final Paint paint = isDayHighlighted ? mDayHighlightSelectorPaint : mDaySelectorPaint; canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, paint); } else if (isDayHighlighted) { stateMask |= StateSet.VIEW_STATE_PRESSED; if (isDayEnabled) { // Adjust the circle to be centered on the row. canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, mDayHighlightPaint); } } final boolean isDayToday = mToday == day; final int dayTextColor; if (isDayToday && !isDayActivated) { dayTextColor = mDaySelectorPaint.getColor(); } else { final int[] stateSet = StateSet.get(stateMask); dayTextColor = mDayTextColor.getColorForState(stateSet, 0); } p.setColor(dayTextColor); canvas.drawText(mDayFormatter.format(day), colCenterRtl, rowCenter - halfLineHeight, p); col++; if (col == DAYS_IN_WEEK) { col = 0; rowCenter += rowHeight; } } }
Example 16
Source File: BitmapUtils.java From AndroidWM with Apache License 2.0 | 4 votes |
/** * build a bitmap from a text. * * @return {@link Bitmap} the bitmap return. */ public static Bitmap textAsBitmap(Context context, WatermarkText watermarkText) { TextPaint watermarkPaint = new TextPaint(); watermarkPaint.setColor(watermarkText.getTextColor()); watermarkPaint.setStyle(watermarkText.getTextStyle()); if (watermarkText.getTextAlpha() >= 0 && watermarkText.getTextAlpha() <= 255) { watermarkPaint.setAlpha(watermarkText.getTextAlpha()); } float value = (float) watermarkText.getTextSize(); int pixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, context.getResources().getDisplayMetrics()); watermarkPaint.setTextSize(pixel); if (watermarkText.getTextShadowBlurRadius() != 0 || watermarkText.getTextShadowXOffset() != 0 || watermarkText.getTextShadowYOffset() != 0) { watermarkPaint.setShadowLayer(watermarkText.getTextShadowBlurRadius(), watermarkText.getTextShadowXOffset(), watermarkText.getTextShadowYOffset(), watermarkText.getTextShadowColor()); } if (watermarkText.getTextFont() != 0) { Typeface typeface = ResourcesCompat.getFont(context, watermarkText.getTextFont()); watermarkPaint.setTypeface(typeface); } watermarkPaint.setAntiAlias(true); watermarkPaint.setTextAlign(Paint.Align.LEFT); watermarkPaint.setStrokeWidth(5); float baseline = (int) (-watermarkPaint.ascent() + 1f); Rect bounds = new Rect(); watermarkPaint.getTextBounds(watermarkText.getText(), 0, watermarkText.getText().length(), bounds); int boundWidth = bounds.width() + 20; int mTextMaxWidth = (int) watermarkPaint.measureText(watermarkText.getText()); if (boundWidth > mTextMaxWidth) { boundWidth = mTextMaxWidth; } StaticLayout staticLayout = new StaticLayout(watermarkText.getText(), 0, watermarkText.getText().length(), watermarkPaint, mTextMaxWidth, android.text.Layout.Alignment.ALIGN_NORMAL, 2.0f, 2.0f, false); int lineCount = staticLayout.getLineCount(); int height = (int) (baseline + watermarkPaint.descent() + 3) * lineCount; Bitmap image = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); if (boundWidth > 0 && height > 0) { image = Bitmap.createBitmap(boundWidth, height, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(image); canvas.drawColor(watermarkText.getBackgroundColor()); staticLayout.draw(canvas); return image; }
Example 17
Source File: SimpleMonthView.java From AppCompat-Extension-Library with Apache License 2.0 | 4 votes |
/** * Draws the month days. */ private void drawDays(Canvas canvas) { final TextPaint p = mDayPaint; final int headerHeight = mMonthHeight + mDayOfWeekHeight; final int rowHeight = mDayHeight; final int colWidth = mCellWidth; // Text is vertically centered within the row height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; int rowCenter = headerHeight + rowHeight / 2; for (int day = 1, col = findDayOffset(); day <= mDaysInMonth; day++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (ViewCompatUtils.isLayoutRtl(this)) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } int state = 0; final boolean isDayEnabled = isDayEnabled(day); final boolean isDayActivated = mActivatedDay == day; if (isDayActivated) { state = VIEW_STATE_SELECTED; // Adjust the circle to be centered on the row. canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, mDaySelectorPaint); } else if (mTouchedItem == day) { state = VIEW_STATE_PRESSED; if (isDayEnabled) { // Adjust the circle to be centered on the row. canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, mDayHighlightPaint); } } final boolean isDayToday = mToday == day; final int dayTextColor; if (isDayToday && !isDayActivated) { dayTextColor = mDaySelectorPaint.getColor(); } else { final int[] stateSet = buildState(isDayEnabled, state); dayTextColor = mDayTextColor.getColorForState(stateSet, 0); } p.setColor(dayTextColor); canvas.drawText(mDayFormatter.format(day), colCenterRtl, rowCenter - halfLineHeight, p); col++; if (col == DAYS_IN_WEEK) { col = 0; rowCenter += rowHeight; } } }
Example 18
Source File: SimpleMonthView.java From android_9.0.0_r45 with Apache License 2.0 | 4 votes |
/** * Draws the month days. */ private void drawDays(Canvas canvas) { final TextPaint p = mDayPaint; final int headerHeight = mMonthHeight + mDayOfWeekHeight; final int rowHeight = mDayHeight; final int colWidth = mCellWidth; // Text is vertically centered within the row height. final float halfLineHeight = (p.ascent() + p.descent()) / 2f; int rowCenter = headerHeight + rowHeight / 2; for (int day = 1, col = findDayOffset(); day <= mDaysInMonth; day++) { final int colCenter = colWidth * col + colWidth / 2; final int colCenterRtl; if (isLayoutRtl()) { colCenterRtl = mPaddedWidth - colCenter; } else { colCenterRtl = colCenter; } int stateMask = 0; final boolean isDayEnabled = isDayEnabled(day); if (isDayEnabled) { stateMask |= StateSet.VIEW_STATE_ENABLED; } final boolean isDayActivated = mActivatedDay == day; final boolean isDayHighlighted = mHighlightedDay == day; if (isDayActivated) { stateMask |= StateSet.VIEW_STATE_ACTIVATED; // Adjust the circle to be centered on the row. final Paint paint = isDayHighlighted ? mDayHighlightSelectorPaint : mDaySelectorPaint; canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, paint); } else if (isDayHighlighted) { stateMask |= StateSet.VIEW_STATE_PRESSED; if (isDayEnabled) { // Adjust the circle to be centered on the row. canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, mDayHighlightPaint); } } final boolean isDayToday = mToday == day; final int dayTextColor; if (isDayToday && !isDayActivated) { dayTextColor = mDaySelectorPaint.getColor(); } else { final int[] stateSet = StateSet.get(stateMask); dayTextColor = mDayTextColor.getColorForState(stateSet, 0); } p.setColor(dayTextColor); canvas.drawText(mDayFormatter.format(day), colCenterRtl, rowCenter - halfLineHeight, p); col++; if (col == DAYS_IN_WEEK) { col = 0; rowCenter += rowHeight; } } }