当前位置: 首页 > news >正文

第三章 UI开发的点点滴滴

一、常用控件的使用方法

1.TextView

android:gravity="center" 可选值:topbottomleftrightcenter等,可以用"|"来同时指定多个值,center表示文字在垂直和水平方向都居中

android:textSize 指定文字的大小,单位为sp

android:textColor 指定文字的颜色

<TextViewandroid:id="@+id/test_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="This is TestView"/>

在这里插入图片描述

<TextViewandroid:id="@+id/test_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="This is TestView"/>

在这里插入图片描述

<TextViewandroid:id="@+id/test_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:textSize="24sp"android:textColor="#00ff00"android:text="This is TestView"/>

在这里插入图片描述

2.Button

<Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button"/>

在这里插入图片描述
android:textAllCaps="false" 破解系统对Button英文字母自动进行大写转换

<Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button"android:textAllCaps="false"/>

在这里插入图片描述
在main函数中给Button添加监听器

Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 在此处添加逻辑}});

3.EditText

<EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"/>

在这里插入图片描述
android:hint="Type something here" 提示性文字,一旦用户输入任何内容,提示性的文字就会消失

<EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="Type something here"/>

在这里插入图片描述
在这里插入图片描述
android:maxLines="2" 指定EditText的最大行数为两行,当输入的内容超过两行时,文本就会向上滚动,EditText不会继续拉伸

<EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="Type something here"android:maxLines="2"/>

在这里插入图片描述
综合使用EditText和Button完成:通过点击按钮来获取EditText中输入的内容
不能按照书上那么写,会报错
在这里插入图片描述
适当改动的代码:

private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);editText = (EditText) findViewById(R.id.edit_text);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:String inputText = editText.getText().toString();Toast.makeText(MainActivity.this, inputText,Toast.LENGTH_SHORT).show();break;default:break;}}});}

在这里插入图片描述

4.ImageView

在res下新建文件夹:drawable-xhdpi
在这里插入图片描述

<ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/img_1"/>

在这里插入图片描述
在程序中通过代码动态更改ImageView中的图片:
imageView.setImageResource(R.drawable.img_2);

private EditText editText;private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);editText = (EditText) findViewById(R.id.edit_text);imageView = (ImageView) findViewById(R.id.image_view);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:
//                        String inputText = editText.getText().toString();
//                        Toast.makeText(MainActivity.this, inputText,
//                                Toast.LENGTH_SHORT).show();imageView.setImageResource(R.drawable.img_2);break;default:break;}}});}

在这里插入图片描述

5.ProgressBar

在界面上显示一个进度条,表示程序正在加载一些数据
在这里插入图片描述
所有Android控件都具有可见属性,通过android:visibility指定,可选值:visible,invisible,gone
不指定android:visibility时,控件都是可见的。invisible 表示控件不可见,但是它仍然占据原来的位置和大小。gone表示空间不仅不可见,而且不再占用任何屏幕看空间
代码设置控件的可见性:setVisibility(),可以传入View.VISIBLEView.INVISIBLEView.GONE

下面几个功能实现有问题 img1为图片一个也看不到下面的进度条 img2为图片显示则都能看到
点击一下按钮让进度条消失,再点击一下按钮让进度条出现

public class MainActivity extends AppCompatActivity {private EditText editText;private ImageView imageView;private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);editText = (EditText) findViewById(R.id.edit_text);imageView = (ImageView) findViewById(R.id.image_view);progressBar = (ProgressBar) findViewById(R.id.progress_bar);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:
//                        String inputText = editText.getText().toString();
//                        Toast.makeText(MainActivity.this, inputText,
//                                Toast.LENGTH_SHORT).show();
//                        imageView.setImageResource(R.drawable.img_2);if (progressBar.getVisibility() == View.GONE) {progressBar.setVisibility(View.VISIBLE);} else {progressBar.setVisibility(View.GONE);}break;default:break;}}});}

给ProgressBar 指定不同的格式

<ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:max="100"/>

动态改变进度条的进度

@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:
//                        String inputText = editText.getText().toString();
//                        Toast.makeText(MainActivity.this, inputText,
//                                Toast.LENGTH_SHORT).show();
//                        imageView.setImageResource(R.drawable.img_2);
//                        if (progressBar.getVisibility() == View.GONE) {
//                            progressBar.setVisibility(View.VISIBLE);
//                        } else {
//                            progressBar.setVisibility(View.GONE);
//                        }int progress = progressBar.getProgress();progress = progress + 10;progressBar.setProgress(progress);break;default:break;}}

在这里插入图片描述

6.AlertDialog

public class MainActivity extends AppCompatActivity {private EditText editText;private ImageView imageView;private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);editText = (EditText) findViewById(R.id.edit_text);imageView = (ImageView) findViewById(R.id.image_view);progressBar = (ProgressBar) findViewById(R.id.progress_bar);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:
//                        String inputText = editText.getText().toString();
//                        Toast.makeText(MainActivity.this, inputText,
//                                Toast.LENGTH_SHORT).show();
//                        imageView.setImageResource(R.drawable.img_2);
//                        if (progressBar.getVisibility() == View.GONE) {
//                            progressBar.setVisibility(View.VISIBLE);
//                        } else {
//                            progressBar.setVisibility(View.GONE);
//                        }
//                        int progress = progressBar.getProgress();
//                        progress = progress + 10;
//                        progressBar.setProgress(progress);AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);dialog.setTitle("This is Dialog");dialog.setMessage("Something important.");dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {}});dialog.show();break;default:break;}}});}

在这里插入图片描述

7.ProgressDialog

public class MainActivity extends AppCompatActivity {private EditText editText;private ImageView imageView;private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);editText = (EditText) findViewById(R.id.edit_text);imageView = (ImageView) findViewById(R.id.image_view);progressBar = (ProgressBar) findViewById(R.id.progress_bar);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button:
//                        String inputText = editText.getText().toString();
//                        Toast.makeText(MainActivity.this, inputText,
//                                Toast.LENGTH_SHORT).show();
//                        imageView.setImageResource(R.drawable.img_2);
//                        if (progressBar.getVisibility() == View.GONE) {
//                            progressBar.setVisibility(View.VISIBLE);
//                        } else {
//                            progressBar.setVisibility(View.GONE);
//                        }
//                        int progress = progressBar.getProgress();
//                        progress = progress + 10;
//                        progressBar.setProgress(progress);
//                        AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
//                        dialog.setTitle("This is Dialog");
//                        dialog.setMessage("Something important.");
//                        dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
//                            @Override
//                            public void onClick(DialogInterface dialogInterface, int i) {
//
//                            }
//                        });
//                        dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
//                            @Override
//                            public void onClick(DialogInterface dialogInterface, int i) {
//
//                            }
//                        });
//                        dialog.show();ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setTitle("This is ProgressDialog");progressDialog.setMessage("Loading...");progressDialog.setCancelable(true);progressDialog.show();break;default:break;}}});}
}

在这里插入图片描述

二、四种基本布局

在这里插入图片描述

1.线性布局

android:orientation属性指定控件的排列方向,垂直排列是vertical,水平排列是horizontal

android:layout_gravity 指定控件在布局中的对齐方式

android:layout_weight 使用比例的方式来指定控件的大小

dp是Android用于指定控件大小和间距等属性的单位

2.相对布局

控件相对于父布局进行定位:

android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"

控件相对于控件进行定位:

android:layout_above="@id/button_2"
android:layout_toLeftOf="@id/button_2"
android:layout_below="@id/button_2"

3.帧布局

所有控件默认摆放在布局的左上角,可以使用layout_gravity属性来指定控件在布局中的对齐方式

4.百分比布局

添加百分比布局依赖:implementation 'androidx.percentlayout:percentlayout:1.0.0'

http://www.lryc.cn/news/223075.html

相关文章:

  • 637. 二叉树的层平均值
  • 【Java笔试强训】Day9(CM72 另类加法、HJ91 走方格的方案数)
  • django REST框架- Django-ninja
  • 数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表
  • Web学习笔记-Vue3(环境配置、概念、整体布局设计)
  • 【React-Native开发3D应用】React Native加载GLB格式3D模型并打包至Android手机端
  • python的列表
  • [100天算法】-最短无序连续子数组(day 66)
  • 001. 变量、环境变量
  • 软考软件设计师刷题笔记整理
  • Canal
  • SpringBoot实现mysql与clickhouse多数据源
  • 为什么是LangChain?
  • Labview的分支判断
  • 蓝桥杯双周赛算法心得——串门(双链表数组+双dfs)
  • mysql 配置主从复制 及 Slave_SQL_Running = no问题排查
  • 再获5G RedCap能力认证!宏电5G RedCap工业智能网关通过中国联通5G物联网OPENLAB开放实验室测试验证
  • 牛客--汽水瓶python
  • TSINGSEE智能分析网关V4车辆结构化数据检测算法及车辆布控
  • git解决冲突的方法。
  • [MT8766][Android12] 取消WIFI热点超过10分钟没有连接自动关闭设定
  • 智能中仍存在着许多未被发现的逻辑
  • 基于公共业务提取的架构演进——外部依赖防腐篇
  • uniapp小程序接入腾讯云【增强版人脸核身接入】
  • Sass 最基础的语法
  • 2023年11月数据库流行度最新排名
  • JavaEE-部署项目到服务器
  • 计算机网络期末复习-Part1
  • Redis系列-Redis过期策略以及内存淘汰机制【6】
  • 多语言翻译软件 Mate Translate mac中文版特色功能