今天记录一下我学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>
加入了一个文本视图(屏幕居中)和一个控制按钮(放置在屏幕底部)
(这里的工作是创建动画配置文件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、输入一个有效的号码
阅读(1600) | 评论(0) | 转发(0) |