时间:2021-05-21
屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。如下动图:
该类有如下几个和动画相关的函数:
下面通过坐标轴的形式为大家演示动画实现方式:
由上图可知,以屏幕左下角为数学坐标轴的原点,屏幕下边框为X轴,左边框为Y轴,当前屏幕显示为图二,如果要看图一,则需要图一由左至右(相对屏幕而言)进入屏幕,图一X轴初始坐标为-100%p,移动到屏幕位置时图一X轴变为0(因为本次演示为横向滑动,所以不涉及Y轴);同理图三要进入屏幕,则需由右至左,X轴由100%p变为0.清楚了坐标位置,我们要实现四种动画效果,就会很简单,下面代码(需建立在res目录下自建的anim文件夹下)演示四种动画效果:
in_leftright.xml——从左到右进入屏幕:
in_rightleft.xml——从右到左进入屏幕:
out_rightleft.xml——从右到左出去屏幕:
动画效果建立完成,建立
Layout中view_layout.xml布局文件(本次直接将定义动画的三张图片直接通过LinearLayOut布局到ViewFlipper中):
Activity中Java功能实现代码:
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.MotionEvent;import android.view.View;import android.widget.ViewFlipper;/** * Created by panchengjia on 2016/11/28. */public class FlipperActivity extends AppCompatActivity implements View.OnTouchListener{ private ViewFlipper vf; float startX;//声明手指按下时X的坐标 float endX;//声明手指松开后X的坐标 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewflipper_layout); vf= (ViewFlipper) findViewById(R.id.vf); vf.setOnTouchListener(this); } @Override public boolean onTouch(View v, MotionEvent event) { //判断捕捉到的动作为按下,则设置按下点的X坐标starX if(event.getAction()==MotionEvent.ACTION_DOWN){ startX=event.getX(); //判断捕捉到的动作为抬起,则设置松开点X坐标endX }else if(event.getAction()==MotionEvent.ACTION_UP){ endX=event.getX(); //由右到左滑动屏幕,X值会减小,图片由屏幕右侧进入屏幕 if(startX>endX){ //进出动画成对 vf.setInAnimation(this,R.anim.in_rightleft); vf.setOutAnimation(this,R.anim.out_rightleft); vf.showNext();//显示下个view //由左到右滑动屏幕,X值会增大,图片由屏幕左侧进入屏幕 }else if(startX<endX){ vf.setInAnimation(this,R.anim.in_leftright); vf.setOutAnimation(this,R.anim.out_leftright); vf.showPrevious();//显示上个view } } return true; }}在练习这里时,动画的显示效果方式困扰了我好久,这才想到了通过坐标轴的形式体现动画实现原理,画成的那一瞬间,整个人顿似醍醐灌顶,忍不住想要写成博文分享给大家,共勉!
后续更改补充:发文后,好友提醒在安卓开发中Android屏幕坐标系统,不同于一般数学模型,原点应该位于左上角且Y轴向下递增,经过查阅资料,确实如此,现更改坐标轴如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接:ANDROID中使用VIEWFLIPPE
Excel中的坐标轴的颜色默认情况下为灰色,如果用户想让坐标轴颜色变成其他的颜色,是可以通过坐标轴设置对话框来对其进行更改的,该怎么设置坐标轴的颜色呢?下面我们
在使用matplotlib模块时画坐标图时,往往需要对坐标轴设置很多参数,这些参数包括横纵坐标轴范围、坐标轴刻度大小、坐标轴名称等在matplotlib中包含了
引言我们还可以对图形中的坐标轴进行处理,包括x、y轴对换、设定坐标轴范围、刻度线修改与去除等等。要想对图形玩得转,坐标轴处理精通不可或缺。坐标轴对换我们使用co
matplotlib默认根据数据系列自动缩放坐标轴范围。pyplot模块中的autoscale函数可以切换是否自动缩放坐标轴范围,xlim()和ylim()函数