布局、基本控件

一、as布局

布局文件 layout

drawable 设置背景的文件

新建drawable-xhdpi文件 — 放一些item或图片

values:

        theme app风格,string 字符串(相当于宏定义,可以引用),colors颜色配置(可以引用)

AndroidManifest.xml:启动文件,这个板块在哪个activity里,哪个就是启动文件

比如现在是Mainactivity,那启动后第一个界面就是mainactivity

build.gradle需要一些包的时候可以在这里引用

gradle.properties:用真机调试的话在这里需要添加声明

二、linearlayout和relativelayout

linearlayout:线性布局

match_parent:和父布局一样显示

wrap_content:有多高显示多高

relativelayout:相对布局

一定要新增orientation(排列方式)

        vertical:竖直排列

        horizontal:水平排列

性质:

padding:与周围有多大距离(上下左右)

paddingLeft:与左边有多大距离(某个固定方向,单位dp)

background:背景图片,可以引用背景文件夹的文件

relativelayout:相对布局

不需要orientation,但是需要设置layout

layout_below = “目标”:设置与目标的相对位置为在目标下方

(通过改变below改变与目标的位置)

建议使用linearlayout

三、textview、bottom、edittext基本控件

制作一个简易登录界面

textview:放文字的地方

        text:文字

        textColor:文字颜色

        textSize:文字大小(单位sp)

        maxEms:每行显示的字符个数(数字)

        maxLines:固定行数(数字)

        ellipsize:剩余部分用省略号表示的方式

        layout_marginxxx:与另一部分的距离

edittext:输入的地方

        inputType:输入的类型

边框设计

在drawable中先创建一个xml

bottom设计

bottom跳转

方法1:直接跳转

package com.example.demo3;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    //声明控件
    private Button mBtnlogin;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
    
        //找到控件(相要给哪个btn实施功能)
        mBtnlogin = findViewById(R.id.btn_login);
        
        //实现直接跳转----方法1
        mBtnlogin.setOnClickListener(view -> {
            Intent intent = new Intent(MainActivity.this, FunctionActivity.class);
            MainActivity.this.startActivity(intent);
        });
    }
}

方法2:匹配固定账号密码跳转

package com.example.demo3;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //声明控件
    private Button mBtnlogin;
    private EditText mEtUser;
    private EditText mEtPassward;

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

        //找到控件(相要给哪个btn实施功能)
        mBtnlogin = findViewById(R.id.btn_login);
        mEtUser = findViewById(R.id.et_1);
        mEtPassward = findViewById(R.id.et_2);
        
        mBtnlogin.setOnClickListener(this);
    }

    public void onClick(View v)
    {
        //需要获取输入的用户名和密码
        String username = mEtUser.getText().toString();
        String passward = mEtPassward.getText().toString();
        Intent intent = null;

        //假设正确的账号密码分别是qjj,123456
        if (username.equals("qjj") && passward.equals("123456"))
        {
            //如果正确进行跳转
            intent = new Intent(MainActivity.this, FunctionActivity.class);
            startActivity(intent);
        }else
        {
            //如果不正确,谈出登录失败

        }
    }
    
    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {
        super.onPointerCaptureChanged(hasCapture);
    }
}

优化之Toast

1、底部弹出

//toast普通版
//Toast.makeText(getApplicationContext(), ok,Toast.LENGTH_SHORT).show();

2、居中弹出

//提升版,居中显示
Toast toastCenter = Toast.makeText(getApplicationContext(), fail,Toast.LENGTH_SHORT);
toastCenter.setGravity(Gravity.CENTER,0,0);
toastCenter.show();

3、封装好的类

package com.example.demo3.util;

import android.content.Context;
import android.widget.Toast;

public class ToastUtil {
    public static Toast mToast;
    public static void showMsg(Context context, String msg) {
        if (mToast == null) {
            mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
        } else
        {
            mToast.setText(msg);
        }
        mToast.show();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651184.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenLayers6入门,OpenLayers实现在地图上拖拽编辑修改绘制图形

专栏目录: OpenLayers6入门教程汇总目录 前言 在前面一章中,我们已经学会了如何绘制基础的三种图形线段、圆形和多边形:《OpenLayers6入门,OpenLayers图形绘制功能,OpenLayers实现在地图上绘制线段、圆形和多边形》,那么本章将在此基础上实现图形的拖拽编辑功能,方便我…

【R语言】堆叠折线图绘制大揭秘

👋📚📌 之前绘制过相关的图,但是时间一久就不知道把代码放到哪里去了,索性重新写一个绘图代码,用以记录,需要的自取。 library(readxl) library(ggplot2) library(dplyr) # setwd("D:/Dat…

python表达式解析的陷阱与技巧

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:表达式的复杂性 二、案例分析:表达式的解读 三、陷阱揭示…

Spring Boot集成shiro之使用redis缓存demo

1.背景 上次发了这篇文章《Spring Boot集成Shiro快速入门Demo》后,有网友“just.blue”后台反馈集成redis有点问题,今天特地把集成过程发出来 2.为什么要使用cache 用来减轻数据库的访问压力,从而提升查询效率。 3.Shiro使用Redis做缓存 …

粒子爱心特效||轻松实现浪漫效果||完整代码

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 你是否曾经想过,在特殊的日子里给你的爱人一个惊喜?或者在朋友的生日派对上,给他们展示一个充满爱意的特效?今天,我要分享一个我…

【简单介绍下容器是什么?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【el-table 实现自定义单选】

el-table 实现自定义单选 示例图片代码 示例图片 代码 row-click"singleElection"<el-table-columnalign"center"label"选择"><template slot-scope"scope"><el-radio:key"scope.row.id"v-model"templa…

Redis篇 String

String概念和set,get扩充 一. String类型的基本介绍二. String中set,get方法扩充 一. String类型的基本介绍 redis中所有的key都是字符串类型的,但是value的类型差异很大. redis中的字符串,直接就是二进制方式存储的,可以存储整数,二进制数据 文本数据,Json,xml还有音频等. 二.…

Windows10映射网络驱动器之后不显示映射盘

目录 背景解决步骤1、按 Windows R 打开运行2、打开注册表编辑器3、 System上新建-- DWORD(32bit)4、对新建的文件重命名5、将EnableLinkedConnections的数值改为16、退出注册表编辑器&#xff0c;重启系统。 知识扩展断开连接备份注册表 背景 目前有一台NAS服务器,和一台lin…

斯洛文尼亚普利雅玛城堡:吉尼斯世界纪录认证的世界最大溶洞城堡

除了著名的波斯托伊纳溶洞&#xff08;Postojna Cave&#xff09;&#xff0c;普利雅玛城堡&#xff08;Predjama Castle&#xff09;也是波斯托伊纳洞穴公园&#xff08;Postojna Cave Park&#xff09;不容错过的景点之一。这座城堡坐落在斯洛文尼亚&#xff08;Slovenia&…

C语言动态顺序表结构的创建、初始化结构、尾插、尾删、头插、头删、指定位置插入、指定位置删除、找指定数值下标等的介绍

文章目录 前言一、 结构创建二、 初始化结构三、 打印动态顺序表四、 销毁动态顺序表五、 尾插六、尾删七、 头插八、 头删九、指定位置插入十、指定位置删除十一、找指定数值下标总结 前言 C语言动态顺序表结构的创建、初始化结构、尾插、尾删、头插、头删、指定位置插入、指…

LabVIEW波纹补偿器无线监测系统

LabVIEW波纹补偿器无线监测系统 在石油化工、冶金及电力等行业中&#xff0c;波纹补偿器作为一种重要的补偿性元件&#xff0c;其安全稳定的运行对管道输送系统的可靠性至关重要。开发了一种基于LabVIEW的波纹补偿器无线监测系统&#xff0c;通过实时监测波纹补偿器的工作状态…

微服务八股-分布式事务-注册中心-服务保护

一、分布式事务 1.CAP和BASE 三者不能同时存在。 CP&#xff1a;由于网络分片的存在&#xff0c;如果要保证强一致性就不能写&#xff0c;此时不满足可用性 AP&#xff1a;由于网络分片的存在&#xff0c;如果要保证可用性&#xff0c;能读也能写&#xff0c;就不能保证强一致…

Day37 代码随想录打卡|二叉树篇---对称二叉树

题目&#xff1a; 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 方法&#xff1a;本体可以用递归和迭代两种方法&#xff0c;但我更喜欢迭代的方式&#xff0c;因此使用迭代的方式做一下。首先我们分析一下不对称的情况。因为对称的情况很简单&#xff0c;即两…

【社会信用体系1003】 企业违规新解:社会信用环境改善的实证分析!

今天给大家分享的是来自于国内顶级期刊金融研究2023年发表论文——《社会信用环境改善降低了企业违规吗&#xff1f;——来自“中国社会信用体系建设”的证据》所用到的重要数据集&#xff0c;该文章从企业层面探讨了社会信用系统建设对企业违规行为的影响&#xff0c;更精准地…

修改 ant design tour 漫游式导航的弹窗边框样式

一 说明 应项目要求&#xff0c;调整ant design tour 弹窗边框的样式。tour 原本样式是有遮罩层&#xff0c;因此没有边框看起来也不突兀。原图如下&#xff1a; 但是UI设计是取消遮罩层&#xff0c;并设置边框样式。当 取消 了遮罩层&#xff0c;没有设置边框样式的图片如下&a…

【开源】加油站管理系统 JAVA+Vue.js+SpringBoot+MySQL

目录 一、项目介绍 论坛模块 加油站模块 汽油模块 二、项目截图 三、核心代码 一、项目介绍 Vue.jsSpringBoot前后端分离新手入门项目《加油站管理系统》&#xff0c;包括论坛模块、加油站模块、汽油模块、加油模块和部门角色菜单模块&#xff0c;项目编号T003。 【开源…

ios 原生项目迁移flutter第一天环境

由于公司已经有第一个吃螃蟹的项目组&#xff0c;我在迁移的时候想着站在巨人的肩膀上&#xff0c;但是搭配环境一定要问清楚对方flutter版本&#xff0c;路径也要安排好&#xff0c;不然就不行。 对着自己的项目照着葫芦画瓢&#xff0c;我刚开始为了配置管理图个方便随便放&…

专为汽车内容打造的智能剪辑解决方案

汽车内容创作已成为越来越多车主和汽车爱好者热衷的活动。然而&#xff0c;如何高效、便捷地将行车途中的精彩瞬间转化为高质量的视频作品&#xff0c;一直是困扰着广大用户的一大难题。美摄科技凭借其深厚的视频处理技术和智能分析能力&#xff0c;推出了专为汽车内容记录而生…

git回退到指定版本,同时提交记录也会删除

第一步&#xff1a; git reset --hard xxx (需要恢复版本的 commit id)第二步&#xff1a;branch_name就是远程分支的名称 git push origin <branch_name> --force