Android开发-AS学习(一)

news2025/1/23 4:11:15

完整项目最精简流程:Android <-> 接口 <-> 数据库

Android开发工具:Android Studio

项目目录信息:

一、控件

1.1 TextView

基础属性

描述

layout_width

组件的宽度

layout_height

组件的高度

id

为TextView设置一个组件id

text

设置显示的文本内容

textColor

设置字体颜色

textStyle

设置字体风格,三个可选值:normal(无效果)bold(加粗)italic(斜体)

textSize

字体大小,单位一般用sp

background

控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片

gravity

设置控件中内容的对齐方向,TextView中是文字,ImageView中是图片等

注意:颜色和文本内容在正规开发中应该写到values文件夹中!

带阴影的TextView

描述

android:shadowColor

设置阴影颜色,需要与shadowRadius一起使用

android:shadowRadius

设置阴影的模糊程度,设置0.1就变成字体颜色,建议使用3.0

android:shadowDx

设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置

android:shadowDy

设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置

实现跑马灯效果的TextView

描述

android:singleLine

内容单行显示

android:focusable

是否可以获取焦点

android:focusableInTouchMode

用于控制视图在触摸模式下是否可以聚焦

android:ellipsize

在哪里省略文本

android:marqueeRepeatLimit

字幕动画的重复次数

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.example.demon1.MyTextView
        android:id="@+id/tv_one"
        android:text="@string/tv_one"
        android:textColor="#FF000000"
        android:textStyle="bold"
        android:textSize="30sp"
        android:gravity="center"
        android:shadowColor="@color/red"
        android:shadowRadius="3.0"
        android:shadowDx="10.0"
        android:shadowDy="10.0"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        >

    </com.example.demon1.MyTextView>


</LinearLayout>x

MainActivity.java

package com.example.demon1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

//        TextView tv_one = findViewById(R.id.tv_one);//获取TextView控件
//        tv_one.setText("LIU");//java中的文本代码会覆盖掉XML中的文本"一点点"
    }
}

MyTextView.java

package com.example.demon1;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
import androidx.annotation.Nullable;

import android.annotation.SuppressLint;
@SuppressLint("AppCompatCustomView")

public class MyTextView extends TextView{
    public MyTextView(Context context) {
        super(context);
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

1.2 Button

StateListDrawable

StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点<selector>,我们只需要将Button的background属性设置为drawable资源即可轻松实现,按下按钮时不同的按钮颜色或背景。

属性

描述

drawable

引用的Drawable位图

state_focused

是否获得焦点

state_pressed

控件是否被按下

state_enabled

控件是否可用

state_selected

控件是否被选择,针对有滚轮的情况

state_checked

控件是否被勾选

state_checkable

控件可否被勾选,eg:checkbox

state_window_focused

是否获得窗口焦点

state_active

控件是否处于活动状态,eg:slidingTab

state_single

控件包含多个子控件时,确定是否只显示一个子控件

state_first

控件包含多个子控件时,确定第一个子控件是否处于显示状态

state_middle

控件包含多个子控件时,确定中间第一个子控件是否处于显示状态

state_last

控件包含多个子控件时,确定最后一个子控件是否处于显示状态

实现未按button时的icon以及绿色,按下button时另一种icon和红色

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:text="按钮"
        android:background="@drawable/btn_selector"
        android:backgroundTint="@color/btn_color_selector"
        android:layout_width="200dp"
        android:layout_height="100dp">

    </Button>



</LinearLayout>

btn_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/ic_baseline_3p_24" android:state_pressed="true">

    </item>

    <item android:drawable="@drawable/ic_baseline_10k_24"></item>


</selector>

Button点击事件

Button长按事件

Button触摸事件

        //点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

        //长按事件
        btn.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                return false;
            }
        });
        
        //触摸事件
        btn.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                return false;
            }
        });

1.3 EditText

主要属性

描述

android:hint

输入提示

android:textColorHint

输入提示文本的颜色

android:inputType

输入类型

android:drawableXxxx

在输入框的指定方位添加图片

android:drawablePadding

设置图片与输入内容的间距

android:padddingXxxx

设置内容与边框的间距

android:background

背景色

MainActivity.java

package com.example.myedittext;



import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    public static final String TAG = "YOUR-TAG-NAME";
    private EditText et;

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

         Button btn = findViewById(R.id.btn);

         et =  findViewById(R.id.et);

         btn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 String text =  et.getText().toString();
                 Log.e(TAG, "输入的内容: "+text);
             }
         });

    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <EditText
        android:id="@+id/et"
        android:hint="请输入用户名"
        android:textColorHint="#95a1aa"
        android:layout_width="200dp"
        android:layout_height="100dp"
        >

    </EditText>


    <EditText
        android:hint="请输入密码"
        android:textColorHint="#95a1aa"
        android:inputType="textPassword"
        android:drawableLeft="@drawable/ic_baseline_account_box_24"
        android:drawablePadding="15dp"
        android:paddingLeft="20dp"
        android:background="@color/white"
        android:layout_width="200dp"
        android:layout_height="100dp"
        >

    </EditText>

    <Button
        android:id="@+id/btn"
        android:text="获取用户名"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </Button>

</LinearLayout>

1.4 ImageView

主要属性

描述

android:src

设置图片资源

android:scaleType

设置图片缩放类型

android:maxHeight

最大高度

android:,maxWidth

最大宽度

android:adjustViewVounds

调整View的界限

缩放类型:

  • fitStart:保持宽高比缩放图片,直到较长的边与Image的边长相等,缩放完成后将图片放在ImageView的左上角

  • fitCenter:默认值,同上,缩放后放于中间

  • fintEnd:同上,缩放后放于右下角

  • fitXY:对图像的横纵方向进行独立缩放,使得该图片完全适应ImageView,但是图片的宽高比可能会发生改变

  • center :保持原图大小,显示在ImageView的中心。当原图size大于ImageView的size,超过部分裁剪处理。

  • centerInside:保持宽高比缩放图片,直到ImageView能够完全地显示图片

  • matrix:不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:src="@drawable/a1"
        android:scaleType="fitXY"
        android:layout_width="200dp"
        android:layout_height="200dp"/>


    <ImageView
        android:src="@drawable/a2"
        android:maxWidth="200dp"
        android:maxHeight="300dp"
       android:adjustViewBounds="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 学习笔记(借鉴黑马程序员Linux课程)

Linux视频课程 简介 Linux诞生于1991年&#xff0c;由林纳斯托瓦兹在21岁时完成。此后成为最为流行的服务器操作系统之一。 Linux内核和系统发行版 由Linux系统内核和系统级应用程序两部分组成。 内核提供系统最核心的功能&#xff0c;如&#xff1a;调度CPU、调度内存、调…

【笑小枫的按步照搬系列】Redis多系统安装(Windows、Linux、Ubuntu)

笑小枫&#x1f495; 欢迎来到笑小枫的世界&#xff0c;喜欢的朋友关注一下我呦&#xff0c;大伙的支持&#xff0c;就是我坚持写下去的动力。 微信公众号&#xff1a;笑小枫 笑小枫个人博客&#xff1a;https://www.xiaoxiaofeng.com Windows 下安装 方式一&#xff1a;https…

HCL(新华三模拟器)如何连接CRT及改界面颜色

我使用的HCL版本是2.1.1官网下载连接&#xff1a;https://www.h3c.com/cn/Service/Document_Software/Software_Download/Other_Product/H3C_Cloud_Lab/Catalog/HCL/&#xff0c;一键直达下载官网这个版本可以适配virtualbox的5.2.44的版本&#xff0c;同时支持华为的ensp模拟器…

Spring Security 表单配置(一)

Spring Security 表单配置&#xff08;一&#xff09;工具版本及环境参考资源配置详细说明工具版本及环境 工具&#xff1a; IDEA 2021.3 Maven 3.8.6 JDK 8 Spring Boot 2.7.7 Spring Securiity 5.7.6 参考资源 Spring Security官网: https://docs.spring.io/spring-security…

javaEE 初阶 — 常见的锁策略

文章目录1. 乐观锁 vs 悲观锁2. 互斥锁 vs 读写锁3. 重量级锁 vs 轻量级锁4. 自旋锁 vs 挂起等待锁5. 公平锁 vs 非公平锁6. 可重入锁 vs 不可重入锁7. synchronized 是哪种锁8. 相关面试题1. 乐观锁 vs 悲观锁 乐观锁 指的是预测锁竞争不是很激烈&#xff0c;也就是指这里做的…

排列组合两个列表中的元素 product(a,b)

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】排列组合两个列表中的元素product(a,b)关于以下python代码表述错误的一项是?from itertools import producta [1,2,3]b [4,5,6]print("【显示】a",a)print("【显示】b",…

修改Keil开发环境背景(修改为黑色主题)

修改Keil开发背景&#xff08;修改为黑色主题&#xff09;引言步骤总结引言 我们平时在Keil uVision5下开发单片机/嵌入式程序的时候&#xff0c;如果始终用的是官方的主题背景&#xff0c;往往会因为背景太白了&#xff0c;而导致视疲劳。我们使用VSCode往往不会有这种困扰&a…

Python处理字符串 中文(汉字)编码示例

在实际开发中&#xff0c;发现打印Python打印经常出现乱码&#xff0c;大部分都是编码引起&#xff0c;这里只是简单说一下utf-8/ gbk/ unicode编码之间的相互转换问题&#xff1a; utf-8是Unix下的一种通用编码&#xff0c;gbk是win环境下的一种汉字编码&#xff0c;unicode是…

计算机组成原理_总线仲裁

计算机组成原理总目录总线仲裁 由于总线连接着多个设备&#xff0c;那么在同一时刻多个设备想要占用总线时&#xff0c;就会发生冲突问题 为了解决冲突问题&#xff0c;就需要规定好所有设备使用设备的优先权&#xff0c;仲裁也就是判断设备占用总线的优先权 例如设备A的任务比…

Docker--安装mysql8--方法/步骤

原文网址&#xff1a;Docker--安装mysql8--方法/步骤_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用docker安装mysql8。 查看mysql版本 https://hub.docker.com/_/mysql/tags 我选择8.0&#xff0c;点击右侧箭头处直接复制命令。 拉取镜像 拉取镜像的命令 docker pul…

RADIANT:一种全新的雷达图像关联网络用于3D目标检测

RADIANT&#xff1a;一种全新的雷达图像关联网络用于3D目标检测 论文地址&#xff1a;RADIANT: Radar-Image Association Network for 3D Object Detection 源码&#xff1a;https://github.com/longyunf/radiant 单位&#xff1a;密歇根大学、福特 动机 作为一种能够直接…

全景剖析阿里云容器网络数据链路(二):Terway EN

作者&#xff1a;余凯 本系列文章由余凯执笔创作&#xff0c;联合作者&#xff1a;阿里云容器服务 谢石 对本文亦有贡献 前言 近几年&#xff0c;企业基础设施云原生化的趋势越来越强烈&#xff0c;从最开始的 IaaS 化到现在的微服务化&#xff0c;客户的颗粒度精细化和可观…

使用小度音箱+Blinker控制ESP01S Relay继电器模块

一. 使用ESP01S模块&#xff0c;PIN脚定义如下&#xff1a; 管脚功能如下&#xff1a; ESP01S模块原理图&#xff1a; ESP01S模块比ESP01模块做了以下优化&#xff1a; LED灯的管脚发生变化&#xff0c;由ESP01的TXD0变成ESP01s的GPIO2引脚&#xff1b;ESP01s模块的IO0、RST、…

Java开发 - Spring MVC框架初体验

前言 上一篇Spring框架感觉写的偏向于理论知识&#xff0c;所以从这篇开始&#xff0c;转变此系列的写作思维&#xff0c;更多的将从实操的角度来讲解Spring MVC框架的使用和相关知识点&#xff0c;会尽量详细&#xff0c;但这一系列课程针对的还是有Java基础的小伙伴&#xf…

树莓派上如何安装anaconda/miniconda环境配置

目录1. 前言2. miniconda下载3. miniconda 安装4. 添加 .bashrc 配置5. Conda 更换源&#xff0c;软件更新6. 部分问题及解决方案报错一&#xff1a;报错二&#xff1a;报错三&#xff1a;7. 卸载miniconda8. 版本问题/注意事项1. 前言 在装完树莓派之后&#xff0c;当你想要使…

()智能指针一) shared_ptr

智能指针(一) 文章目录智能指针(一)shared_ptr1初始化方式make_ptr<>() 和 shared_ptr<>() 的区别shared_ptr维护引用计数需要的信息使用原始的new函数创建shared_ptr使用make_shared创建shared_ptrmake_shared实现异常安全使用make_shared的缺点make_shared 源码解…

从一个Demo说起Dubbo3

简介 2017年的9月份&#xff0c;阿里宣布重启Dubbo的开发维护&#xff0c;并且后续又将Dubbo捐献给了Apache&#xff0c;经过多年的发展已经发布到3.X版本了&#xff0c;Dubbo重启维护之后是否有值得我们期待的功能呢&#xff0c;下面就来看看吧。 Apache Dubbo 是一款微服务…

买英伟达RTX 30 系显卡送《穿越火线》大礼包,你心动了吗?

2022年下半年英伟达一口气推出了RTX 4090、4080、4070 Ti显卡&#xff0c;40系列中的4060也在准备中&#xff0c;而RTX 30 系列在新系列的光芒下显得有些暗淡。 面对40系列即将成为主流的这种情况下&#xff0c;英伟达势必要想一些办法清清30系列显卡的库存&#xff0c;于是英…

上半年要写的博客文章24

上半年要写的博客文章21 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个…

网络工程师备考6章(续3)

6.20 距离矢量路协议与RIP 动态路由协议的第一个分类:距离矢量和链路状态 什么是距离矢量,例如我要从成都自驾去北京,不知道怎么走,决定路径的方式可以问别人怎么到西安,到西安后再问别人下一条路径,怎么到郑州,到郑州再问别人。一跳一跳的不停问别人,类似于距离矢量协…