您的位置:首页 > 移动开发 > Android开发

AndroidBasic————Animotion

2016-04-18 00:14 489 查看

1.menu菜单 了解

1.将菜单资源加载给Menu对象做展示
a.复写onCreateOptionsMenu方法
b。创建一个菜单资源

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_goon"
android:orderInCategory="300"
android:title="前进"/>
</menu>
c。在onCreateOptionsMenu方法中使用菜单填充器将菜单资源添加给menu做展示
//当Activity创建时,会被调用,用来初始化当前Activity的菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//使用菜单填充器,将一个菜单资源填充给Menu对象   两个参数:菜单资源的id  ,menu对象
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
d.要想为菜单项设置点击事件需要复写一个方法onMenuItemSelected,并获取选中的菜单项的id做比较

2.在onCreateOptionsMenu方法中动态的向menu对象中添加菜单项
//groupId:菜单的分组id  itemId:菜单项的id  order:该菜单的顺序,  title:菜单的名称
menu.add(0, 1, 1, "前进");
menu.add(0, 2, 2, "后退");
menu.add(0, 3, 3, "刷新");

3.当需要自定义菜单时,我们可以复写onMenuOpened方法,将返回结果变成false,就不会再去调用系统中的菜单,我们可以在该方法中做我们自己想做的事。

2.AutoCompleteTextView控件的使用 掌握

使用方式类似于listview;completionThreshold可以控制输入几个字符进行提示;默认输入2个字符才会进行提示

//1.找控件
AutoCompleteTextView act_city = (AutoCompleteTextView) findViewById(R.id.act_city);

//2.创建ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, citys);

//3.将adapter设置给AutoCompleteTextView
act_city.setAdapter(adapter);

3.帧动画 Drawable 掌握

1.在res的drawable目录下创建一个xml文件,并设置一个根节点:animation-list ;该节点中可以配置一个oneshot属性来决定动画是否只执行一次
oneshot:true 执行一次动画

2.为animation-list添加动画的一个一个帧的图片,用item节点标示。item可以用来指定该帧的图片及该帧所播放的事件
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/girl_1"
android:duration="200"/>
<item
android:drawable="@drawable/girl_2"
android:duration="200"/>
</animation-list >

3.为imageview控件设置一个动画背景资源
iv_animation.setBackgroundResource(R.drawable.drawableanimation);
4.通过iv获取一个背景对象,并强转成AnimationDrawable 动画对象
AnimationDrawable ani = (AnimationDrawable) iv_animation.getBackground();
5.开启动画
ani.start();

4.补间动画 view动画 掌握

补间动画的动画效果不会改变控件的实际位置;

1.透明动画  AlphaAnimation

//1.创建一个透明动画的对象  fromAlpha:动画开始开始透明度   toAlpha:动画结束时的透明度
//取值是0-1  0代表完全透明 1完全不透明
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
//2.设置动画的展示时长
alphaAnimation.setDuration(2000);
//3.设置让动画能够重复执行
alphaAnimation.setRepeatCount(1);
//4.设置动画重复执行的模式  REVERSE:反转模式
alphaAnimation.setRepeatMode(Animation.REVERSE);
//5.使用Imageview对象去开启该动画
iv_animation.startAnimation(alphaAnimation);

2.旋转动画 RotateAnimation

//1.创建一个旋转动画  fromDegrees:开始旋转的角度  toDegrees:旋转的结束角度
//pivotXType:x轴相对于谁进行旋转 可以相对于自己,也可以相对于父控件  pivotXValue: 相对于自己x轴的多少倍进行旋转,慎用整数
RotateAnimation rotateAnimation=    new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

3.缩放动画  ScaleAnimation

//1.创建一个缩放动画  fromX:x轴的坐标点从多少倍开始放大  toX:x轴的坐标放大到多少倍
//pivotXType:x轴相对于谁进行旋转 可以相对于自己,也可以相对于父控件  pivotXValue: 相对于自己x轴的多少倍进行旋转,慎用整数
ScaleAnimation scaleAnimation = new ScaleAnimation(1, 2, 1, 2, Animation.RELATIVE_TO_SELF, 0.5F, Animation.RELATIVE_TO_SELF, 0.5F);

4.位移动画  TranslateAnimation

//1. 创建一个位移动画
//fromXType:动画起点x轴相对谁进行移动   fromXValue:x轴坐标点从当前坐标点的多少倍的位置开始移动   toYValue :y轴坐标点移动到父窗体多少倍的位置
TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, -0.3f);

5.集合动画 将以上4种动画联合一起的效果  SetAnimation
//创建一个集合动画
AnimationSet animationSet = new AnimationSet(true);

5.应用的反编译 了解

反编译可以干嘛?

1.查看apk的androidmanifest的配置信息

2.查看apk的资源文件  drawbla  layout

3.查看代码

4.改包名,改应用图标,加广告赚钱;

如何反编译?借助工具,
1.apktools 可以帮助我们看apk的 配置文件和资源文件
2.guit 看源码

6.使用xml方式定义补间动画 掌握

1.在res下创建一个anim文件夹,然后创建相应的动画资源

<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"
android:repeatCount="1"
android:repeatMode="reverse"
xmlns:android="http://schemas.android.com/apk/res/android">
</rotate>

2.在代码中加载动画资源设置给iv开启
//使用AnimationUtils加载一个动画资源
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate);
//5.使用Imageview对象去开启该动画
iv_animation.startAnimation(animation);

7.属性动画 Property 了解

特点:属性动画的动画效果可以改变动画的位置;

//位移动画
public void translate(View v){
//创建属性动画
/**
* target 执行的目标  哪个控件执行动画
* propertyName 属性名字  The name of the property being animated.
* float... values 可变参数
*/
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "translationX", 10, 50,20,150,120,150,120,150);
oa.setDuration(2000);
oa.start(); //开始动画

}
//缩放动画
public void scale(View v){
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "scaleY", 0.1f, 2, 1, 2,1,2,1,2,1, 2,1,2,1,2);
oa.setDuration(2000);
oa.start();
}

//实现透明的效果
public void alpha(View v){
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "alpha", 0, 0.5f, 0, 1,0,1,0,0);
oa.setDuration(2000);
oa.start();
}

//实现旋转的效果
public void rotate(View v){
//      ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "rotation", 0, 180, 90, 360);
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "rotationX", 0, 180, 90, 360);
oa.setDuration(2000);
oa.start();
}

//一起飞
public void fly(View v){

AnimatorSet as = new AnimatorSet();
ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "translationX", 10, 50, 20, 100);
ObjectAnimator oa2 = ObjectAnimator.ofFloat(iv, "scaleY", 0.1f, 2, 1, 2);
ObjectAnimator oa3 = ObjectAnimator.ofFloat(iv, "alpha", 0, 0.5f, 0, 1);
ObjectAnimator oa4 = ObjectAnimator.ofFloat(iv, "rotationY", 0, 180, 90, 360);
as.setDuration(2000);
as.setTarget(iv);
//往集合中添加动画
//挨个飞
as.playSequentially(oa, oa2, oa3, oa4);
//一起飞
//      as.playTogether(oa, oa2, oa3, oa4);
as.start();
}

//使用xml的方式创建属性动画
public void playxml(View v){
ObjectAnimator oa = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.oanimator);
//设置执行目标
oa.setTarget(iv);
oa.start();//开始执行
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: