Como alterar programaticamente "x-delta" de uma instância de animação?

Boober Bunz:

Vamos dizer que queremos uma animação que horizontalmente "shakes" uma visão.

Fazemos algo parecido com isto:

Java:

private void shakeView(final View v) {

        v.clearAnimation();

        Animation animShake = AnimationUtils.loadAnimation(this, R.anim.shake);

        v.startAnimation(animShake); 
}

xml:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="60"
        android:fromXDelta="-20"
        android:toXDelta="20"
        android:repeatCount="14"
        android:repeatMode="reverse"
        android:interpolator="@android:anim/linear_interpolator" />
</set>

No entanto, devido ao fato de que estamos rigidamente meticuloso, percebemos que a "distância agitação" que é definido no xml é uma distância estática interpretado no dp / pixels e, portanto, será diferente em diferentes dispositivos - em dispositivos de alta resolução, o movimento será sutil ... como uma escova de dentes elétrica, mas em dispositivos de baixa resolução, o movimento será drástica como um daqueles batendo bonecas blowup para um monte de carros usados.

Seria muito melhor para expressar o "x-delta" como uma proporção da largura da vista:

float ratio = 14f/392f;
float valueOfXTranslation = ratio*v.getWidth();

Mas ..., a fim de fazer isso, teríamos de ser capaz de definir o "x-delta" no código ... e não vejo nenhuma maneira de fazer isso.

Tentei digitar "animShake." - "dot" - e olhando para as opções disponíveis ... e, embora existam algumas setters, nenhum deles parecem permitir definir o "x-delta." Acho que eu deveria simplesmente desistir e tentar abordagem completamente diferente usando alguma outra técnica de animação, mas eu simplesmente não posso acreditar que isso não seria possível.

É possível alterar programaticamente o "x-delta" de uma instância de animação?

worthless:

É possível utilizar opcional% p em XML para controlar a quantidade de movimento em relação ao tamanho de pai. Gostar:

android:fromXDelta="-5%p"
android:toXDelta="5%p"

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=210176&siteId=1
Recomendado
Clasificación