Android——UI开发的点点滴滴1
1.1常用控件的使用方法
1.1.1 TextView
主要用于在界面上显示一段文本信息。
补充:android:gravity指定文字的对齐方式,可选值有top,bottom,left,right,center等,可用" | "来同时指定多个值,这里的center相当于center_vertical | center_horizontal.
Android中字体的大小使用sp作为单位。
1.1.2 Button
补充:我们在布局文件里设置的是"button",显示结果却是"Button",这是由于系统会对Button中的所有英文字母自动进行大写转换,可以这样改变
android:textAllCaps="false
布局写好之后,就可以在MainActivity中为Button的点击事件注册一个监听器,每当点击按钮时,就会执行监听器中onClick()方法,我们只需要在这个方法里添加逻辑就行。
1.1.3 EditText
是程序用于和用户交互的另一个重要控件,允许在控件里输入和编辑内容,并可以在程序中对这些内容进行处理。例如发短信,发微博,条田都需要使用EditText。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_height="match_parent"android:layout_width="match_parent"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/textView"/></LinearLayout>
android:hint属性可以指定一段提示性文本,当我们输入任何内容时这段文本会消失。
<EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="type something here"android:id="@+id/textView"/>
android:maxLines属性可以指定最大行数,当超过指定的最大行数时,文本会向上滚动,EditText不会继续拉伸。我们可以结合EditText与Button来完成一些功能。
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);final EditText editText = (EditText) findViewById(R.id.edit_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();break;default:break;}}});
}
先通过findViewById()方法找到EditText的实例,然后在按钮的点击事件里调用EditText的getText()方法获取到输入内容,再调用toString()方法转换成字符串,最后使用Toast将输入内容显示出来。
1.1.4 ImageView
ImageView是用于在界面上展示图片的一个控件,图片通常放在"drawable"开头的目录下。这里我们将事先准备好的图片放进去。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"......<ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/image_view"android:src="@drawable/img_1"/></LinearLayout>
这里使用了android:src属性给ImageView指定了一张图片。
这里还可以通过代码动态地更改ImageView中的图片,修改MainActivity中地代码:
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final Button button = (Button) findViewById(R.id.button);final EditText editText = (EditText) findViewById(R.id.edit_view);final ImageView 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;}}});
}
通过调用ImageView的setImageResource()方法将显示的图片改变成另一个,现在点击一下按钮就会改变。
1.1.5 ProgressBar
ProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据
<ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/progress_bar" />
重新运行程序,会看到屏幕中有一个圆形进度条正在旋转。
此时接触一个新的知识点,Android控件的可见属性,所有控件都有这个属性,可以通过android:visibility进行选定,可选值有三个:visible,invisible,gone。visible表示控件是可见的,invisible表示控件不可见,gone表示控件不仅不可见,而且不会占用任何屏幕空间,我们还可以通过代码来设置控件的可见性,使用setVisibility()方法,可以传入View.VISIBLE,View.INVISIBLE,View.GONE这三种值。
接下来尝试,点击按钮让进度条消失,再点击一下按钮让进度条出现,修改MainActivity中的代码
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final Button button = (Button) findViewById(R.id.button);final EditText editText = (EditText) findViewById(R.id.edit_view);final ImageView imageView = (ImageView) findViewById(R.id.image_view);final ProgressBar 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;}}});
}
通过getVisibility()方法来判断ProgressBar是否可见,可见就隐藏掉,不可见就显示出来。
另外,还可以给ProgressBar指定不同的样式,通过style属性将它指定成水平进度条,修改activity_main.xml中的代码
<ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/progress_bar"android:max="100"style="?android:attr/progressBarStyleHorizontal" />
可以通过android:max属性给进度条设置一个最大值,然后再在代码中动态地更改进度条的进度,修改MainActivity中的代码
public void onClick(View view) {switch (view.getId()){case R.id.button:int progress = progressBar.getProgress();progress = progress + 10;progressBar.setProgress(progress);break;default:break;}
}
每点击一次按钮,我们就获取当前的进度,然后在现有的进度加上10作为更新后地进度。点击几次效果如图:
1.1.6 AlertDialog
AlertDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上,能够屏蔽掉其他控件的交互能力,所以AlertDialog一般都是用于提示一些非常重要的内容或者警告信息。
修改MainActivity中的代码
public void onClick(View view) {switch (view.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() {@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;}
}
首先通过AlertDialog.Builder创建一个AlertDialog的实例然后可以为这个对话框设置标题,内容,可否用Back键关闭对话框,接下来调用setPositiveButton()方法为对话框设置确定按钮的点击事件,调用setNegativeButton()方法设置取消按钮的点击事件,最后调用show()方法将对话框显示出来
1.1.7 ProgressDialog
progressDialog与AlertDialog有点类似,都可以在界面上弹出一个对话框,能屏蔽其他控件的交互能力,不同的是ProgressDialog会在对话框中显示一个进度条,一般用于当前操作比较耗时,让用户耐心等待。
修改MainActivity中的代码
public void onClick(View view) {switch (view.getId()){case R.id.button:ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);progressDialog.setTitle("This is ProgressDialog");progressDialog.setMessage("Loading...");progressDialog.setCancelable(true);progressDialog.show();break;default:break;}
}
注意:如果在setCancelable()中传入了false,表示不能通过Back键取消掉,这时一定要做好控制,在数据加载完后必须要调用ProgressDialog的dismiss()方法来关闭对话框,否则,ProgressDialog会一直存在。
Android——UI开发的点点滴滴1相关推荐
- Android UI开发第二十五篇——分享一篇自定义的 Action Bar
Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...
- Android UI开发第三十九篇——Tab界面实现汇总及比较
Tab布局是iOS的经典布局,Android应用中也有大量应用,前面也写过Android中TAb的实现,<Android UI开发第十八篇--ActivityGroup实现tab功能>.这 ...
- Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)
文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...
- 【Android -- UI开发】一份 UI 开发学习指南
思维导图 推荐资料:官方文档 六大布局 网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 请看文章:[Android – UI 开发]六大布局 U ...
- Android UI开发——AppCompat实现Action Bar
http://blog.csdn.net/xyz_lmn/article/details/12623609 每一位Android开发者对Action Bar这种设计都不陌生了,毕竟它已经发布了至少两年 ...
- Android UI开发第四篇——实现像handcent sms或者chomp sms那样的气泡短信样式
今晚有点时间把断了很长时间的UI开发补一下,这次实现的是像handcent sms或者chomp sms那样的气泡短信样式,也是iphone上的气泡聊天模式.实现这种效果的重点是ListView的di ...
- 第一行代码学习笔记第三章——UI开发的点点滴滴
知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...
最新文章
- AM335X can驱动移植
- BZOJ1008[HNOI2008]越狱
- 带有Java Util日志记录的Java 8延迟调用
- 简化java_JAVA之旅-简化java开发
- 人工智障学习笔记——机器学习(5)朴素贝叶斯
- 论重写和里式替换原则(LSP)
- RocketMQ源码解析-Consumer启动(1)
- swagger: fetching resource list: http://localhost:8080/template/v2/api-docs?group=springboot-templat
- java保存的时候保存多张表,表驱动,如何在表中存储一个方法
- AI招聘公司Moka再融1.8亿,90后学霸创始团队靠变革HR年入3000万
- LeetCode-326. Power of Three
- 使用Vue做评论+localStorage存储(js模块化)
- Atitit.可视化与报表原理与概论
- Flink 动态配置(参数 算子 CEP)
- 【数据挖掘】通用论坛正文提取
- html黑洞效果,html5黑洞动画特效
- 浅析汽车融资租赁业务模式
- 国内外贵金属白银有何区别?
- javax.crypto.BadPaddingException Given final block not properly padded?
- Django的模板语言DTL介绍以及渲染方式
热门文章
- vb UBound 数据上界
- 如何判断数字里含有某数字
- 还不了解游戏建模教程吗?看完这篇文章让你从小白变为油条
- 酒仙桥 asp.net 面试
- 有关《家》的经典歌曲_浅谈艺术歌曲《家》的演唱
- 云计算基础之如何学习云计算?
- android 浏览器隐藏地址,移动端隐藏手机浏览器的地址栏一下底部的菜单栏
- swagger2 注解
- Caused by: java.lang.RuntimeException: Font asset not found fonts/SYFZLTKHJW.TTF
- 一些学习,有趣,电影,资源网址