getDrawingRect,getHitRect,getLocalVisibleRect,getGlobalVisibleRect

本文详细讲解了Android中getHitRect, getDrawingRect, getLocalVisibleRect, getGlobalVisibleRect等方法的作用,并通过实例展示了它们在视图坐标系统中的应用,帮助理解这些方法如何处理视图的可见区域和位置。" 124873350,12787778,单机快速部署多实例MySQL 8,"['mysql', 'database', 'debian', 'installation']
摘要由CSDN通过智能技术生成

本文主要大体讲下getHitRect()getDrawingRect()getLocalVisibleRect()getGlobalVisibleRect
getLocationOnScreengetLocationWindow方法的作用。

getHitRect()

android sdk文档中给出的解释是:Hit rectangle in parent's coordinates.看字面的意思应该是将矩形映射为父视图中的坐标,看起来还不是非常的清楚,下面就拿一个具体的示例来说明。

代码样式如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="450px"
    android:layout_height="450px"
    android:orientation="vertical"
    android:layout_gravity="center_horizontal"
    android:background="@android:color/holo_red_light">

    <TextView
        android:layout_width="200px"
        android:layout_height="200px"
        android:layout_marginTop="100px"
        android:layout_gravity="center_horizontal"
        android:text="测试区域"
        android:gravity="center"
        android:textStyle="bold"
        android:background="@android:color/holo_blue_bright"/>

</LinearLayout>

public class MainActivity extends Activity {

private View testView;

private final static String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    testView = findViewById(R.id.testView);

    testView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            testView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

            Rect rect = new Rect();
            testView.getHitRect(rect);

            Log.i(TAG, "--left:  " + rect.left + "--top: " + rect.top + "--right: " + rect.right + "--bottom: " + rect.bottom);

        }
    });
}

在模拟器显示样式如下:

280020498606702.png


打印的结果:
07-27 16:03:00.017 9540-9540/? I/MainActivity﹕ --left: 125--top: 100--right: 325--bottom: 300

getDrawingRect()


下面测试getDrawingRect()方法,先看布局文件如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
    android:layout_width="400px"
    android:layout_height="400px"
    android:layout_gravity="center"
    android:background="@android:color/holo_blue_dark"
    a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值