一、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设计的更多相关文章

  1. Android 高级UI设计笔记07:RecyclerView 的详解

    1. 使用RecyclerView       在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常 ...

  2. Android应用UI设计流程

    Android应用UI设计流程 设计原理 1.在移动设计中,使用环境是最关键的因素.原型设计方法必须考虑尺寸因素 2.用户测试必须涵盖运动.声音和多点触控等方面: 进行移动设计和测试时,请将你知道的有 ...

  3. Android中UI设计的一些技巧!!!

    出处:http://blog.csdn.net/android_tutor/article/details/5995759 大家好,今天给大家分享的是Android中UI设计的一些技巧,本节内容主要有 ...

  4. 【Android开发经验】Android举UI设计经验

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 1.Android眼下的主流设备分辨率为480×800.720×1280.1080×1920,单位是像素.在 ...

  5. Android 高级UI设计笔记06:仿微信图片选择器(转载)

    仿微信图片选择器: 一.项目整体分析: 1. Android加载图片的3个目标: (1)尽可能的去避免内存溢出. a. 根据图片的显示大小去压缩图片 b. 使用缓存对我们图片进行管理(LruCache ...

  6. Android的UI设计与后台线程交互

    本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行.本文还将阐述一些用户界面(UI)中与线程交互的API.UI用户界面 ...

  7. Android 高级UI设计笔记21:Android SegmentView(分段选择控件)

    1. 分段控制(SegmentView) 首先我们先看看什么是SegmentView的效果,如下: 分段控制这个View控件是ios7的分段控制,和QQ消息页面顶部的效果一样,android没有这个控 ...

  8. Android 高级UI设计笔记19:PopupWindow使用详解

    1. PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的. 2. PopupWindow使用 ...

  9. Android 高级UI设计笔记17:Android在非UI线程中显示Toast

    1. 子线程的Toast怎么显示不出来? 因为Toast在创建的时候会依赖于一个Handler,并且一个Handler是需要有一个Looper才能够创建,而普通的线程是不会自动去创建一个Looper对 ...

  10. Android 高级UI设计笔记09:Android如何实现无限滚动列表

    ListView和GridView已经成为原生的Android应用实现中两个最流行的设计模式.目前,这些模式被大量的开发者使用,主要是因为他们是简单而直接的实现,同时他们提供了一个良好,整洁的用户体验 ...

随机推荐

  1. Lua语言

    下载使用Subline作为编辑器 1. 2.函数使用 function sayHello() print ('hello torch') end 3.定义变量 a print (a) 4.引入文件 r ...

  2. JS中的特有语句-for in

    <script> /* *js中特有语句for in *for(变量 in 对象)//对对象进行变量的语句 *{ *} */ var arr = [32,80,65]; for(i in ...

  3. ThinkPHP 3.2.3 中设置和使用 Session

    Session 的配置 可以在 config.php(可以是应用公用的 config.php 或模块的 config.php)中对 Session 进行配置,例如: config.php <?p ...

  4. Customizing the Editor

    Use the General, Text Editor, Options Dialog Box to customize the appearance and functionality of th ...

  5. java notify和notifyAll的区别

    首先从名字可以了解,notify是通知一个线程获取锁,notifyAll是通知所有相关的线程去竞争锁. notify不能保证获得锁的线程,真正需要锁,并且可能产生死锁. 举例1: 所有人(消费者线程) ...

  6. PHP获取POST数据的几种方法汇总

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...

  7. python display color output

    起因 在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想 ...

  8. 当select框变化时 获取select框中被选中的值

    DOM <select name="course"> <option value="1">1</option> <op ...

  9. Sublime Text3 常用快捷键

    1. 更改变量名的几种方法 a.选中变量,ctrl+d 一个个选择 b.选中变量,alt+F3   2.查找打开过的文件:Ctrl+P,然后输入最近的文件名就可以即时预览到文件内容. 3.ctrl+r ...

  10. JMeter学习-020-JMeter 监听器之【聚合报告】错误率、吞吐量、传输速率实例计算

    上文 对聚合报告的结果字段进行了概要的讲述释义,同时对吞吐量.传输速率.分位数等进行了详细的阐述,此文针对上文中描述的吞吐量及传输速率的计算进行详细的实例计算演示. 多不闲述,直入主题! 实际操作步骤 ...