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相关推荐

  1. Android UI开发第二十五篇——分享一篇自定义的 Action Bar

    Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...

  2. Android UI开发第三十篇——使用Fragment构建灵活的桌面

    http://www.lupaworld.com/article-222973-1.html 当我们设计应用程序时,希望能够尽最大限度的适配各种设备,包括4寸屏.7寸屏. 10寸屏等等,Android ...

  3. Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现

    周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...

  4. Android UI开发第三十九篇——Tab界面实现汇总及比较

    Tab布局是iOS的经典布局,Android应用中也有大量应用,前面也写过Android中TAb的实现,<Android UI开发第十八篇--ActivityGroup实现tab功能>.这 ...

  5. 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 布局的创 ...

  6. 【Android -- UI开发】一份 UI 开发学习指南

    思维导图 推荐资料:官方文档 六大布局 网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 请看文章:[Android – UI 开发]六大布局 U ...

  7. Android UI开发——AppCompat实现Action Bar

    http://blog.csdn.net/xyz_lmn/article/details/12623609 每一位Android开发者对Action Bar这种设计都不陌生了,毕竟它已经发布了至少两年 ...

  8. Android UI开发第四篇——实现像handcent sms或者chomp sms那样的气泡短信样式

    今晚有点时间把断了很长时间的UI开发补一下,这次实现的是像handcent sms或者chomp sms那样的气泡短信样式,也是iphone上的气泡聊天模式.实现这种效果的重点是ListView的di ...

  9. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

最新文章

  1. AM335X can驱动移植
  2. BZOJ1008[HNOI2008]越狱
  3. 带有Java Util日志记录的Java 8延迟调用
  4. 简化java_JAVA之旅-简化java开发
  5. 人工智障学习笔记——机器学习(5)朴素贝叶斯
  6. 论重写和里式替换原则(LSP)
  7. RocketMQ源码解析-Consumer启动(1)
  8. swagger: fetching resource list: http://localhost:8080/template/v2/api-docs?group=springboot-templat
  9. java保存的时候保存多张表,表驱动,如何在表中存储一个方法
  10. AI招聘公司Moka再融1.8亿,90后学霸创始团队靠变革HR年入3000万
  11. LeetCode-326. Power of Three
  12. 使用Vue做评论+localStorage存储(js模块化)
  13. Atitit.可视化与报表原理与概论
  14. Flink 动态配置(参数 算子 CEP)
  15. 【数据挖掘】通用论坛正文提取
  16. html黑洞效果,html5黑洞动画特效
  17. 浅析汽车融资租赁业务模式
  18. 国内外贵金属白银有何区别?
  19. javax.crypto.BadPaddingException Given final block not properly padded?
  20. Django的模板语言DTL介绍以及渲染方式

热门文章

  1. vb UBound 数据上界
  2. 如何判断数字里含有某数字
  3. 还不了解游戏建模教程吗?看完这篇文章让你从小白变为油条
  4. 酒仙桥 asp.net 面试
  5. 有关《家》的经典歌曲_浅谈艺术歌曲《家》的演唱
  6. 云计算基础之如何学习云计算?
  7. android 浏览器隐藏地址,移动端隐藏手机浏览器的地址栏一下底部的菜单栏
  8. swagger2 注解
  9. Caused by: java.lang.RuntimeException: Font asset not found fonts/SYFZLTKHJW.TTF
  10. 一些学习,有趣,电影,资源网址