Android的UI设计
一、Android控件
1、TextView
属性:id、width、height、gravity(对齐方式)、textSize(文字大小)、textColor(文字颜色)
2、Button
属性:id、width、height...
监听器:setOnClickListener()
3、EditText
属性:id、width、height、hint、android.maxLines(超出部分)
方法:getText()
4、ImageView
属性:id、width、height、src()
方法:setImageResource()
5、ProgressBar
属性:id、width、height、style、max(最大值)
方法:控件可见与不可见:setVisibility(visible、invisible、gone)
6、AlertDialog
方法:setTitle()、setMessage()、setCancelable(false)(不能通过back键取消)、setPositiveButton()、setNegatiButton()、show()
7、ProgressDialog
方法:setTitle()、setMessage()、setCancelable()、show()
二、布局
1、LinerLayout
属性:orientation(当设置为方向是horizontal时,控件宽度不能为match_parent)、layout_gravity、layout_weight
2、RelativeLayout
属性:layout_alignParentLeft/Top/Right/bottom、layout_centerInParent
3、FrameLayout
所有控件都在布局的左上角
4、TableLayout
表格的方式排列控件
属性:layout_span(占据的空间)、stretchColumns(自动适应屏幕宽度)
三、自定义控件
自定义布局
步骤:1、创建布局
2、在activity_main.xml中插入<include layout="@layout/布局名">即可引入自己创建的布局
3、隐藏原系统中自带的布局
自定义控件
加载布局title
public class TitleLayout extends LinearLayout{
public TitleLayout(Context context,AttributeSet attrs){
super(context,attrs);
LayoutInflater.from(context).inflate(R.layout.title,this); //动态加载布局title
}
}
修改activity_main.xml
<com.example.uicustomviews.TitleLayout
amdroid:layout_width="match_parent"
android:layout_height="wrap_parent"
></com.example.uicustomvices.TitleLayout>
四、ListView
数据、构建适配器、控件对象、设置适配器
自定义ListView
1、构建实体类
2、自定义布局
3、自定义适配器,extends ArrayAdapter,传递参数包括context、子项布局textViewResource和数据data
4、重写getView(),在getView()方法中调用getItem()获得当前实体的实例,然后用LayoutInflater将子项加载到布局,获取控件对象,并调用setImageResource()和setText()显示图片和文字。
优化ListView
1、避免重复加载布局
convertView将加载好的布局进行缓存,便于以后重用。
public View getView(int position,View convertView,ViewGroup parent){
Fruit fruit = getItem(positiong);
View view;
if(convertView == null){
view = Layoutflater.from(getContext()).inflate(resourceId,null);
}else{
viwe = convertView;
}
......
}
2、避免重复调用findViewById()
借助ViewHolder
......
ViewHolder viewHolder;
if(convertView == null){
view = LayoutInflater.from(getContext()).inflate(resourceId,null);
viewHolder = new ViewHolder();
viewHolder.fruitImage = (ImageView)findViewById(R.id.fruit_image);
viewHolder.fruitName= (TextView)findViewById(R.id.fruit_name);
view.setTag(viewHolder); //将viewHolder存储都view中。
}else{
view = convertView;
viewHolder = (ViewHolder)view.getTag(); //重获viewHolder
}
viewHolder.fruitImage.setImageResuource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
ruturn view;
}
class ViewHolder{
ImageView fruitImage;
TextView fruitName;
}
事件监听
调用setOnItemClickListener()方法,重写onItemClick(AdapterView<?>parent,View view,int position,long id)方法,通过position来判断点击的是哪个item。
Android的UI设计的更多相关文章
- Android 高级UI设计笔记07:RecyclerView 的详解
1. 使用RecyclerView 在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常 ...
- Android应用UI设计流程
Android应用UI设计流程 设计原理 1.在移动设计中,使用环境是最关键的因素.原型设计方法必须考虑尺寸因素 2.用户测试必须涵盖运动.声音和多点触控等方面: 进行移动设计和测试时,请将你知道的有 ...
- Android中UI设计的一些技巧!!!
出处:http://blog.csdn.net/android_tutor/article/details/5995759 大家好,今天给大家分享的是Android中UI设计的一些技巧,本节内容主要有 ...
- 【Android开发经验】Android举UI设计经验
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 1.Android眼下的主流设备分辨率为480×800.720×1280.1080×1920,单位是像素.在 ...
- Android 高级UI设计笔记06:仿微信图片选择器(转载)
仿微信图片选择器: 一.项目整体分析: 1. Android加载图片的3个目标: (1)尽可能的去避免内存溢出. a. 根据图片的显示大小去压缩图片 b. 使用缓存对我们图片进行管理(LruCache ...
- Android的UI设计与后台线程交互
本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行.本文还将阐述一些用户界面(UI)中与线程交互的API.UI用户界面 ...
- Android 高级UI设计笔记21:Android SegmentView(分段选择控件)
1. 分段控制(SegmentView) 首先我们先看看什么是SegmentView的效果,如下: 分段控制这个View控件是ios7的分段控制,和QQ消息页面顶部的效果一样,android没有这个控 ...
- Android 高级UI设计笔记19:PopupWindow使用详解
1. PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的. 2. PopupWindow使用 ...
- Android 高级UI设计笔记17:Android在非UI线程中显示Toast
1. 子线程的Toast怎么显示不出来? 因为Toast在创建的时候会依赖于一个Handler,并且一个Handler是需要有一个Looper才能够创建,而普通的线程是不会自动去创建一个Looper对 ...
- Android 高级UI设计笔记09:Android如何实现无限滚动列表
ListView和GridView已经成为原生的Android应用实现中两个最流行的设计模式.目前,这些模式被大量的开发者使用,主要是因为他们是简单而直接的实现,同时他们提供了一个良好,整洁的用户体验 ...
随机推荐
- java AES 加密与解密
package com.ss.util.secret; import java.io.UnsupportedEncodingException; import java.security.Inva ...
- ngrok访问外网
1. 外网映射工具介绍 windows用户: 1,下载windows版本的客户端,解压到你喜欢的目录2,在命令行下进入到path/to/windows_386/下3,执行 ngrok -config= ...
- IOS第13天(3,私人通讯录,登陆状态数据存储,数据缓存, cell的滑动删除,进入编辑模式,单个位置刷新 )
*****联系人的界面的优化 HMContactsTableViewController.m #import "HMContactsTableViewController.h" # ...
- 【iCore3 双核心板】例程六:IWDG看门狗实验——复位ARM
实验指导书及代码包下载: http://pan.baidu.com/s/1c0frjHm iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- String类StringBuffer类与StringBuilder类gc垃圾回收
String类的特点 直接赋值和new调用构造方法两种, 直接赋值时会将字符串常量入内存池,当其他变量再赋相同值时,不再在堆空间开辟内存 new构造方法会开辟两块堆内存空间,可以使用intern手工入 ...
- CSS权威指南 - 内边距 边框 和 外边距
九十年代的完全用表格布局,简单的段落边框都需要用表格.CSS让布局更方便. 基本元素框 basic element boxes 如同第七章基本视觉格式化那一章讲到,每个文档元素会生成一个元素框,这个框 ...
- bootstrap全局CSS样式学习
参考http://v3.bootcss.com/css/,根据自己的记忆进行的复述,加深记忆. 首先介绍bootstrap全局CSS样式 只通过使用bootstrap.css,即可获得统一的样式设置. ...
- cordova 打包遇到的一些坑
最近在打包cordova应用的时候遇到不少坑,还是记录下来,免得以后遇到又浪费时间 1.第一个是图片包含中文文字导致的,找了很久,偶然看到一篇文章,有截图如下,忘了哪篇了,不然甩个链接, ,所以下次编 ...
- JAVA Math类
public class MathTest{ public static void main(String[] args) { /*---------下面是三角运算---------*/ //将 ...
- nginx json 格式输出
log_format logstash_json '{ "@timestamp": "$time_local", ' ...