Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9145656
  • 博文数量: 1725
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19840
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1725)

文章存档

2024年(1)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: LINUX

2010-01-19 10:22:47

今天记录一下我学Android 的动画设计实验,处理的对象是一个文本字符串。

Ready, Go!

Step1 界面布局:依然是layout/main.xml
xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
  <TextView    
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:id="@+id/text"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />
  <Button
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/rotate"
  android:text="Rotate"
  android:layout_alignParentBottom="true"
  >
  Button>
RelativeLayout>

加入了一个文本视图(屏幕居中)和一个控制按钮(放置在屏幕底部)

另外一个重要的工作时加入一个创建动画属性配置文件,从网上搞到一个牛人的配置文件,很详细,贴一下http://blog.csdn.net/zhqingyun163/archive/2009/11/05/4770068.aspx
(这里的工作是创建动画配置文件ani_rotate.xml,创建位位置:res文件夹下创建anim/ani_rotate.xml)

xml version="1.0" encoding="utf-8"?>
<set xmlns:android="">
            
            
        <alpha    
                android:fromAlpha="0.1"    
                android:toAlpha="1.0"    
                android:duration="3000"    
        />    
                    
            
        <scale    
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"    
                android:repeatCount="1"    
                    
                android:fromXScale="0.5"    
                android:fromYScale="0.5"    
                android:toXScale="1.4"                
                android:toYScale="1.4"    
                android:pivotX="50%"    
                android:pivotY="50%"    
                android:fillAfter="false"    
                android:duration="3000"    
                    
        />    
            
            
        <translate    
                android:repeatCount="2"    
                android:fromXDelta="-30"    
                android:fromYDelta="-30"    
                android:toXDelta="-80"                
                android:toYDelta="200"    
                android:duration="3000"    
        />    
            
        <rotate    
                android:interpolator="@android:anim/accelerate_interpolator"    
                android:repeatCount="2"    
                android:fromDegrees="0"    
                android:toDegrees="+270"    
                android:pivotX="50%"    
                android:pivotY="50%"    
                android:duration="3000"    
        />
set>

Step 2 Java控制代码:
package com.penguin7.animationtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;

public class AnimationTest extends Activity implements OnClickListener{
  private Button bntRotate = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //获取按键资源
    bntRotate = (Button) findViewById(R.id.rotate);
    //启动按键监听
    bntRotate.setOnClickListener(this);
  }
  
  @Override
  public void onClick(View v){
    //定义动画属性
    Animation ani = AnimationUtils.loadAnimation(this, R.anim.ani_rotate);
    //启动动画
    findViewById(R.id.text).startAnimation(ani);
  }

}

Step 3 看看效果:
启动画面:
动画截屏:


今天学习到一个比较好的API类——Toast(一种为用户快速提醒信息的一种机制),结合一个拨电话的程序顺便还能温习一下Intent类,一举两得,顺便做个笔录。
这两天才了解的一个Android另外一个优点就是大家可以调用已有的程序,完成更强大的程序功能。比如说这个实验可以完成对Gphone Dialer的调用,虽然做法有些土鳖,主要是用来学习知识也不错。
今天的工作有创建一个输入框用来输入要拨打的电话号码,借助PhoneNumberUtils.isGlobalPhoneNumber方法校 验一下输入的号码是否正确,如果正确启动Dialer完成拨打电话的工作,如果输入的电话号码不符合常规的号码格式,使用Toast类的MakeText 方法为用户做出一个简单的提示“号码无效,请从新输入”。
不废话,直接三部曲开工。
Step1:界面框架布局设置main.xml
xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <EditText
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:hint="Please input the phone number you want to dial here"
          android:id="@+id/dial_input"
          >
        EditText>
  <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/dial_btn"
    android:id="@+id/dial_btn"
    >
  Button>
LinearLayout>
和string.xml
xml version="1.0" encoding="utf-8"?>
<resources>
        <string name="dial_btn">Dial!string>
        <string name="app_name">PhoneDialstring>
resources>
Step: Java代码
package com.penguin7.phonedial;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneNumberUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class PhoneDial extends Activity {
  private Button btnDial = null;
  private EditText et = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //文本编辑变量,用于接收视图EditText获取的号码
    et = (EditText) findViewById(R.id.dial_input);
    //启动Dialer程序Button变量
    btnDial = (Button) findViewById(R.id.dial_btn);
    btnDial.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        String phoneNum = et.getText().toString();
        //isGlobalPhoneNumber方法用来检验输入的串是否是有效的号码
        if (PhoneNumberUtils.isGlobalPhoneNumber(phoneNum)) {
          //有效地电话号码,启动Dialer程序(用宏ACTION_DIAL来标示)
          //Intent传递号码信息需要从字符串转化为URI变量,
          //并以tel://起头
          Intent iDial = new Intent(Intent.ACTION_DIAL, Uri
              .parse("tel://" + phoneNum));
          //启动Dialer程序
          startActivity(iDial);
        } else {
          //无效的号码,提示用户输入错误
          Toast.makeText(PhoneDial.this,
              "not a valid number, please have a check",
              Toast.LENGTH_LONG).show();
        }
      }
    });
  }
}
Step3:看看效果
1、输入无效的号码
      
 
2、输入一个有效的号码
      


阅读(1563) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~