android文字轮播——ViewAnimator实现

来源:互联网 发布:程序员的自我修养目录 编辑:程序博客网 时间:2024/06/06 05:05

android文字轮播——ViewAnimator实现

类似图片轮播的功能,一般使用的时候都是使用自动的广告提示,或者通知提醒,比如淘宝app中的“淘宝头条”。现在就进行制作。
首先需要定义动画,包括文字进入和退出的效果。然后就是自动执行轮播。还是采用handler配合message的方式。下面是主要代码:
1、首先,布局文件:
<?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:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.administrator.animator.MainActivity">    <Button        android:id="@+id/btn_previous"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true"        android:text="上一个" />    <Button        android:id="@+id/btn_auto"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:text="自动播放" />    <Button        android:id="@+id/btn_next"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:layout_alignParentTop="true"        android:text="下一个" />    <ViewAnimator        android:id="@+id/animator"        android:layout_width="match_parent"        android:layout_height="200dp"        android:layout_alignParentBottom="true"        android:layout_marginBottom="10dp">        <TextView            android:id="@+id/text1"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center"            android:text="欢迎"            android:textColor="#f0f"            android:textSize="80sp" />        <TextView            android:id="@+id/text2"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center"            android:text="测试"            android:textColor="#f0f"            android:textSize="80sp" />        <TextView            android:id="@+id/text3"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center"            android:text="本程序"            android:textColor="#f0f"            android:textSize="80sp" />        <TextView            android:id="@+id/text4"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center"            android:text="!!!!!"            android:textColor="#f0f"            android:textSize="80sp" />        <TextView            android:id="@+id/text5"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:gravity="center"            android:text="hello,world"            android:textColor="#f0f"            android:textSize="80sp" />    </ViewAnimator></RelativeLayout>


2、然后需要四个动画效果:

slide_in_down.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromYDelta="100%"        android:toYDelta="0"></translate></set>

slide_in_up.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromYDelta="-100%"        android:toYDelta="0"></translate></set>

slide_out_down.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromYDelta="0"        android:toYDelta="100%"></translate></set>

slide_out_up.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="@android:integer/config_mediumAnimTime"        android:fromYDelta="0"        android:toYDelta="-100%"></translate></set>

3、MainActivity.java
package com.example.administrator.animator;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ViewAnimator;public class MainActivity extends AppCompatActivity {    private final String TAG = MainActivity.class.getSimpleName();    private final long TIME_INTERVAL = 4000L;    private ViewAnimator viewAnimator;    private Button buttonNext;    private Button buttonPrevious;    private Button buttonAuto;    private boolean autoPlayFlag = false;    Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if(autoPlayFlag){                showNext();            }            handler.sendMessageDelayed(new Message(),TIME_INTERVAL);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewAnimator = (ViewAnimator) this.findViewById(R.id.animator);        buttonNext = (Button) this.findViewById(R.id.btn_next);        buttonPrevious = (Button) this.findViewById(R.id.btn_previous);        buttonAuto = (Button) this.findViewById(R.id.btn_auto);        handler.sendMessageDelayed(new Message(),TIME_INTERVAL);        buttonNext.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                showNext();            }        });        buttonPrevious.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                showPrevious();            }        });        buttonAuto.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                autoPlayFlag = true;            }        });    }    public void showNext(){        viewAnimator.setOutAnimation(this,R.anim.slide_out_up);        viewAnimator.setInAnimation(this,R.anim.slide_in_down);        viewAnimator.showNext();    }    public void showPrevious(){        viewAnimator.setOutAnimation(this,R.anim.slide_out_down);        viewAnimator.setInAnimation(this,R.anim.slide_in_up);        viewAnimator.showPrevious();    }}

运行效果:

说明一下,这个点击下一个会一次进行显示下一个。点击自动以后就能够自动播放了。文字轮播不像图片轮播,需要来回的切换,一般就直接进行显示就可以了。
0 0
原创粉丝点击