Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中随时间改变lineargradient的浮点属性_Java_Android - Fatal编程技术网

Java 在android中随时间改变lineargradient的浮点属性

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

我想随时间更改“lineargradient”的float属性,其中lineargradient应用于textview(即设置渐变动画),因此我在onCreate()类中创建了一个处理程序。 处理程序如下所示

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