I want to add animation in android text view so that when a text changes it should change smoothly and slowly. Like, fade in or fade out when the text changes. Is it possible in Android using animations? I did so far;
Main Activity
public class MainActivity extends AppCompatActivity {
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
tv = (TextView)findViewById(R.id.textview);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText(String.valueOf(Integer.valueOf((String) tv.getText()) + 1));
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center_horizontal"
tools:context="com.example.namal.smoothtextchange.MainActivity">
<TextView
android:layout_width="wrap_content"
android:id="@+id/textview"
android:textSize="150sp"
android:layout_height="wrap_content"
android:text="0" />
<Button
android:text="Change"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textview"
android:id="@+id/btn" />
</RelativeLayout>
add android:animateLayoutChanges=true to root view , then in code behind
use TextSwitcher
Array of Strings to show in TextSwitcher
You have to set animation
Animation is triggered by calling method setText(CharSequence text)
If you want to set text without animation, call method setCurrentText(CharSequence text).
Use this in
onCreate()
, before change text in your textview:The easiest way to do this is:
Now, your text should change slowly and nicely
You can use TranslateAnimation
You can check below links for demo case
If you want to support Android 4+. check out the Transitions Everywhere lib. You can achieve all sorts of different animations with backward compatibility.
Here you can find some examples.
Just a few lines and you are good to go!
Now all you have to do is change the text and all the magic is done for you.