Hum*_*mty 12 animation android
我想在android文本视图中添加动画,这样当文本发生变化时,它应该平滑而缓慢地变化.喜欢,当文本改变时淡入或淡出.在Android中使用动画是否可行?我到目前为止;
主要活动
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));
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
Yan*_*eph 18
这是我对 fadOut fadIn 的新文本的扩展。
// TextViewExtensions
fun TextView.setTextAnimation(text: String, duration: Long = 300, completion: (() -> Unit)? = null) {
fadOutAnimation(duration) {
this.text = text
fadInAnimation(duration) {
completion?.let {
it()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
// ViewExtensions
fun View.fadOutAnimation(duration: Long = 300, visibility: Int = View.INVISIBLE, completion: (() -> Unit)? = null) {
animate()
.alpha(0f)
.setDuration(duration)
.withEndAction {
this.visibility = visibility
completion?.let {
it()
}
}
}
fun View.fadInAnimation(duration: Long = 300, completion: (() -> Unit)? = null) {
alpha = 0f
visibility = View.VISIBLE
animate()
.alpha(1f)
.setDuration(duration)
.withEndAction {
completion?.let {
it()
}
}
}
Run Code Online (Sandbox Code Playgroud)
文本视图。setTextWithAnimation("你好世界", 500)
Sal*_*azi 16
使用TextSwitcher
<TextSwitcher
android:layout_marginTop="50dp"
android:id="@+id/textSwitcher"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextSwitcher/>
Run Code Online (Sandbox Code Playgroud)
要在TextSwitcher中显示的字符串数组
String textToShow[] = {"Main HeadLine", "Your Message", "New In Technology"};
Run Code Online (Sandbox Code Playgroud)
你必须设置动画
mSwitcher.setInAnimation(context, android.R.anim.slide_in_left);
mSwitcher.setOutAnimation(context, android.R.anim.slide_out_right);
Run Code Online (Sandbox Code Playgroud)
通过调用方法setText(CharSequence文本)触发动画
// When clicked on Button TextSwitcher will switch between texts
btnNext.setOnClickListener(new View.OnClickListener() {
public void onClick (View v) {
currentIndex++;
// If index reaches maximum reset it
if (currentIndex == messageCount) {
currentIndex = 0;
}
mSwitcher.setText(textToShow[currentIndex]);
}):
Run Code Online (Sandbox Code Playgroud)
如果要设置不带动画的文本,请调用方法setCurrentText(CharSequence text).
如果您想支持Android 4+。请查看Transitions Everywhere库。您可以实现向后兼容的各种不同动画。
在这里您可以找到一些示例。
只需几行,您就可以开始了!
TransitionManager.beginDelayedTransition(transitionsContainer,
new ChangeText().setChangeBehavior(ChangeText.CHANGE_BEHAVIOR_OUT_IN));
Run Code Online (Sandbox Code Playgroud)
现在您要做的就是更改文本,所有的魔术都为您完成。
您可以使用TranslateAnimation
控制对象位置的动画。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TranslateAnimation animObj= new TranslateAnimation(0,tv.getWidth(), 0, 0);
animObj.setDuration(2000);
tv.startAnimation(animObj);
tv.setText(String.valueOf(Integer.valueOf((String) tv.getText()) + 1));
}
});
Run Code Online (Sandbox Code Playgroud)
您可以查看以下链接以获取演示案例
添加 android:animateLayoutChanges=true 到 root view ,然后在代码后面
call this line of code at onCreate
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
((ViewGroup) findViewById(R.id.llRoot)).getLayoutTransition()
.enableTransitionType(LayoutTransition.CHANGING);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21617 次 |
| 最近记录: |