Android第一行代码-UI
Posted 钢铁-程序猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android第一行代码-UI相关的知识,希望对你有一定的参考价值。
文章目录
- UI开发的点点滴滴
UI开发的点点滴滴
一、常用控件的使用方法
1、TextView
如:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_view"
android:text="This is TextView"></TextView>
</LinearLayout>
TextView的部分属性:
- 1、android:id:给当前控件定义一个唯一标识符
- 2、android:layout_width:指定控件宽度
- 3、android:layout_height:指定控件高度
- 4、android:text:指定TextView中显示的文本内容
- 5、android:textSize:指定文字的大小,在android中字体大小使用sp作为单位。
- 6、android:textColor:指定文字的颜色
- 7、android:gravity:[ˈɡrævəti] 引力,重力,指定文字的对齐方式
TextView中的文本内容虽然显示,但是在左上角,因为TextView中的文字默认是左上角对齐的。
使用android:gravity指定文字的对齐方式,可选值有top、bottom、left、right、center。可以用"|"来同时指定多个值。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_view"
android:gravity="center"
android:text="This is TextView"></TextView>
</LinearLayout>
Button
Button是程序用于和用户进行交互的一个重要控件。属性和TextView差不多,可以在activity_main.xml中这样加入Button:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"></TextView>
</LinearLayout>
虽然在布局文件中设置的文字为Button,但是最终显示却是”BUTTOM“,这是由于系统会对Button中的所有英文字母自动进行大写转换。但是可以配置禁用这个默认属性,在Button中修改android:textAllCaps=“false”
android:textAllCaps="false"
可以为Button的点击事件注册一个监听器。
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
//在此添加逻辑
);
点击按钮时,就会执行监听器中的onClick()方法。
也可以通过下面实现接口的方式进行注册。
public class MainActivity extends AppCompatActivity implements View.OnClickListener
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(saveInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
@Override
public void onClick(View v)
switch(v.getId())
case R.id.button:
//再此添加逻辑
break;
default:
break;
EditText
一些属性:
- android:hit:输入框提示内容,一旦输入,提示内容消失
- andorid:maxLines:指定EditText的最大行数。
程序和用户进行交互的另外一个重要控件。
修改activity_main.xml中的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
一般在输入框显示一些提示性的文字,一旦用户输入了任何内容,这些文字提示就会消失。可以通过android:hint属性进行设置。
使用点击按钮获取EditText中输入的内容
package com.example.uiwidgettest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener
private EditText editText;
@Override
protected 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(this);
@Override
public void onClick(View v)
switch (v.getId())
case R.id.button:
//getText方法获取输入的内容
String inputText = editText.getText().toString();
Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();
break;
default:
break;
ImageView(在页面上展示图片的控件,图片防止在res下的以drawable开头的目录中)
图片通常放在以drawable开头的目录下,目前项目中有一个空的drawable目录,但没有指定具体分辨率。所以一般不使用它来放置图片。在res目录下新建一个drawable-xhdpi目录。
在activity_main.xml中添加标签:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image_view"
android:src="@drawable/img_1" />
package com.example.uiwidgettest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener
private EditText editText;
private ImageView imageView;
@Override
protected 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(this);
//通过按钮点击事件将将显示的img_1图片修改为img_2图片
@Override
public void onClick(View v)
switch (v.getId())
case R.id.button:
imageView.setImageResource(R.drawable.img_2);
break;
default:
break;
ProgressBar(进度条,表示程序正在加载一些数据)
用于在页面上显示一个进度条,表示我们的程序正在加载一些数据。
常用属性
android:visibility属性的值:
- 1、visible:控件可见的
- 2、invisible:控件不可见,但是仍然占据着原来的位置和大小,可以理解成控件编程透明状态
- 3、gone:控件不可见,而且不占用任何屏幕空间。
通过style属性可以将它指定成水平进度条(如果不设置是箭头旋转的样式)
android:max属性用于给进度条设置一个最大值。
如何让进度条加载完消失?(Android控件的可见属性,所有的Android控件都具有这个属性,android:visibility)
在activity_main.xml中添加标签。
<!--进度条样式为水平进度条,最大值为100-->
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
/>
我们可以通过代码设置控件的可见性,使用的是setVisibility()方法,可以传入View.VISIBLE、View.INVISIBLE和View.gone
package com.example.uiwidgettest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
progressBar = (ProgressBar)findViewById(R.id.progress_bar);
button.setOnClickListener(this);
//通过按钮点击事件设置进度条,如果进度条可见就将其隐藏,否则将其显示出来。
//通过xml可以看出将进度条修改成了水平进度条样式,每次点击会将进度条的值加10.
@Override
public void onClick(View v)
switch (v.getId())
case R.id.button:
int progress = progressBar.getProgress();
progress = progress+10;
progreeBar.setProgress(progress);
if(progressBar.getVisibility() == View.GONE)
progressBar.setVisibility(View.VISIBLE);
else
progressBar.setVisibility(View.GONE);
break;
default:
break;
AlertDialog(不需在主活动中添加标签。可以在当前页面弹出一个对话框,这个对话框置顶于所有页面元素之上,能够屏蔽掉其他控件的交互能力)
package com.example.uiwidgettest;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
progressBar = (ProgressBar)findViewById(R.id.progress_bar);
button.setOnClickListener(this);
@Override
public void onClick(View v)
switch (v.getId())
case R.id.button:
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
//设置对话框标题
dialog.setTitle("This is Dialog");
dialog.setMessage("Something important.");
dialog.setCancelable(false);
//设置确定按钮的点击事件
dialog.setPositiveButton("ok", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
);
//设置取消按钮的点击事件
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
);
//将对话框显示出来。
dialog.show();
default:
break;
ProgressDialog
ProgressDialog和AlertDialog有点类似,都会在界面上弹出一个对话框,都能够屏蔽掉其它控件的交互能力。不同的是,ProgressDialog会在会话框中显示一个进度条。
public class MainActivity extends AppCompatActivity implements View.OnClickListener
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected 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(this);
@Override
public void onClick(View v)
switch (v.getId())
case R.id.button:
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
//设置标题
progressDialog.setTitle("This is ProgressDialog");
//设置内容
progressDialog.setMessage("Loading以上是关于Android第一行代码-UI的主要内容,如果未能解决你的问题,请参考以下文章