欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android基于ViewFilpper实现文字LED显示效果示例

程序员文章站 2023-11-28 23:45:46
本文实例讲述了android基于viewfilpper实现文字led显示效果。分享给大家供大家参考,具体如下: 这里给出来自android官方api demo中动画效果实...

本文实例讲述了android基于viewfilpper实现文字led显示效果。分享给大家供大家参考,具体如下:

这里给出来自android官方api demo中动画效果实例。

/**
 * flipperview文字效果动画之:文字滚动动画
 *
 * @description:
 * @author ldm
 * @date 2016-5-17 上午9:58:26
 */
public class animation2 extends activity implements
    adapterview.onitemselectedlistener {
  // spinner数据源
  private string[] mstrings = { "push up", "push left", "cross fade",
      "hyperspace" };
  // 控件viewflipper
  private viewflipper mflipper;
  @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.animation_2);
    // 初始化ui控件
    initviews();
  }
  private void initviews() {
    mflipper = ((viewflipper) this.findviewbyid(r.id.flipper));
    mflipper.startflipping();
    spinner s = (spinner) findviewbyid(r.id.spinner);
    arrayadapter<string> adapter = new arrayadapter<string>(this,
        android.r.layout.simple_spinner_item, mstrings);
    // 定义spinner下拉菜单模式
    adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);
    // 设置数据
    s.setadapter(adapter);
    // 添加监听
    s.setonitemselectedlistener(this);
  }
  /**
   * spinner的item选择监听事件处理
   */
  @override
  public void onitemselected(adapterview<?> parent, view v, int position,
      long id) {
    switch (position) {
    case 0:// 文字从下进入,从上移出,伴随透明度变化
      mflipper.setinanimation(animationutils.loadanimation(this,
          r.anim.push_up_in));
      mflipper.setoutanimation(animationutils.loadanimation(this,
          r.anim.push_up_out));
      break;
    case 1:// 文字从右侧向左进入,从右侧移出,伴随透明度变化
      mflipper.setinanimation(animationutils.loadanimation(this,
          r.anim.push_left_in));
      mflipper.setoutanimation(animationutils.loadanimation(this,
          r.anim.push_left_out));
      break;
    case 2:// 文字透明度改变,从0-1-0
      mflipper.setinanimation(animationutils.loadanimation(this,
          android.r.anim.fade_in));
      mflipper.setoutanimation(animationutils.loadanimation(this,
          android.r.anim.fade_out));
      break;
    default:// 多维空间动画(复合动画效果)
      mflipper.setinanimation(animationutils.loadanimation(this,
          r.anim.hyperspace_in));
      mflipper.setoutanimation(animationutils.loadanimation(this,
          r.anim.hyperspace_out));
      break;
    }
  }
  @override
  public void onnothingselected(adapterview<?> parent) {
    // todo auto-generated method stub
    // do nothing
  }
}

布局文件,textview中添加自己想显示的文字

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:padding="10dip" >
  <viewflipper
    android:id="@+id/flipper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginbottom="20dip"
    android:flipinterval="2000" >
    <textview
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center_horizontal"
      android:text="@string/animation_2_text_1"
      android:textsize="26sp" />
    <textview
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center_horizontal"
      android:text="@string/animation_2_text_2"
      android:textsize="26sp" />
    <textview
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center_horizontal"
      android:text="@string/animation_2_text_3"
      android:textsize="26sp" />
    <textview
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center_horizontal"
      android:text="@string/animation_2_text_4"
      android:textsize="26sp" />
  </viewflipper>
  <textview
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginbottom="5dip"
    android:text="@string/animation_2_instructions" />
  <spinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</linearlayout>

动画文件res/anim文件夹下

1. push_up_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
    android:duration="300"<!--动画时长-->
    android:fromydelta="100%p"<!--y方向初始位置-->
    android:toydelta="0" /><!--y方向动画结束位置-->
  <alpha
    android:duration="300"
    android:fromalpha="0.0"<!--初始透明度-->
    android:toalpha="1.0" /><!--动画结束时透明度-->
</set>

2. push_up_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
    android:duration="300"
    android:fromydelta="0"
    android:toydelta="-100%p" />
  <alpha
    android:duration="300"
    android:fromalpha="1.0"
    android:toalpha="0.0" />
</set>

3. push_left_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
    android:duration="300"
    android:fromxdelta="100%p"
    android:toxdelta="0" />
  <alpha
    android:duration="300"
    android:fromalpha="0.0"
    android:toalpha="1.0" />
</set>

4. push_left_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
    android:duration="300"
    android:fromxdelta="0"
    android:toxdelta="-100%p" />
  <alpha
    android:duration="300"
    android:fromalpha="1.0"
    android:toalpha="0.0" />
</set>

5. fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
  android:duration="@android:integer/config_longanimtime"
  android:fromalpha="0.0"
  android:interpolator="@interpolator/decelerate_quad"
  android:toalpha="1.0" />

6. fade_out.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
  android:duration="@android:integer/config_mediumanimtime"
  android:fromalpha="1.0"
  android:interpolator="@interpolator/accelerate_quad"<!--设置动画插值器-->
  android:toalpha="0.0" />

7. hyperspace_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
  android:duration="300"
  android:fromalpha="0.0"
  android:startoffset="1200"<!--设置启动时间-->
  android:toalpha="1.0" />

8. hyperspace_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareinterpolator="false" >
  <scale
    android:duration="700"
    android:fillafter="false"<!--动画结束画面是否停留在最后一帧-->
    android:fillenabled="true"<!--使能填充效果-->
    android:fromxscale="1.0"<!--x方向起始缩放值-->
    android:fromyscale="1.0"<!--y方向起始缩放值-->
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:pivotx="50%"<!--动画相对于物件的x、y坐标的开始位置-->
    android:pivoty="50%"
    android:toxscale="1.4"
    android:toyscale="0.6" />
  <set android:interpolator="@android:anim/accelerate_interpolator" >
    <scale<!--缩放动画-->
      android:duration="400"
      android:fillafter="true"
      android:fillbefore="false"
      android:fillenabled="true"
      android:fromxscale="1.4"
      android:fromyscale="0.6"
      android:pivotx="50%"
      android:pivoty="50%"
      android:startoffset="700"
      android:toxscale="0.0"
      android:toyscale="0.0" />
    <rotate<!--旋转动画-->
      android:duration="400"
      android:fillafter="true"
      android:fillbefore="false"
      android:fillenabled="true"
      android:fromdegrees="0"
      android:pivotx="50%"
      android:pivoty="50%"
      android:startoffset="700"
      android:todegrees="-45"
      android:toyscale="0.0" />
  </set>
</set>

附开源代码:https://github.com/ldm520/android_api_demos

更多关于android相关内容感兴趣的读者可查看本站专题:《android开发动画技巧汇总》、《android开发入门与进阶教程》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。