【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();
}
getX(),getY() //表示相对于手指点下去的那个View的左上角的x,y坐标
getRawX(),getRawY() //表示相对于屏幕左上角的坐标
【动画】
//补间动画//原先的位子不会被侵占
//可以移动整个控件A,可以通过fillAfter把控件停留在移动的终点
//但是焦点实际上还是在原先的地方,从其他地方往原先的地方A移动,(移动的控件A可以获得焦点的情况下)控件A就会从停留的地方回来
//(移动的控件A无法获得焦点的情况下)如果往原先的地方A移动,控件A会停留在移动的终点
Animation animation2= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.slide_big_in_right);
button2.startAnimation(animation2);
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
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" /> //表示动画集合中所采用的插值器,插值器影响动画的速度,比如非匀速动画就需要插值器来控制播放速度
//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);