Java 在android中随时间改变lineargradient的浮点属性
我想随时间更改“lineargradient”的float属性,其中lineargradient应用于textview(即设置渐变动画),因此我在onCreate()类中创建了一个处理程序。 处理程序如下所示Java 在android中随时间改变lineargradient的浮点属性,java,android,Java,Android,我想随时间更改“lineargradient”的float属性,其中lineargradient应用于textview(即设置渐变动画),因此我在onCreate()类中创建了一个处理程序。 处理程序如下所示 TextView textDisplay; TextView textCounter; Shader shaderGradient; int counter = 0; int finalCounter = 0; final Handler styleHandler = new Handl
TextView textDisplay;
TextView textCounter;
Shader shaderGradient;
int counter = 0;
int finalCounter = 0;
final Handler styleHandler = new Handler();
Runnable runStyle = new Runnable(){
public void run(){
if(counter<=260){
textCounter.setText("" + counter);
String finalString = textCounter.getText().toString();
if(finalString.matches("\\d+")){
finalCounter = Integer.parseInt(finalString);
}
int x0coordinate = finalCounter - 20;
int x1coordinate = x0coordinate + 20;
shaderGradient = new LinearGradient(x0coordinate, 0, x1coordinate, 0, new int[] {Color.parseColor("#ff000000"), Color.parseColor("#ffffffff"), Color.parseColor("#ff000000")}, new float[]{0,1,1}, TileMode.CLAMP);
textDisplay.getPaint().setShader(shaderGradient);
counter++;
} else{
counter = 0;
}
styleHandler.postDelayed(this, 100);
}
};
styleHandler.postDelayed(runStyle, 100);
TextView文本显示;
文本视图文本计数器;
着色器shaderGradient;
int计数器=0;
int finalCounter=0;
final Handler styleHandler=new Handler();
Runnable runStyle=new Runnable(){
公开募捐{
如果(counter我想,设置一个fps,每秒帧数,这可能是因为你的线程运行太快了,也就是说,每个帧中都有counter++
睡一觉。显然不是你:p,
它只是在计数器中的任何增量之前添加睡眠
Thread.sleep(10);
counter++;
这将把你的动画设置为100fps,即1000/10。同样,对于25fps,设置Thread.sleep(40);…至少尝试一下。希望可以:)使用postDelayed(这个,100)
你有一个10fps动画。通常,平滑动画至少使用24fps。因此,尝试将延迟更改为postDelayed>(这是1000/24)
您将获得24fps