android开发
多页面
多页面我们通常采用注册来跳转
1.创建layout文件
前面说过了 ,我们先把页面都放在res/layout
里,也就是创建的acticity的xml文件
2.创建java文件并创建class继承Activity
在app/java
文件夹下创建一个newpage1.java
文件
继承Activity并重写onCreate
方法
public class newpage1 extends Activity {
//重写onCreate() 方法,绑定layout页面
//new_activity 为创建在res/layout下的xml页面
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_activity);
}
}
3.绑定activity
我们在AndroidMainfest.xml
文件中进行新页面的注册(绑定)
<!-- 注册活动窗口 -->
<!-- activity绑定java (newpage1 就是创建在java文件夹下的newpage1.java) -->
<activity android:name=".newpage1"></activity>
动画
什么是动画
动画:随着时间变化的图像(页面)
实际Android里有两种动画:
- Property Animation(属性动画)
- View Animation(视图动画)
属性动画
如何添加属性动画
一个动画定义在res/animator/filename.xml
(filename
将作为资源唯一的ID来使用)中在指定的时间来修改目标属性例如背景颜色
该xml动画文件中可能包含单独的<set>
、 <objectAnimator>
或者 <animator>
,也可以是<set>
标签包裹<set>
、 <objectAnimator>
或者 <animator>
其中的一个或者多个。
<set>
属性变化的集合
包含<set>
、 <objectAnimator>
或者 <valueAnimator>
其中的一个或者多个。
<objectAnimator>
不能在动画xml文件中来设置要设置动画的对象。
只能通过setTarget()
提前设置和loadAnimator()
加载
包含<animator>
可以设置的所有属性
<animator>
简单地在指定的时间去执行一个动画。
基本语法
<set
android:ordering=["together" | "sequentially"]>
<objectAnimator
android:propertyName="string"
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>
<animator
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>
<set>
<animator
android:duration="int"
android:valueFrom="float | int | color"
android:valueTo="float | int | color"
android:startOffset="int"
android:repeatCount="int"
android:repeatMode=["repeat" | "reverse"]
android:valueType=["intType" | "floatType"]/>
</set>
</set>
android:ordering 指定动画的播放模式
- sequentially :循环播放
- together :同时播放(默认)
android:propertyName
string 类型
这个属性是必须要有的,它指定了要变化的对象的属性名
例如
“alpha”
“background”
android:duration
int 类型
指定动画持续的时间
单位为毫秒,默认是300毫秒,也就是3秒
android:valueFrom
int 类型、float 类型 或者是color 类型
这个属性不是必须要有的,指定了动画在属性值是多少的适合开始,如果不指定,默认是属性加载完成后就开始
color 类型是六位十六进制的数字来表示
android:valueTo
int 类型、float 类型 或者是color 类型
这个属性是必须要有的,
color 类型是六位十六进制的数字来表示
android:startOffset
int 类型
指定动画延迟时间,延迟后调用 start() 方法
android:repeatCount
int 类型
指定了动画的重复次数
- -1 :无限重复
- 0 :不重复
- 正整数 :重复该正整数次
android:repeatMode
设置动画在循环结束时 下个动画开始的方式
android:repeatCount 的值要为-1或者正整数 ,android:repeatMode 才能生效
- repeat : 动画从上次动画的正方向开始重复播放
- reverse : 动画从上次动画的反方向开始重复播放
android:valueType
如果这个值为color 类型 不要指定这个属性, animation 自动处理 color类型
inttype :指定动画值是整数
floatType(默认) :指定动画值是浮点数
视图动画
视图渐变动画,使用像动画的起点、终点、大小、旋转的数据等来让视图发生变化来形成动画。
两种视图动画框架
- 渐变动画 :一个单独的图像或者视图上通过执行一系列指定转换形成一个动画
- 帧动画 :通过显示一系列的图像来形成动画的效果
如何添加视图动画
我们可以在视图页面来定义动画,但是这是不被提倡的,官网文档提倡新建一个xml文档来防止动画所需的数据。
xml中定义了要发生的变换、何时发生以及应用这些变换所需的时间。转换可以是顺序的,也可以是同时的——例如,可以让文本视图的内容从左向右移动,然后旋转180度,或者可以同时移动和旋转文本。每个变换都会获取一组特定于该变换的参数(大小更改的起始大小和结束大小、旋转的起始角度和结束角度等等),以及一组公用参数(例如,开始时间和持续时间)。要使多个转换同时发生,请给它们相同的开始时间;要使它们连续,请计算开始时间加上前面转换的持续时间。
动画XML文件在Android项目的res/anim/目录中。
动画xml文件中可能包含单独的<alpha>
、<scale>
、<translate>
、<rotate>
、<set>
,也可以是<set>
标签包裹<alpha>
、<scale>
、<translate>
、<rotate>
、<set>
其中的一个或者多个。
默认情况下,会同时应用所有动画,如果要按顺序发生,必须指定startOffset属性。
<alpha>
改变视图透明度,可以做到渐入渐出的效果
<scale>
改变视图的缩放比例,来对视图进行缩放
<translate>
改变视图的位置,来对视图进行平移
<rotate>
改变视图的角度,来对视图进行旋转
<set>
渐变动画的集合
包含<alpha>
、<scale>
、<translate>
、<rotate>
、<set>
其中的一个或者多个。
基本语法
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@[package:]anim/interpolator_resource"
android:shareInterpolator=["true" | "false"] >
<alpha
android:fromAlpha="float"
android:toAlpha="float" />
<scale
android:fromXScale="float"
android:toXScale="float"
android:fromYScale="float"
android:toYScale="float"
android:pivotX="float"
android:pivotY="float" />
<translate
android:fromXDelta="float"
android:toXDelta="float"
android:fromYDelta="float"
android:toYDelta="float" />
<rotate
android:fromDegrees="float"
android:toDegrees="float"
android:pivotX="float"
android:pivotY="float" />
<set>
...
</set>
</set>
android:interpolator
用于指定interpolator(插入器)资源,可以设置该属性会调用默认的interpolator(插入器)
android:shareInterpolator
boolean 类型
设置是否共享interpolator(插入器)资源
android:fromAlpha
float 类型
动画开始的不透明度
1.0 : 不透明
0.0 : 全透明
取0.0-1.0 其中的一个值,大小决定了透明程度,值越大不透明度越高,反之,值越小透明度越高
android:toAlpha
float 类型
动画结束的不透明度
1.0 : 不透明
0.0 : 全透明
取0.0-1.0 其中的一个值,大小决定了透明程度,值越大不透明度越高,反之,值越小透明度越高
android:fromXScale
float 类型
动画开始时X轴方向上的缩放比例
android:toXScale
float 类型
动画结束时X轴方向上的缩放比例
android:fromYScale
float 类型
动画开始时Y轴方向上的缩放比例
android:toYScale
float 类型
动画结束时Y轴方向上的缩放比例
android:pivotX
float 类型
沿着x轴缩放比例
android:pivotY
float 类型
沿着x轴缩放比例
android:fromXDelta
float 类型 或者 百分比
起始点X轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”
android:toXDelta
float 类型 或者 百分比
结束点X轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”
android:fromYDelta
float 类型 或者 百分比
起始点Y轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”
android:toYDelta
float 类型 或者 百分比
结束点Y轴坐标,以原始的view 为基础 ,如果想以父元素的位置为基础在百分比的后面加上p 例如 “50%p”
android:fromDegrees
float 类型
初始的角度,正数代表顺时针,负数代表逆时针
android:toDegrees
float 类型
结束的角度,正数代表顺时针,负数代表逆时针
作为startAnimation() 的替代方法,可以使用setStartTime() :定义动画的开始时间,使用setAnimation() :将动画指定给视图视图