本文主要是介绍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;@Overrideprotected 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
效果图
这篇关于view.getX()、view.getY()、view.getLeft()、view.getRight()、view.getTranslationX()与动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!