view.getX()、view.getY()、view.getLeft()、view.getRight()、view.getTranslationX()与动画

view.getX()、view.getY()、view.getLeft()、view.getRight()、view.getTranslationX()与动画

基础知识:

  • android有两个坐标系:①屏幕坐标系 ②视图坐标系
  • 以屏幕坐标系为参照对象的有:event.getRawX()、event.getRawY()
  • 除了以屏幕坐标系为参照对象的都是以视图坐标系为参考对象
  • 这里的event指的是MotionEvent类型的对象
  • 动画:属性动画(ObjectAnimator)和View动画(如TranslationAnimation)

这里写图片描述

初始状态

这里写图片描述
对应的代码如下:
———————activity_main.xml————————–

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:layout_marginTop="10dp"
        android:id="@+id/bt_x"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:text="scrollXClick"
        android:onClick="scrollXClick"
        />
    <Button
        android:layout_marginTop="10dp"
        android:id="@+id/bt_y"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="scrollYClick"
        android:onClick="scrollYClick"
        />


</LinearLayout>

——————MainActivity.java——————————-

package haha.com.c7;

import android.animation.ObjectAnimator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    Button bt_x;
    Button bt_y;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_x = (Button) findViewById(R.id.bt_x);
        bt_y = (Button) findViewById(R.id.bt_y);
    }


    //横坐标方向分析ObjectAnimator和view.getX()、view.getLeft()、view.getRight()
    // 、view.getTranslationX()、view.getScrollX()的关系
    public void scrollXClick(View view) {
        Log.d(TAG, "scrollX: getX()= " + bt_x.getX()
            + " tranlationX=" + bt_x.getTranslationX() 
            + " getLeft()=" + bt_x.getLeft() + " getRight()=" + bt_x.getRight()
            + " getScrollX=" + bt_x.getScrollX() + " getScrollY=" + bt_x.getScrollY()
        );

        ObjectAnimator.ofFloat(view,"translationX",200).setDuration(1000).start();
    }

    //纵坐标方向分析Translation和view.getY()、view.getTop()、view.getBottom()
    // 、view.getTranslationY()、view.getScrollY()的关系
    public void scrollYClick(View view) {
        Log.d(TAG, "scrollY: getY()=" + bt_y.getY()
            + " translationY=" + bt_y.getTranslationY() 
            + " topY=" + bt_y.getTop() + " getbuttom()=" + bt_y.getBottom()
            + " getScrollX=" + bt_y.getScrollX() + " getScrollY=" + bt_y.getScrollY()
        );

        TranslateAnimation translateAnimation = new TranslateAnimation(0,0,0,300);
        translateAnimation.setDuration(1000);
        translateAnimation.setFillAfter(true);
        view.startAnimation(translateAnimation);
    }
}

  • 步骤一:点击第一个按钮

    打印结果:
    这里写图片描述

如果看不清上图看这里: D/MainActivity: scrollX: getX()= 0.0 tranlationX=0.0 getLeft()=0 getRight()=200 getScrollX=0 getScrollY=0
  • 步骤二:再点击第一个按钮
    结果如下: D/MainActivity: scrollX: getX()= 200.0 tranlationX=200.0 getLeft()=0 getRight()=200 getScrollX=0 getScrollY=0
    效果图:

这里写图片描述

  • 步骤三:点击最下面的按钮
打印结果(初始状态):D/MainActivity: scrollY: getY()=240.0 translationY=0.0 topY=240 getbuttom()=440 getScrollX=0 getScrollY=0
  • 步骤四:再一次点击最下面的按钮
 D/MainActivity: scrollY: getY()=240.0 translationY=0.0 topY=240 getbuttom()=440 getScrollX=0 getScrollY=0
效果图

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值