Android Studio --- [学习笔记]Button、TextView、EditText
说明
- 源代码
- 为了更全面的了解RN,先熟悉一下Android开发
第1章 Android 初体验
1.1 Android开发概述
- Android是Google开发的操作系统
- Android开发是移动应用开发的表现形式之一(Android、IOS、H5 App、Native + H5、 RN、ionic、MUI…)
1.2 Android开发工具
- Android Studio
- 为什么使用Android Studio?
- Android Studio是Google自己推出的Android集成开发工具,且Google已经停止对Eclipse的支持.
1.3 第一个Android应用
- Everything begin with Hello World!
- Android Studio最大的特定是使用Gradle来构建项目…
[部分目录说明]
res
: 存放资源drawable
: 图片layout
: 布局文件mipmap-hdpi
: logo图片values
: 颜色、文字AndroidMainfest.xml
: 应用里面用到的所有内容,都需要在这个里面注册一下
[部分代码说明]
src/main/java/com.skypan.helloworld/MainActivity
内的函数setContentView(R.layout.activity_main)
:表示,使用了activity_main布局
- 打开
activity_main.xml
,将标签名改为如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" />
</LinearLayout>
TextView android:text="Hello World"
: 显示在手机上的值为Hello World
第2章 UI组件
2.1 布局管理器
- 线性布局(LinearLayout)
- 相对布局(RelativeLayout)
- 以上两种占了接近百分之99
LinearLayout(线性布局)
[最常用属性]:
android:id
: 控件的idandroid:layout_width
: 布局的宽度android:layout_height
: 布局的高度android:background
: 布局的背景颜色android:layout_margin
: 布局的左右边距android:layout_padding
: 布局的内侧边距android:orientation
: 布局的方向dp
: 根据屏幕自己算出大小match_parent
: 匹配父元素<View />
: 是所有控件的父类,如<Button />
android: gravity= "bottom"
: 控件子元素的排列方式weight
: 权重,占父元素宽度(剩余)的权重.相当于flex布局
中子元素的属性flex:1
; 把剩余内容按照权重去分配
[小结]:
- 通过Android Studio新建的项目,入口文件是
/app/src/main/java/com.skypan.helloworld/MainActivity
class MainActivity : AppCompatActivity() {override fun onCreate (saveInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}
- 其中
setContentView
使用到了activity_main
:总体的布局样式
2.1.2 RelativeLayout(相对布局)
[最常见属性]:
android:layout_toLeftOf
: 在谁左边android:layout_toRightOf
: 在谁右边android:layout_alignBottom
: 跟谁底部对齐android:layout_alignParentBottom
: 跟父元素底部对齐android:layout_below
: 在谁的下面
[栗子]:
- 靠父元素右下角对齐
<RelativeLayout><Viewandroid:id="@+id/view_1"android:layout_width="100dp"android:layout_height="100dp"android:background="#000000"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"/>
</RelativeLayout>
- View2相对于View1的右边对齐
<RelativeLayout><Viewandroid:id="@+id/view_1"android:layout_width="100dp"android:layout_height="100dp"android:background="#000000"/><Viewandroid:id="@+id/view_2"android:layout_width="100dp"android:layout_height="100dp"android:background="#FF0033"android:layout_toRightOf="@id/view_1"/>
</RelativeLayout>
2.2 TextView
- 文字大小、颜色
- 显示不下使用…
- 文字 + icon
- 中划线、下划线
[栗子]:
- 1.写一个宽度随父元素,高度等于文本高度的按钮控件
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/btn_textview"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="TextView"/>
</LinearLayout>
- 2.点击Button类实现跳转
// MainActivity.java
import andoridx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;public class MainActivity extends AppCompatActivity {// 声明 buttonprivate Button mBtnTextView;@overridepretected void onCreate(Bundle saveInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBtnTextView = (Button) findViewById(R.id.btn_textview);mBtnTextView.setOutClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 跳转到TextView演示界面Intent intent = new Intent(packageContext: MainActivity.this, TextViewActivity.class);startActivity(intent);}})}
}
- 3.能在MainActivity中使用TextViewActivity的原因
AndroidMainfest.xml
配置如下:
<applicationandroid:allowBckup="true"...<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
>
- 4.Java操作的TextView:
android:id="@+id/tv_4"
// TextViewActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;
import android.os.Bundle;
public class TextViewActivity extends AppCompatActivity {private TextView mTv4;@overrideprotected void onCreate (Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_text_view);// 获取 id.tv_4mTv4 = (TextView) findViewById(R.id.tv_4);// 给 id.tv_4划线mTv4.getPaint().setFlags(Paint.STRING_THRU_TEXT_FLAG);// 去锯齿mTv4.getPaint().setAntiAlias(true)}
}
2.3 Button
- 文字大小、颜色
- 自定义背景形状
- 自定义按压效果
- 点击事件
Button样式(简单)
- activity_main.xml
<Buttonandroid:id="@+id/btn_button"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button"android:layout_marginTop="10dp" />
使用java操作控件
// MainActivity.java// 声明控件
private Button mBtnButton
// 找到按钮 btn_button
mBtnButton = (Button) findViewById(R.id.btn_button);
// 给 mBtnButton 添加点击事件
mBtnButton.setOnClickListener(new View.OnClickListener(){// 点击按钮后执行的操作
})
实现跳转
import andoirdx.appcompat.app.AppCompatActivity;
import andoird.widget.Button;
import android.content.Intent;public class MainActivity extends AppCompatActivity {// 声明buttonprivate Button mBtnButton;@overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 找到按钮mBtnButton = (Button) findViewById(R.id.btn_button);mBtnButton.setOnClickListener(new View.OnClickListener() {@ovrridepublic void onClick(View v) {// 跳转到 Button 演示界面Intent intent = new Intent( packageContext: MainActivity.this, ButtonActivity.class);startActivity(intent);}})}
}
做一个矩形的按钮
- 1.在res/drawable -> New -> Drawable resource file -> btn_2.xml
- 代码如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solidandroid:color="#ffffff" /><cornersandroid:radius="15dp" />
按压效果
- res/drawable/bg_btn4.xml
- 样式
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape><solid android:color="#cc7c00" /><corners android:radius="15dp" /></shape></item><item android:state_pressed="false"><shape><solid android:color="#ff9900"><corners android:radius="15dp" /></shape></item>
</selector>
- 引用如下
activity_button.xml
<Buttonandroid:id="@+id/btn_4"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/btn_3"android:layout_marginTop="5dp"android:text="Button 4"android:textSize="20sp"android:textColor="#0066ff"android:background="@drawable/bg_btn4" />
点击按钮,响应Toast
- 假设有按钮如下:
activity_button.xml
<Button...android:onClick="showToast" />
- 对应Java文件
ButtonActivity.java
中加入如下:
public void showToast(View view) {Toast.makeText(context: this, text:'点击', Toast.LENGTH_SHORT).show();
}
[报错]:
Could not find method showToast(View) in a parent or ancestor Context for android
: 写按钮触发事件的时候,没有传入参数View view
,将public void showToast()
改为public void showToast(View view)
点击按钮,响应Toast[方法2]
- [核心方法] :
Button.setOnClickListener()
- 假设有按钮如下:
activity_button.xml
<Buttonandroid:id="@+id/btn_3"....
/>
- 对于的Java文件
ButtonActivity.java
中加入如下:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;public class ButtonActivity extends AppCompatActivity {private Button mBtn3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mBtn3 = (Button) findViewById(R.id.btn_3);mBtn3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(ButtonActivity.this, 'btn3被点击', Toast.LENGTH_SHORT).show();}})}
}
给TextView控件添加点击事件
- TextView控件
activity_button.xml
,如下:
<TextViewandroid:id="@+id/tv_1"...
/>
- 在Java中获取控件,并设置点击事件
ButtonActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;public class ButtonActivity extends AppCompatActivity {private TextView mTv1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// tv_1的点击事件mTv1 = (TextView) findViewById(R.id.tv_1);mTv1.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v) {Toast.makeText(ButtonActivity.this, "TextView被点击", Toast.LENGTH_SHORT).show();}})}
}
2.4 EditText(输入控件)
- 常用属性
- 监听事件
- 制作登录界面
2.4.1 加一个跳转页面的按钮
- 按钮样式:
activity_main.xml
<Buttonandroid:id="@+id/btn_edittext"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="EditText"android:textAllCaps="false"/>
- 按钮的点击事件:
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.context.Intent;
import android.widget.Button;
import android.view.View;public class MainActivity extends AppCompatActivity {// 声明buttonprivate Button mBtnEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 找到 btn_edittextmBtnEditText = (Button) findViewById(R.id.btn_edittext);mBtnEditText.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 跳转到 EditText 界面// 这里先假设有 EditTextActivityIntent intent = new Intent(MainActivity.this, EditTextActivity.class);startActivity(intent);}});}
}
- 按钮的活动页面:
activity_edit_text.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="15dp"><EditTextandroid:id="@+id/et_1"android:layout_width="match_parent"android:layout_height="50dp"android:textSize="16sp"android:textColor="#ffad33"android:hint="用户名"/><EditTextandroid:id="@+id/et_2"android:layout_width="match_parent"android:layout_height="50dp"android:layout_below="@id/et_1"android:hint="密码"android:inputType="textPassword"android:layout_marginTop="5dp"/>
</RelativeLayout>
- 给用户名输入框
activity_edit_text.xml
加样式 - 输入控件如下
<EditTextandroid:id="@+id/et_1"...android:background="@drawable/bg_username"
/>
- 在res/drawable -> New -> Drawable resource file -> bg_username.xml(shape)
- 写入形状如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><strokeandroid:width="1dp"andorid:color="#999999" /><cornersandroid:radius="5dp"/>
Android Studio --- [学习笔记]Button、TextView、EditText相关推荐
- Android Studio --- [学习笔记]RadioButton、CheckBox、ImageView、ListView、TCP的三次握手
说明 源代码 在2.x里有TCP的三次挥手与四次握手,先对它进行简单的回答(百度).预计在下一篇里,会继续说明TCP 接上一篇: Android Studio - > [学习笔记]Button. ...
- 安卓开发Android studio学习笔记12:读取解析XML(案例演示)
Android studio学习笔记 第一步:配置Student.XML 第二步:配置activity_main.xml 第三步:配置student.xml 第四步:配置Student用户类 第五步: ...
- Android Studio --- [学习笔记]TCP(第2弹)、GridView、ScrollView
说明 这篇主要接上一篇Android Studio - > [学习笔记]RadioButton.CheckBox.ImageView.ListView.TCP的三次握手 对上面回答的细解,并用J ...
- Android Studio学习笔记(3)--------解决Android Studio模拟器VT-x is disabled的问题
解决VT-x is disabled的问题 Android studio启动模拟器时出现"Intel HAXM is required to run this AVD,VT-x is dis ...
- Android Studio学习笔记
安卓程序学习Day1,特此记录 activity.xml写UI框架 main.Activity.java写业务代码 java文件调用流程 1初始化 2绑定事件id 3自定义动作
- 弹窗与Log信息打印_Android Studio学习笔记(3)
Android Studio学习笔记3 1.弹窗·Toast类 2.Log打印信息·Log类 对类的一些小理解: 1.弹窗·Toast类 (1)MainActivity.java文件里的onCreat ...
- Android Studio学习记录之简单的页面切换及宫格菜单
Android Studio学习记录之简单的页面切换及宫格菜单 之前上课听老师讲的一些东西自己其实并没有消化,今天把不懂的都去网上搜了一下,有了一种恍然大悟的感觉,包括很多方方面面的东西.有些东西听说 ...
- 疯狂Android讲义 - 学习笔记(二)
疯狂Android讲义 - 学习笔记(二) Android应用的用户界面编程 2.1 界面编程与视图(View)组件 Android应用的绝大部分UI组件放在android.widget.androi ...
- Android动画学习笔记
Android实战经验之图像处理及特效处理的集锦 https://www.oschina.net/question/231733_44154 Android动画学习笔记 3.0以前,android支持 ...
最新文章
- 《App架构师实践指南》:移动开发的进阶指南
- TCGAbiolinks包下载TCGA数据
- 鸿蒙系统的功能如何,华为鸿蒙系统发布会,这个功能怎么那么像小米MIUI的
- 《你必须知道的495个C语言问题》知识笔记及补充
- 聊聊storm supervisor的启动
- 【杂谈】GAN对人脸图像算法产生了哪些影响?
- VTK:图片之ImageAnisotropicDiffusion2D
- python xlutils函数,python3:xlrd、xlwt、xlutils处理excel文件
- SQL SERVER日期函数详细用法
- JAVA:jar包下载地址大全
- 又出现*_limited.sof的问题了,还有另一个奇怪的现象!
- [NIO]dawn之Task具体解释
- Linux 环境下思源黑体字体与 Java 之间的兼容性问题的解决(补充说明)
- Cisco.Packet.Tracer思科模拟器练习题
- python输入输出字符图形_【Python教程】图片转字符画
- 电子凸轮追剪曲线生成算法 理解后可转成其他品牌PLC或任何一种编程语言
- 考研——生命轨迹中一段无法抹去的铿锵岁月
- python异步查询数据库_Python的Tornado框架实现异步非阻塞访问数据库的示例
- 关于雷蛇耳机麦克风突然失灵
- html 如何去掉超链接下的下划线
热门文章
- VC 2010的MFC函数,CMFCVisualManager::GetInstance()可能导致内存泄露
- Java面向对象入门
- VC动态链接数据库类ADOConn
- php hex2bin nodejs,Nodejs Serialport文档翻译
- python list转换成树形结构_python递归查询菜单并转换成json实例
- 服务器用户配置文件在哪里找,管理远程桌面服务的用户配置文件
- php截取字符串函数 左右,php截取中文字符串函数的技巧
- Faster R-CNN的安装及测试(Python版本和Matlab版本)
- 听技术播客:一边学Python编程一边学英语
- IDEA系列(四)一部署war 和 war exploded的区别