private void apply(final ViewTemplate<?,?> vt, boolean forced)
{
if(oldWidth!=vt.getWidth() || oldHeight!=vt.getHeight() || forced)
{
oldWidth = vt.getMeasuredWidth();
oldHeight = vt.getMeasuredHeight();
if(circularSides)
{
int rectangleRadius = vt.getHeight()/2;
topLeftRadius = rectangleRadius;
topRightRadius = rectangleRadius;
bottomLeftRadius = rectangleRadius;
bottomRightRadius = rectangleRadius;
leftPadding = rectangleRadius+leftContraction;
rightPadding = rectangleRadius+rightContraction;
}
if(shapeDrawable!=null)
shapeDrawable.setBounds(leftContraction, topContraction, vt.getMeasuredWidth()-rightContraction, vt.getMeasuredHeight()-bottomContraction);
}
vt.setPadding(leftPadding,topPadding,rightPadding,bottomPadding-bottomPaddingCompensationPixels);
if(innerGradient)
{
if(shapeDrawable==null)
innerPaint.setShader(new LinearGradient(0,0,0,vt.getMeasuredHeight(),primaryColor,secondaryColor,Shader.TileMode.CLAMP));
else if(gradientSizingLL!=null)
{
shapeDrawable.setShaderFactory(new ShaderFactory()
{
public Shader resize(int width, int height)
{
int startPos = 0;
for(int i=0; i<gradientSizingLL.getChildCount(); i++)
{
View v = gradientSizingLL.getChildAt(i);
if(v.equals(vt) || v.equals(vt.getParent()))
break;
else
startPos += v.getMeasuredHeight();
}
final double fullSpan = gradientSizingLL.getHeight();
final int startA = (primaryColor >> 24) & 0xFF;
final int endA = (secondaryColor >> 24) & 0xFF;
final int startR = (primaryColor >> 16) & 0xFF;
final int endR = (secondaryColor >> 16) & 0xFF;
final int startG = (primaryColor >> 8) & 0xFF;
final int endG = (secondaryColor >> 8) & 0xFF;
final int startB = (primaryColor >> 0) & 0xFF;
final int endB = (secondaryColor >> 0) & 0xFF;
final int actualA1 = (int)(startA + (endA-startA)*startPos/fullSpan);
final int actualA2 = (int)(startA + (endA-startA)*(startPos+vt.getHeight())/fullSpan);
final int actualR1 = (int)(startR + (endR-startR)*startPos/fullSpan);
final int actualR2 = (int)(startR + (endR-startR)*(startPos+vt.getHeight())/fullSpan);
final int actualG1 = (int)(startG + (endG-startG)*startPos/fullSpan);
final int actualG2 = (int)(startG + (endG-startG)*(startPos+vt.getHeight())/fullSpan);
final int actualB1 = (int)(startB + (endB-startB)*startPos/fullSpan);
final int actualB2 = (int)(startB + (endB-startB)*(startPos+vt.getHeight())/fullSpan);
return new LinearGradient(0,0,0,vt.getHeight(),Color.argb(actualA1,actualR1,actualG1,actualB1),Color.argb(actualA2,actualR2,actualG2,actualB2),Shader.TileMode.CLAMP);
}
});
}
}
vt.applyStyle();
vt.requestLayout();
vt.invalidate();
}
StyleTemplate.java 文件源码
java
阅读 25
收藏 0
点赞 0
评论 0
项目:grouptuity
作者:
评论列表
文章目录