一、通過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爲你想要修改的控件
二、通過屬性動畫
移動 translationX
、translationY
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);