android屏幕适配源码原理知识点

Android:百分比布局 布局嵌套 Log Toast

2019-12-24  本文已影响0人  壹零二肆
添加依赖

implementation 'androidx.percentlayout:percentlayout:1.0.0'

github: https://github.com/Gong-Shijie/PercentLayoutDemo.git

可使用的布局:PercentFrameLayout、PercentRelativeLayout
除了使用FrameLayout 和 RealitiveLayout 自带的属性之外
可以使用的

百分比布局扩展属性:

layout_widthPercent
layout_heightPercent
layout_marginPercent
layout_marginLeftPercent
layout_marginTopPercent
layout_marginRightPercent
layout_marginBottomPercent
layout_marginStartPercent
layout_marginEndPercent

RealitiveLayout常用属性:

android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘

android:layout_below 在某元素的下方
android:layout_above 在某元素的上方
android:layout_toLeftOf 在某元素的左边
Android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素右边缘对齐

android:layout_marginBottom 离某元素底边缘的距离
Android:layout_marginLeft 离某元素左边缘的的距离
Android:layout_marginRight 离某元素的右边缘的距离
Android:layout_marginTop 离某元素上边缘的距离
android:hint 设置EditText为空时输入的提示信息
android:gravity 对该view内容的限定:靠上 下 左 右
android:layout_gravity="right" 用来设置该Container(组件)的靠左 靠右

margin 空白 align 对齐 gravity 重心摆放

Log使用

使用log Android studio 内使用log filter设置tag 来查看对应的log
Log.v():打印一些最为繁琐、意义不大的日志信息
Log.d():打印一些调试信息(logd+tab)
Log.i():打印一些比较重要的数据,可帮助你分析用户行为数据(logi+tab)
Log.w():打印一些警告信息,提示程序该处可能存在的风险(logw+tab)
Log.e():打印程序中的错误信息(loge+tab)

Toast自定义

高度和显示内容

Toast toast = Toast.makeText(getApplicationContext(),null,Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.TOP|Gravity.CENTER, 0,1580);
                toast.setText("登录失败!");
                toast.show();

代码:

xml实例:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".LoginActivity">

    <androidx.percentlayout.widget.PercentFrameLayout xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/text_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center|top"
            android:text="登陆"
            android:textAlignment="center"
            android:textSize="30sp"
            app:layout_marginTopPercent="8%" />

        <androidx.percentlayout.widget.PercentRelativeLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:background="#1222"
            app:layout_heightPercent="50%"
            app:layout_marginLeftPercent="12.5%"
            app:layout_marginTopPercent="25%"
            app:layout_widthPercent="75%"
            >
            <EditText
                app:layout_marginTopPercent ="30%"
                app:layout_marginLeftPercent ="10%"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="account :"
                android:textSize="30sp"></EditText>
            <EditText
                app:layout_marginTopPercent ="50%"
                app:layout_marginLeftPercent ="10%"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="password :"
                android:textSize="30sp"></EditText>
            <Button
                android:text="登陆"
                android:layout_centerHorizontal="true"
                android:textSize="30sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_marginTopPercent ="75%"
                ></Button>
        </androidx.percentlayout.widget.PercentRelativeLayout>
    </androidx.percentlayout.widget.PercentFrameLayout>
</RelativeLayout>
preview

java代码:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn_1;
    private Button btn_2;
    private Button btn_3;
    private Button btn_4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn_1 = findViewById(R.id.btn_1);
        btn_1.setOnClickListener(this);
        btn_2 = findViewById(R.id.btn_2);
        btn_2.setOnClickListener(this);
        btn_3 = findViewById(R.id.btn_3);
        btn_3.setOnClickListener(this);
        btn_4 = findViewById(R.id.btn_4);
        btn_4.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.btn_1:
                Intent intent = new Intent(MainActivity.this,LoginActivity.class);
                startActivity(intent);
                break;
            case R.id.btn_2:
                Toast.makeText(this,"click btn2!",Toast.LENGTH_SHORT).show();
                break;

            case R.id.btn_3:
                Log.i("MainActivity:","click btn3!");
                break;

/*使用log Android studio 内使用log filter设置tag 来查看对应的log
Log.v():打印一些最为繁琐、意义不大的日志信息
Log.d():打印一些调试信息(logd+tab)
Log.i():打印一些比较重要的数据,可帮助你分析用户行为数据(logi+tab)
Log.w():打印一些警告信息,提示程序该处可能存在的风险(logw+tab)
Log.e():打印程序中的错误信息(loge+tab)
 */
            case R.id.btn_4:
                Toast toast = Toast.makeText(getApplicationContext(),null,Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.TOP|Gravity.CENTER, 0,1580);
                toast.setText("登录失败!");
                toast.show();
                break;
        }

    }
}
上一篇下一篇

猜你喜欢

热点阅读