logo资料库

Android Studio实现小车简单运动动画.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
Android Studio实现小车简单运动动画 实现小车简单运动动画 一、题目 一、题目 1、参考课堂示例Ex10_1,通过绘制直线、矩形(填充与非填充)、多边形、圆和文本,绘制一个如附图1所示的简易式样的 小车(注:图中的标注是各个图元的绘图参数,仅供参考)。 【说明】具体绘图时,小车的颜色、样式等可自行设置(但不可过于简单),并且各个图元的绘制尺寸也可灵活设置。 2、参考课堂示例Ex10_4(和https://jingyan.baidu.com/article/5553fa82a7119965a3393475.html),设计一个至少包含“启 动、停止、前进、后退”四个按钮控制的运动小车补间动画,图片自行选用。说明:实际动画效果,自行创意设计,可以更复 杂一些,并且还可以同时使用示例Ex10_3逐帧动画设计方法(实现车体运动过程中的车轮旋转等)。 二、分析 二、分析 效果图如下 效果图如下 1.前进前进
2.后退后退 三、代码 三、代码 第一问的JAVA代码代码 第一问的 package com.example.lenovo.siyue12_zuoye; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; //导入所需的包 import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; import android.widget.FrameLayout; import android.graphics.Path; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
//实例化一个帧布局管理器 FrameLayout frmLayout1=(FrameLayout)findViewById(R.id.frameLayout1); //将自定义的DrawView视图添加到帧布局管理器中 frmLayout1.addView(new DrawView(this)); } public class DrawView extends View { //构造方法 public DrawView(Context context) { super(context); } //重写onDraw()方法 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);//调用父类的onDraw()方法 //canvas.drawColor(Color.WHITE); Paint paint=new Paint();//实例化一个画笔 paint.setAntiAlias(true);//使用抗锯齿功能 paint.setStrokeWidth(10);//设置笔触的宽度 Paint paint_character=new Paint();//实例化一个画笔 paint_character.setAntiAlias(true);//使用抗锯齿功能 paint_character.setStrokeWidth(3);//设置笔触的宽度 paint.setStyle(Paint.Style.FILL);//设置填充样式 /******* 绘制一个三角形********/ paint.setColor(Color.rgb(176, 196, 222));//设置画笔 Path path1 = new Path(); path1.moveTo(150, 310);//起点 path1.lineTo(390, 310);//第二个点 path1.lineTo(390, 70);//第三个点 path1.close();//封闭并且填充多边形 canvas.drawPath(path1, paint);//绘制路径 /******* 绘制一个矩形********/ paint.setColor(Color.rgb(128,128,128)); //绘图(坐标:左上角、右下角) canvas.drawRect(60, 310, 1000, 600, paint); /******* 绘制圆形********/ paint.setColor(Color.BLACK);//设置画笔为绿色 //绘图(坐标:左上角、右下角) canvas.drawCircle(250,600,100,paint); canvas.drawCircle(800,600,100,paint); paint.setStyle(Paint.Style.STROKE);//设置空心(无填充)矩样式 /******* 绘制一个矩形********/ paint.setColor(Color.BLACK); //绘图(坐标:左上角、右下角) canvas.drawRect(390, 70, 900, 310, paint); /******* 绘制一个竖线 ********/ paint.setColor(Color.RED);//设置画笔为红色 Path path2 = new Path(); path2.moveTo(950, 60);//起点 path2.lineTo(950, 310);//第二个点 canvas.drawPath(path2, paint);//绘制路径 /******* 绘制三个文本 ********/ paint_character.setTextSize(60);//设置文本尺寸 paint_character.setColor(Color.BLACK);//设置画笔为黑色 canvas.drawText("Android小车", 450, 480, paint_character);//绘制文本 } } } 第二问第二问
1.布局代码 布局代码 2.动画代码 动画代码 1. anim_mixture_advance.xml 2. anim_translate_advance.xml 3. anim_mixture_back.xml 4. anim_translate_back.xml 3.JAVA代码代码 package com.example.lenovo.zuoye8_231_2; import androidx.appcompat.app.AppCompatActivity; 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; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化所用的动画资源 final Animation translate_back=AnimationUtils.loadAnimation(this, R.anim.anim_translate_back); final Animation mixture_back=AnimationUtils.loadAnimation(this, R.anim.anim_mixture_back); final Animation translate_advance=AnimationUtils.loadAnimation(this, R.anim.anim_translate_advance); final Animation mixture_advance=AnimationUtils.loadAnimation(this, R.anim.anim_mixture_advance); final ImageView imgView1=(ImageView)findViewById(R.id.imageView1); final ImageView imgView2=(ImageView)findViewById(R.id.imageView7); final ImageView imgView3=(ImageView)findViewById(R.id.imageView10); Button button_back=(Button)findViewById(R.id.button_back); button_back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { imgView1.startAnimation(translate_back); //启动旋转动画 imgView2.startAnimation(mixture_back); //启动平移动画 imgView3.startAnimation(mixture_back); //启动缩放动画 } }); Button button_advance=(Button)findViewById(R.id.button_advance); button_advance.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { imgView1.startAnimation(translate_advance); //启动旋转动画 imgView2.startAnimation(mixture_advance); //启动平移动画 imgView3.startAnimation(mixture_advance); //启动缩放动画 } }); } }
四、结论 四、结论 五、参考文章 五、参考文章 作者:是抹茶味的啊
分享到:
收藏