你的位置:首页 > 操作系统

[操作系统]Android View的滑动 动画


【scrollTo/scrollBy】

//控件内的文字会移动,但是控件本身不会移动,而且移动到控件之外之后,文字也就看不见了

if(v.equals(button2)){

button2.scrollTo(5, 5);         //View内的文字会向左移动5,向上移动5,绝对坐标,只会移动一次

Toast.makeText(this, "用户名", Toast.LENGTH_SHORT).show();

}else if(v.equals(button3)){

button3.scrollBy(5, 5);//View内的文字会向左移动5,向上移动5,相对坐标,会移动无数次

Toast.makeText(this, "用",Toast.LENGTH_SHORT).show();

}

 

 

【动画】

//补间动画//原先的位子不会被侵占

//可以移动整个控件A,可以通过fillAfter把控件停留在移动的终点

//但是焦点实际上还是在原先的地方,从其他地方往原先的地方A移动,(移动的控件A可以获得焦点的情况下)控件A就会从停留的地方回来

//(移动的控件A无法获得焦点的情况下)如果往原先的地方A移动,控件A会停留在移动的终点

Animation animation2= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.slide_big_in_right);

button2.startAnimation(animation2);

<?

<set

    android:fillAfter="true">

<translate

   android:fromXDelta="1920"

   android:toXDelta="1000"

   android:fromYDelta="0"

   android:toYDelta="0"

   android:duration="2000"

   android:interpolator="@android:anim/decelerate_interpolator" />

</set>

 

//补间动画情况和上面一样  //其实焦点还是在原先的地方

TranslateAnimation animation = new TranslateAnimation(0, 300,0, 0); 

animation.setDuration(2000);//设置动画持续时间 

animation.setRepeatCount(2);//设置重复次数 

animation.setFillAfter(true);

animation.setRepeatMode(Animation.REVERSE);//设置反方向执行 

button4.startAnimation(animation); 

 

//属性动画//原先的位子不会被侵占

//整个控件会向右移动100,会停留在终点,焦点也在终点。在即使点击这个控件,它也还是在终点

ObjectAnimator.ofFloat(button2, "translationX", 0,100)

.setDuration(100).start();

 

 

【改变布局参数】

//整个控件会移动,焦点也会移动,会停留在最后。原先的位置会被侵占,

RelativeLayout.LayoutParams mParams=(RelativeLayout.LayoutParams) button3.getLayoutParams();

mParams.width=100;

mParams.height=130;

mParams.setMargins(50, 50, 0, 0);

button3.setLayoutParams(mParams);

button3.setPadding(20, 0, 0, 0);