ビューの位置の値を取得する複数の方法を知っています。
getLocationOnScreen()
getLocationInWindow()
getLeft()
ただし、実際には、startAnimation()メソッドで移動したビューの現在の場所を返すものはなく、元の場所のみを返します。
それでは、クリックごとに10ピクセルずつ右に移動するビューを作成しましょう(メインXMLに任意のビューを配置してonClickListenerを指定できるため、レイアウトは省略しています)。
public class AndroidTestActivity extends Activity implements OnClickListener {
LinearLayout testView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
testView = (LinearLayout) this.findViewById(R.id.test);
testView.setOnClickListener(this);
}
public void onClick(View v) {
int[] pLoS = new int[2];
testView.getLocationOnScreen(pLoS);
TranslateAnimation move = new TranslateAnimation(pLoS[0], pLoS[0] + 10, 0f, 0f);
move.setFillAfter(true);
move.setFillEnabled(true);
testView.startAnimation(move);
}
}
ご覧のとおり、getLocationOnScreen()は常に同じ値(私の場合は0)を返し、TranslateAnimationで使用した値を反映していないため、これは意図したとおりに機能しません...
何か案が?