下面列出了android.graphics.Paint#setStrokeWidth ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void onPreDraw(Canvas canvas) {
this.size = getHeight() > getWidth() ? getWidth() : getHeight();
this.centerX = size / 2;
this.centerY = size / 2;
this.radius = (int) ((this.size * (1 - DEFAULT_BORDER_THICKNESS)) / 2);
this.defaultThickness = this.size * DEFAULT_BORDER_THICKNESS;
this.defaultRectF = new RectF(
defaultThickness, defaultThickness,
this.size - defaultThickness, this.size - defaultThickness);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setAntiAlias(true);
paint.setStrokeWidth(defaultThickness);
//canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
//canvas.drawCircle(centerX, centerY, radius, paint);
}
private void init(Context context, AttributeSet attrs, int defStyleAttr){
mContext = context;
mMinumWidth = dp2px(48);
mMinumHeight = dp2px(48);
TypedArray attributes = mContext.obtainStyledAttributes(attrs, R.styleable.WaveLoadingView, defStyleAttr, 0);
mType = attributes.getInteger(R.styleable.WaveLoadingView_wlv_shapeType, DEFAULT_WAVE_SHAPE);
mWaveColor = attributes.getInteger(R.styleable.WaveLoadingView_wlv_waveColor, DEFAULT_WAVE_COLOR);
//最后范围1~2个宽度
float lengthRatio = attributes.getFloat(R.styleable.WaveLoadingView_wlv_waveLengthRation, DEFAULT_WAVE_LENGTH_RATIO);
mWaveLengthRatio = 1.0f + 1.0f * (lengthRatio > 1.0f ? 1.0f : lengthRatio);
//最后范围0.1~0.4个高度
float ampRatio = attributes.getFloat(R.styleable.WaveLoadingView_wlv_waveAmplitudeRatio, DEFAULT_AMPLITUDE_RATIO);
mWaveAmplitudeRatio = 0.5f + 0.5f * (ampRatio > 1.0f ? 1.0f : ampRatio);
mBorderPaint = new Paint();
mBorderPaint.setAntiAlias(true);
mBorderPaint.setStyle(Paint.Style.STROKE);
mBorderPaint.setStrokeWidth(dp2px(2));
//mBgPaint = new Paint();
mWavePaint = new Paint();
mWavePaint.setAntiAlias(true);
mWaveShaderMatrix = new Matrix();
mTitlePaint = new Paint();
mTitlePaint.setColor(DEFAULT_TITLE_COLOR);
mTitlePaint.setStyle(Paint.Style.FILL);
mTitlePaint.setAntiAlias(true);
mTitlePaint.setTextSize(DEFAULT_TITLE_CENTER_SIZE);
initBasicTravelAnimation();
attributes.recycle();
}
@Override
public void draw(Canvas canvas, Paint paint) {
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
for (int i = 0; i < 3; i++) {
canvas.save();
canvas.translate(translateX[i], translateY[i]);
canvas.drawCircle(0, 0, getWidth() / 10, paint);
canvas.restore();
}
}
/**
* 初始化画笔
*/
private void initPaint(float lineWidth)
{
mStrokePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mStrokePaint.setStyle(Paint.Style.STROKE);
mStrokePaint.setStrokeWidth(lineWidth);
mStrokePaint.setColor(Color.WHITE);
mStrokePaint.setDither(true);
mStrokePaint.setFilterBitmap(true);
mStrokePaint.setStrokeCap(Paint.Cap.ROUND);
mStrokePaint.setStrokeJoin(Paint.Join.ROUND);
}
/**
* Creates the Paint object for drawing the corners of the border
*
* @param context the Context
* @return the new Paint object
*/
public static Paint newCornerPaint(Context context) {
// Set the line thickness for the crop window border.
final float lineThicknessPx = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
DEFAULT_CORNER_THICKNESS_DP,
context.getResources().getDisplayMetrics());
final Paint cornerPaint = new Paint();
cornerPaint.setColor(DEFAULT_CORNER_COLOR);
cornerPaint.setStrokeWidth(lineThicknessPx);
cornerPaint.setStyle(Paint.Style.STROKE);
return cornerPaint;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (!placedBall) {
placeBall();
}
// Crop line to transparent effect
if(null == bitmap) {
bitmap = Bitmap.createBitmap(canvas.getWidth(),
canvas.getHeight(), Bitmap.Config.ARGB_8888);
}
Canvas temp = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor((eventCheck) ? backgroundColor : Color.parseColor("#B0B0B0"));
paint.setStrokeWidth(Utils.dpToPx(2, getResources()));
temp.drawLine(getHeight() / 2, getHeight() / 2, getWidth()
- getHeight() / 2, getHeight() / 2, paint);
Paint transparentPaint = new Paint();
transparentPaint.setAntiAlias(true);
transparentPaint.setColor(getResources().getColor(
android.R.color.transparent));
transparentPaint.setXfermode(new PorterDuffXfermode(
PorterDuff.Mode.CLEAR));
temp.drawCircle(ViewHelper.getX(ball) + ball.getWidth() / 2,
ViewHelper.getY(ball) + ball.getHeight() / 2,
ball.getWidth() / 2, transparentPaint);
canvas.drawBitmap(bitmap, 0, 0, new Paint());
if (press) {
paint.setColor((check) ? makePressColor() : Color
.parseColor("#446D6D6D"));
canvas.drawCircle(ViewHelper.getX(ball) + ball.getWidth() / 2,
getHeight() / 2, getHeight() / 2, paint);
}
invalidate();
}
private static Bitmap createDot(Context context, Location location) {
int color = locationColor(context, location);
Bitmap bitmap = DOTS.get(color);
if (bitmap != null) {
return bitmap;
}
float density = context.getResources().getDisplayMetrics().density;
int dimension = (int) (DOT_DIMENSION * density);
int radius = (int) (DOT_RADIUS * density);
bitmap = Bitmap.createBitmap(dimension, dimension, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
paint.setColor(color);
canvas.drawCircle(dimension / 2f, dimension / 2f, radius, paint);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
paint.setColor(Color.WHITE);
canvas.drawCircle(dimension / 2f, dimension / 2f, radius, paint);
canvas.drawBitmap(bitmap, 0, 0, paint);
DOTS.put(color, bitmap);
return bitmap;
}
private void initPaint(){
mLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mLinePaint.setColor(lineColor);
mLinePaint.setStyle(Paint.Style.STROKE);
mLinePaint.setStrokeWidth(lineStroke);
mLinePaint.setAlpha(lineAlpha);
//绘制四周区域
mAreaPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mAreaPaint.setColor(areaBgColor);
mAreaPaint.setStyle(Paint.Style.FILL);
mAreaPaint.setAlpha(areaBgAlpha);
}
private void init(){
setAlpha(0);
headPoint = new Point();
footPoint = new Point();
path = new Path();
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(1);
}
SlidingTabStrip(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(false);
final float density = getResources().getDisplayMetrics().density;
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.colorForeground, outValue, true);
final int themeForegroundColor = outValue.data;
mDefaultBottomBorderColor = setColorAlpha(themeForegroundColor,
DEFAULT_BOTTOM_BORDER_COLOR_ALPHA);
mDefaultTabColorizer = new SimpleTabColorizer();
mDefaultTabColorizer.setIndicatorColors(DEFAULT_SELECTED_INDICATOR_COLOR);
mDefaultTabColorizer.setDividerColors(setColorAlpha(themeForegroundColor,
DEFAULT_DIVIDER_COLOR_ALPHA));
mBottomBorderThickness = (int) (DEFAULT_BOTTOM_BORDER_THICKNESS_DIPS * density);
mBottomBorderPaint = new Paint();
mBottomBorderPaint.setColor(mDefaultBottomBorderColor);
mSelectedIndicatorThickness = (int) (SELECTED_INDICATOR_THICKNESS_DIPS * density);
mSelectedIndicatorPaint = new Paint();
mDividerHeight = DEFAULT_DIVIDER_HEIGHT;
mDividerPaint = new Paint();
mDividerPaint.setStrokeWidth((int) (DEFAULT_DIVIDER_THICKNESS_DIPS * density));
}
SlidingTabStrip(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(false);
final float density = getResources().getDisplayMetrics().density;
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.colorForeground, outValue, true);
final int themeForegroundColor = outValue.data;
mDefaultBottomBorderColor = setColorAlpha(themeForegroundColor,
DEFAULT_BOTTOM_BORDER_COLOR_ALPHA);
mDefaultTabColorizer = new SimpleTabColorizer();
mDefaultTabColorizer.setIndicatorColors(DEFAULT_SELECTED_INDICATOR_COLOR);
mDefaultTabColorizer.setDividerColors(setColorAlpha(themeForegroundColor,
DEFAULT_DIVIDER_COLOR_ALPHA));
mBottomBorderThickness = (int) (DEFAULT_BOTTOM_BORDER_THICKNESS_DIPS * density);
mBottomBorderPaint = new Paint();
mBottomBorderPaint.setColor(mDefaultBottomBorderColor);
mSelectedIndicatorThickness = (int) (SELECTED_INDICATOR_THICKNESS_DIPS * density);
mSelectedIndicatorPaint = new Paint();
mDividerHeight = DEFAULT_DIVIDER_HEIGHT;
mDividerPaint = new Paint();
mDividerPaint.setStrokeWidth((int) (DEFAULT_DIVIDER_THICKNESS_DIPS * density));
}
private void init() {
setWillNotDraw(false);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(ContextCompat.getColor(getContext(), R.color.accent));
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(10);
}
public GridSpacingItemDecoration(int space, int color) {
this.space = space;
this.color = color;
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(color);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(space * 2);
}
private void init(final Context context, final AttributeSet attrs) {
float defaultPercent = -1;
if (isInEditMode()) {
defaultPercent = 0.6f;
}
do {
final int strokeWdithDefaultValue = (int) (18 * getResources().getDisplayMetrics().density + 0.5f);
if (context == null || attrs == null) {
strokeWidth = strokeWdithDefaultValue;
percent = defaultPercent;
startColor = getResources().getColor(R.color.mpc_start_color);
endColor = getResources().getColor(R.color.mpc_end_color);
defaultColor = getResources().getColor(R.color.mpc_default_color);
break;
}
TypedArray typedArray = null;
try {
typedArray = context.obtainStyledAttributes(attrs, R.styleable.MagicProgressCircle);
percent = typedArray.getFloat(R.styleable.MagicProgressCircle_mpc_percent, defaultPercent);
strokeWidth = (int) typedArray.getDimension(R.styleable.MagicProgressCircle_mpc_stroke_width, strokeWdithDefaultValue);
startColor = typedArray.getColor(R.styleable.MagicProgressCircle_mpc_start_color, getResources().getColor(R.color.mpc_start_color));
endColor = typedArray.getColor(R.styleable.MagicProgressCircle_mpc_end_color, getResources().getColor(R.color.mpc_end_color));
defaultColor = typedArray.getColor(R.styleable.MagicProgressCircle_mpc_default_color, getResources().getColor(R.color.mpc_default_color));
isFootOverHead = typedArray.getBoolean(R.styleable.MagicProgressCircle_mpc_foot_over_head, false);
} finally {
if (typedArray != null) {
typedArray.recycle();
}
}
} while (false);
paint = new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(strokeWidth);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
startPaint = new Paint();
startPaint.setColor(startColor);
startPaint.setAntiAlias(true);
startPaint.setStyle(Paint.Style.FILL);
endPaint = new Paint();
endPaint.setAntiAlias(true);
endPaint.setStyle(Paint.Style.FILL);
refreshDelta();
customColors = new int[]{startColor, percentEndColor, defaultColor, defaultColor};
fullColors = new int[]{startColor, endColor};
emptyColors = new int[]{defaultColor, defaultColor};
customPositions = new float[4];
customPositions[0] = 0;
customPositions[3] = 1;
extremePositions = new float[]{0, 1};
}
@Override
public void renderShape(
Canvas c, IScatterDataSet dataSet,
ViewPortHandler mViewPortHandler, ScatterBuffer buffer, Paint mRenderPaint, final float shapeSize) {
final float shapeHalf = shapeSize / 2f;
final float shapeHoleSizeHalf = Utils.convertDpToPixel(dataSet.getScatterShapeHoleRadius());
final float shapeHoleSize = shapeHoleSizeHalf * 2.f;
final float shapeStrokeSize = (shapeSize - shapeHoleSize) / 2.f;
final float shapeStrokeSizeHalf = shapeStrokeSize / 2.f;
final int shapeHoleColor = dataSet.getScatterShapeHoleColor();
for (int i = 0; i < buffer.size(); i += 2) {
if (!mViewPortHandler.isInBoundsRight(buffer.buffer[i]))
break;
if (!mViewPortHandler.isInBoundsLeft(buffer.buffer[i])
|| !mViewPortHandler.isInBoundsY(buffer.buffer[i + 1]))
continue;
mRenderPaint.setColor(dataSet.getColor(i / 2));
if (shapeSize > 0.0) {
mRenderPaint.setStyle(Paint.Style.STROKE);
mRenderPaint.setStrokeWidth(shapeStrokeSize);
c.drawCircle(
buffer.buffer[i],
buffer.buffer[i + 1],
shapeHoleSizeHalf + shapeStrokeSizeHalf,
mRenderPaint);
if (shapeHoleColor != ColorTemplate.COLOR_NONE) {
mRenderPaint.setStyle(Paint.Style.FILL);
mRenderPaint.setColor(shapeHoleColor);
c.drawCircle(
buffer.buffer[i],
buffer.buffer[i + 1],
shapeHoleSizeHalf,
mRenderPaint);
}
} else {
mRenderPaint.setStyle(Paint.Style.FILL);
c.drawCircle(
buffer.buffer[i],
buffer.buffer[i + 1],
shapeHalf,
mRenderPaint);
}
}
}
/**
* Initializes the {@code Paint} objects with the appropriate styles.
*/
private void initPaints() {
mCirclePaint = new Paint();
mCirclePaint.setAntiAlias(true);
mCirclePaint.setDither(true);
mCirclePaint.setColor(mCircleColor);
mCirclePaint.setStrokeWidth(mCircleStrokeWidth);
mCirclePaint.setStyle(Paint.Style.STROKE);
mCirclePaint.setStrokeJoin(Paint.Join.ROUND);
mCirclePaint.setStrokeCap(Paint.Cap.ROUND);
mCircleFillPaint = new Paint();
mCircleFillPaint.setAntiAlias(true);
mCircleFillPaint.setDither(true);
mCircleFillPaint.setColor(mCircleFillColor);
mCircleFillPaint.setStyle(Paint.Style.FILL);
mCircleProgressPaint = new Paint();
mCircleProgressPaint.setAntiAlias(true);
mCircleProgressPaint.setDither(true);
mCircleProgressPaint.setColor(mCircleProgressColor);
mCircleProgressPaint.setStrokeWidth(mCircleStrokeWidth);
mCircleProgressPaint.setStyle(Paint.Style.STROKE);
mCircleProgressPaint.setStrokeJoin(Paint.Join.ROUND);
mCircleProgressPaint.setStrokeCap(Paint.Cap.ROUND);
mCircleProgressGlowPaint = new Paint();
mCircleProgressGlowPaint.set(mCircleProgressPaint);
mCircleProgressGlowPaint.setMaskFilter(new BlurMaskFilter((5f * DPTOPX_SCALE), BlurMaskFilter.Blur.NORMAL));
mPointerPaint = new Paint();
mPointerPaint.setAntiAlias(true);
mPointerPaint.setDither(true);
mPointerPaint.setStyle(Paint.Style.FILL);
mPointerPaint.setColor(mPointerColor);
mPointerPaint.setStrokeWidth(mPointerRadius);
mPointerHaloPaint = new Paint();
mPointerHaloPaint.set(mPointerPaint);
mPointerHaloPaint.setColor(mPointerHaloColor);
mPointerHaloPaint.setAlpha(mPointerAlpha);
mPointerHaloPaint.setStrokeWidth(mPointerRadius + mPointerHaloWidth);
mPointerHaloBorderPaint = new Paint();
mPointerHaloBorderPaint.set(mPointerPaint);
mPointerHaloBorderPaint.setStrokeWidth(mPointerHaloBorderWidth);
mPointerHaloBorderPaint.setStyle(Paint.Style.STROKE);
}
private void drawGraphWithoutAnimation(GraphCanvasWrapper canvas){
Log.d(TAG, "drawGraphWithoutAnimation");
Paint barGraphRegionPaint = new Paint();
barGraphRegionPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
barGraphRegionPaint.setAntiAlias(true); //text anti alias
barGraphRegionPaint.setFilterBitmap(true); // bitmap anti alias
barGraphRegionPaint.setStrokeWidth(0);
Paint barPercentPaint = new Paint();
barPercentPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
barPercentPaint.setAntiAlias(true);
barPercentPaint.setColor(Color.WHITE);
barPercentPaint.setTextSize(20);
float yBottom = 0;
float yBottomOld = 0;
//x축 반복
for(int i=0; i< mBarGraphVO.getLegendArr().length; i++){
float xLeft = xLength * mBarGraphVO.getIncrementX() * (i+1)/mBarGraphVO.getMaxValueX() - mBarGraphVO.getBarWidth() / 2;
float xRight = xLeft + mBarGraphVO.getBarWidth();
float totalYLength = 0;
for (int j = 0; j < mBarGraphVO.getArrGraph().size(); j++) {
totalYLength += yLength * mBarGraphVO.getArrGraph().get(j).getCoordinateArr()[i]/mBarGraphVO.getMaxValueY();
}
//x축 각 섹션별 반복
for (int j = 0; j < mBarGraphVO.getArrGraph().size(); j++) {
BarGraph graph = mBarGraphVO.getArrGraph().get(j);
yBottomOld = yBottom;
yBottom += yLength * graph.getCoordinateArr()[i]/mBarGraphVO.getMaxValueY();
barGraphRegionPaint.setColor(mBarGraphVO.getArrGraph().get(j).getColor());
canvas.drawRect(xLeft, yBottomOld, xRight, yBottom, barGraphRegionPaint);
int percentage = (int) (((yBottom - yBottomOld)*100)/totalYLength);
if(percentage != 0){
String mark = String.valueOf(percentage)+"%";
barPercentPaint.measureText(mark);
Rect rect = new Rect();
barPercentPaint.getTextBounds(mark, 0, mark.length(), rect);
canvas.drawText(mark, xRight-((xRight-xLeft)/2)-rect.width()/2, yBottom-((yBottom-yBottomOld)/2)-rect.height()/2, barPercentPaint);
}
}
yBottom = 0;
}
}
private SmoothProgressDrawable(Interpolator interpolator,
int sectionsCount,
int separatorLength,
int[] colors,
float strokeWidth,
float speed,
float progressiveStartSpeed,
float progressiveStopSpeed,
boolean reversed,
boolean mirrorMode,
Callbacks callbacks,
boolean progressiveStartActivated,
Drawable backgroundDrawable) {
mRunning = false;
mInterpolator = interpolator;
mSectionsCount = sectionsCount;
mStartSection = 0;
mCurrentSections = mSectionsCount;
mSeparatorLength = separatorLength;
mSpeed = speed;
mProgressiveStartSpeed = progressiveStartSpeed;
mProgressiveStopSpeed = progressiveStopSpeed;
mReversed = reversed;
mColors = colors;
mColorsIndex = 0;
mMirrorMode = mirrorMode;
mFinishing = false;
mBackgroundDrawable = backgroundDrawable;
mStrokeWidth = strokeWidth;
mMaxOffset = 1f / mSectionsCount;
mPaint = new Paint();
mPaint.setStrokeWidth(strokeWidth);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setDither(false);
mPaint.setAntiAlias(false);
mProgressiveStartActivated = progressiveStartActivated;
mCallbacks = callbacks;
}
private void drawGraphWithAnimation(GraphCanvasWrapper canvas){
Log.d(TAG, "drawGraphWithAnimation");
Paint barGraphRegionPaint = new Paint();
barGraphRegionPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
barGraphRegionPaint.setAntiAlias(true); //text anti alias
barGraphRegionPaint.setFilterBitmap(true); // bitmap anti alias
barGraphRegionPaint.setStrokeWidth(0);
// Paint barPercentPaint = new Paint();
// barPercentPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
// barPercentPaint.setAntiAlias(true);
// barPercentPaint.setColor(Color.WHITE);
// barPercentPaint.setTextSize(20);
long curTime = System.currentTimeMillis();
long gapTime = curTime - animStartTime;
long totalAnimDuration = mBarGraphVO.getAnimation().getDuration();
if(gapTime >= totalAnimDuration){
gapTime = totalAnimDuration;
isDirty = false;
}
float yBottomOld = 0;
//x축 반복
for(int i=0; i< mBarGraphVO.getLegendArr().length; i++){
float xLeft = xLength * mBarGraphVO.getIncrementX() * (i+1)/mBarGraphVO.getMaxValueX() - mBarGraphVO.getBarWidth() / 2;
float xRight = xLeft + mBarGraphVO.getBarWidth();
float totalYLength = 0;
for (int j = 0; j < mBarGraphVO.getArrGraph().size(); j++) {
totalYLength += yLength * mBarGraphVO.getArrGraph().get(j).getCoordinateArr()[i]/mBarGraphVO.getMaxValueY();
}
float yGap = (totalYLength / totalAnimDuration) * gapTime;
Log.d(TAG, "yGap = "+yGap);
barGraphRegionPaint.setColor(mBarGraphVO.getArrGraph().get(0).getColor());
canvas.drawRect(xLeft, yBottomOld, xRight, yGap, barGraphRegionPaint);
}
}
public PagerSlidingTabStrip(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setFillViewport(true);
setWillNotDraw(false);
tabsContainer = new LinearLayout(context);
tabsContainer.setOrientation(LinearLayout.HORIZONTAL);
tabsContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
addView(tabsContainer);
DisplayMetrics dm = getResources().getDisplayMetrics();
scrollOffset = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, scrollOffset, dm);
indicatorHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, indicatorHeight, dm);
underlineHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, underlineHeight, dm);
dividerPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerPadding, dm);
tabPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, tabPadding, dm);
dividerWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerWidth, dm);
tabTextSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, tabTextSize, dm);
// get system attrs (android:textSize and android:textColor)
TypedArray a = context.obtainStyledAttributes(attrs, ATTRS);
tabTextSize = a.getDimensionPixelSize(TEXT_SIZE_INDEX, tabTextSize);
ColorStateList colorStateList = a.getColorStateList(TEXT_COLOR_INDEX);
int textPrimaryColor = a.getColor(TEXT_COLOR_PRIMARY, getResources().getColor(android.R.color.white));
if (colorStateList != null) {
tabTextColor = colorStateList;
} else {
tabTextColor = getColorStateList(textPrimaryColor);
}
underlineColor = textPrimaryColor;
dividerColor = textPrimaryColor;
indicatorColor = textPrimaryColor;
int paddingLeft = a.getDimensionPixelSize(PADDING_LEFT_INDEX, padding);
int paddingRight = a.getDimensionPixelSize(PADDING_RIGHT_INDEX, padding);
a.recycle();
//In case we have the padding they must be equal so we take the biggest
padding = Math.max(paddingLeft, paddingRight);
// get custom attrs
a = context.obtainStyledAttributes(attrs, R.styleable.PagerSlidingTabStrip);
indicatorColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsIndicatorColor, indicatorColor);
underlineColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsUnderlineColor, underlineColor);
dividerColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsDividerColor, dividerColor);
dividerWidth = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsDividerWidth, dividerWidth);
indicatorHeight = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsIndicatorHeight, indicatorHeight);
underlineHeight = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsUnderlineHeight, underlineHeight);
dividerPadding = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsDividerPadding, dividerPadding);
tabPadding = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsTabPaddingLeftRight, tabPadding);
tabBackgroundResId = a.getResourceId(R.styleable.PagerSlidingTabStrip_pstsTabBackground, tabBackgroundResId);
shouldExpand = a.getBoolean(R.styleable.PagerSlidingTabStrip_pstsShouldExpand, shouldExpand);
scrollOffset = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsScrollOffset, scrollOffset);
textAllCaps = a.getBoolean(R.styleable.PagerSlidingTabStrip_pstsTextAllCaps, textAllCaps);
isPaddingMiddle = a.getBoolean(R.styleable.PagerSlidingTabStrip_pstsPaddingMiddle, isPaddingMiddle);
tabTypefaceStyle = a.getInt(R.styleable.PagerSlidingTabStrip_pstsTextStyle, Typeface.BOLD);
tabTypefaceSelectedStyle = a.getInt(R.styleable.PagerSlidingTabStrip_pstsTextSelectedStyle, Typeface.BOLD);
tabTextAlpha = a.getFloat(R.styleable.PagerSlidingTabStrip_pstsTextAlpha, HALF_TRANSP);
tabTextSelectedAlpha = a.getFloat(R.styleable.PagerSlidingTabStrip_pstsTextSelectedAlpha, OPAQUE);
a.recycle();
setMarginBottomTabContainer();
rectPaint = new Paint();
rectPaint.setAntiAlias(true);
rectPaint.setStyle(Style.FILL);
dividerPaint = new Paint();
dividerPaint.setAntiAlias(true);
dividerPaint.setStrokeWidth(dividerWidth);
defaultTabLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
expandedTabLayoutParams = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f);
if (locale == null) {
locale = getResources().getConfiguration().locale;
}
}