深入探讨 com.android.support

一、com.android.support:design

1、com.android.support:design 是 Android 官方提供的一个用于 Material Design 风格的 UI 控件库。通常使用在 Android App 开发中,可以帮助开发者快速、简单的实现 Material Design 风格的界面。下面是一个实现 Toolbar 和 Navigation Drawer 的示例代码:

XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.AppBarLayout>

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/nav_menu" />

</android.support.v4.widget.DrawerLayout>

Java 代码:
public class MainActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;
    private Toolbar mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(mToolbar);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, mDrawerLayout, mToolbar, R.string.app_name, R.string.app_name);
        mDrawerLayout.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                // Handle navigation view item clicks here.
                int id = item.getItemId();

                if (id == R.id.nav_home) {
                    // Handle the home action
                } else if (id == R.id.nav_messages) {
                    // Handle the messages action
                } else if (id == R.id.nav_friends) {
                    // Handle the friends action
                }

                mDrawerLayout.closeDrawer(GravityCompat.START);
                return true;
            }
        });
    }
}

2、以上代码实现了 Toolbar 和 Navigation Drawer 控件的显示,通过调用 ActionBarDrawerToggle 类的 syncState() 方法可以使 Toolbar 和 Navigation Drawer 并联使用。此外,NavigationView 控件的 setNavigationItemSelectedListener() 方法用于响应 NavigationView 中菜单项的选择事件。

二、com.android.support:percent

1、com.android.support:percent 是 Android 官方提供的一个用于百分比布局的 UI 控件库。它是基于 RelativeLayout 布局实现的,可以让开发者使用百分比的方式来布局控件。下面是一个通过百分比布局控制 ImageView 大小的示例代码:

XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_heightPercent="50%"
        app:layout_marginStartPercent="25%"
        app:layout_marginTopPercent="25%"
        app:layout_widthPercent="50%"
        android:src="@drawable/image" />

</RelativeLayout>

2、以上代码中,通过使用 app:layout_heightPercent、app:layout_marginStartPercent、app:layout_marginTopPercent、app:layout_widthPercent 属性控制 ImageView 的大小和位置。这里 app:layout_heightPercent、app:layout_widthPercent 属性的值为 “50%”,表示 ImageView 的高和宽整体都是相对于父布局的一半。而 app:layout_marginStartPercent、app:layout_marginTopPercent 属性的值为 “25%”,则表示 ImageView 的左偏移量和上偏移量都是相对于父布局的一4分之一。

三、com.android.support:appcompat-v7

1、com.android.support:appcompat-v7 是 Android 官方提供的一个用于支持旧版 Android 系统的 UI 控件库。通常使用在兼容性开发中,可以保证 App 在不同版本的 Android 系统上都能正常运行。下面是一个实现 Toolbar 的示例代码:

XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:title="My Toolbar" />

Java 代码:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
}

2、以上代码实现了 Toolbar 控件的显示,并分别在 XML 和 Java 中设置了其大小、背景色和标题。此外,在 Java 中调用 setSupportActionBar() 方法可以让 Toolbar 接管 Activity 的 ActionBar。

四、com.android.support.constraint

1、com.android.support.constraint 是 Android 官方提供的一个用于约束布局(ConstraintLayout)的 UI 控件库。引入它可以在布局中使用 ConstraintLayout,进行复杂和响应式布局的开发,大大提高了 UI 布局的灵活性和可读性。下面是一个使用 ConstraintLayout 实现登录界面的示例代码:

XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/logo"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toTopOf="@id/verticalGuideline" />

    <android.support.constraint.Guideline
        android:id="@+id/verticalGuideline"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintGuide_percent="0.5" />

    <EditText
        android:id="@+id/usernameEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:hint="Username"
        android:inputType="text"
        app:layout_constraintTop_toBottomOf="@id/verticalGuideline"
        app:layout_constraintStart_toStartOf="@id/guideline"
        app:layout_constraintEnd_toEndOf="@id/guideline" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintGuide_percent="0.35" />

    <EditText
        android:id="@+id/passwordEditText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:hint="Password"
        android:inputType="textPassword"
        app:layout_constraintTop_toBottomOf="@id/usernameEditText"
        app:layout_constraintStart_toStartOf="@id/guideline"
        app:layout_constraintEnd_toEndOf="@id/guideline" />

    <Button
        android:id="@+id/loginButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Login"
        app:layout_constraintTop_toBottomOf="@id/passwordEditText"
        app:layout_constraintStart_toStartOf="@id/guideline"
        app:layout_constraintEnd_toEndOf="@id/guideline" />

</android.support.constraint.ConstraintLayout>

2、以上代码使用 ConstraintLayout 实现了登录界面,通过设置 Guideline 控件的位置和百分比,实现了 ImageView、EditText 和 Button 的位置控制。此外,ConstraintLayout 还可以通过设置约束比例、权重、尺寸等属性来控制 UI 控件的位置和大小,具有更高的灵活性和可扩展性。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/237273.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:04
下一篇 2024-12-12 12:04

相关推荐

  • com.alipay.sofa.bolt框架

    com.alipay.sofa.bolt框架是一款高性能、轻量级、可扩展的RPC框架。其广泛被应用于阿里集团内部服务以及阿里云上的服务。该框架通过NIO支持高并发,同时还内置了多种…

    编程 2025-04-29
  • Android ViewPager和ScrollView滑动冲突问题

    Android开发中,ViewPager和ScrollView是两个常用的控件。但是当它们同时使用时,可能会发生滑动冲突的问题。本文将从多个方面介绍解决Android ViewPa…

    编程 2025-04-28
  • Android如何点击其他区域收起软键盘

    在Android应用中,当输入框获取焦点弹出软键盘后,我们希望能够点击其他区域使软键盘消失,以提升用户体验。本篇文章将说明如何实现这一功能。 一、获取焦点并显示软键盘 在Andro…

    编程 2025-04-28
  • Android Studio HUD 实现指南

    本文将会以实例来详细阐述如何在 Android Studio 中使用 HUD 功能实现菊花等待指示器的效果。 一、引入依赖库 首先,我们需要在 build.gradle 文件中引入…

    编程 2025-04-27
  • Android和Vue3混合开发方案

    本文将介绍如何将Android和Vue3结合起来进行混合开发,以及其中的优势和注意事项。 一、环境搭建 在进行混合开发之前,需要搭建好相应的开发环境。首先需要安装 Android …

    编程 2025-04-27
  • Java Support包用法介绍

    Java的Support包是Java中提供的一个非常强大的工具库,可以帮助开发者解决许多问题,提高开发效率。本文将从多个方面对Java Support包进行详细的阐述。 一、数据结…

    编程 2025-04-27
  • Android Java Utils 可以如何提高你的开发效率

    Android Java Utils 是一款提供了一系列方便实用的工具类的 Java 库,可以帮助开发者更加高效地进行 Android 开发,提高开发效率。本文将从以下几个方面对 …

    编程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在开发过程中引入了新的API `defineExpose`。在以前的版本中,我们经常使用 `$attrs` 和` $listeners` 实现父组件与子组件之间的通信,但…

    编程 2025-04-25
  • 深入理解byte转int

    一、字节与比特 在讨论byte转int之前,我们需要了解字节和比特的概念。字节是计算机存储单位的一种,通常表示8个比特(bit),即1字节=8比特。比特是计算机中最小的数据单位,是…

    编程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什么是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一个内置小部件,它可以监测数据流(Stream)中数据的变…

    编程 2025-04-25

发表回复

登录后才能评论