Android中动态改变布局中控件的位置

一、通过ViewGroup.LayoutParams()

以控件在RelativeLayout中为例,其他布局中也是一样的,可以通过修改控件的magin属性来改变控件的位置。

// 需要注意的是,此时构造参数中的两个属性为控件的宽和高(px),而不是父布局的宽和高。
RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(100,100);
layoutparams.setMargin(left,top,right,bottom);//直接设置四个方向的magin
//layoutparams.addRule(RelativeLayout.CENTER_VERTICAL)//添加控件在布局中显示的规则。
layoutparams.setLeftMargin(left);
layoutparams.setTopMargin(top);
layoutparams.setRightMargin(right);
layoutparams.setBottomMargin(bottom);
mButton.setLayoutParams(layoutparams);//mButton为你想要修改的控件

二、通过属性动画

移动 translationXtranslationY

  • float translationX :表示在X轴上的平移距离,以当前控件为原点,向右为正方向,参数 translationX 表示移动的距离。
  • float translationY :表示在 Y 轴上的平移距离,以当前控件为原点,向下为正方向,参数 translationY 表示移动的距离。
ObjectAnimator animator = ObjectAnimator.ofFloat(tv, "translationX", 0, 200, -200,0);  
animator.setDuration(2000);  
animator.start();  
指定的移动距离是(0, 200, -200,0),所以控件会从自身所有位置向右移动 200 像素,然后再移动到距离原点-200 的位置,最后回到原点

//参数一:要操纵的view;
//参数二:要操纵的属性(translationX、translationY、rotationX、rotationY、rotation、scaleX、scaleY, alpha)
//参数三:可变数组参数,代表属性变化的一个取值过程。
ObjectAnimator translationX = ObjectAnimator.ofFloat(mTestView, “translationX”, 300);

发布了167 篇原创文章 · 获赞 230 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_39240270/article/details/103155235