5.9UI的理解笔记

1.UI的理解

全称user interface  意为:用户界面

UI有view和viewGroup的根基类

view在屏幕上占据一片矩形区域,并会在上面进行内容绘制

viewGroup包含一些view或viewGrorup 用于控制字view的布局事件模型

事件是什么

谁是事件源?  1.注册--->2.触发----> 事件源---->3.生成---->事件---->4.传递---->5.调用---->回调方法

谁是事件监听器?

设置监听器:view.setOn...listener(listener)

2.常用的UI组件

2.1简单的UI组件

1).textview:文本视图

android:id="@+id/tv_test1_msg"//指定ID

android:layout_width="match_parent"//宽度

android:layout_height="wrap_content"//高度

android:text="@string/tv_content"//文本

android:textColor="#FF0000"//文本颜色

android:textSize="20sp"//字体大小

2).edittext:可编辑的文本视图

android:hint="请输入手机号"//默认提示文本

android:inputType="phone//输入数据类型限定

3).button:按钮

4).imageview:图片视图

android:background="@drawable/ic_launcher//背景图片

android:src="@android:drawable/ic_media_play"//前景图片

// 设置背景图片  public void setimageresurce(int resld)

// 设置前图片public void setbackgroundresource(int resid)

5).checkBox:多选框

android:checked=“true”/> //标识默认是否勾选

//判断当前是否勾选

boolean isChecked()

//设置CheckBox是否勾选

void setChecked(boolean checked)

//设置选中状态改变的监听

void setOnCheckedChangeListener(OnCheckedChangeListener listener)

6).RadioGroup/RadioButton : 单选框

android:id="@+id/rg_test1_sex"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

android:id="@+id/rb_test1_male"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="男" />

android:id="@+id/rb_test1_female"

android:layout_width="wrap_content"

android:layout_height="wrap_content“

android:checked="true"

android:text="女" />

2.2菜单 * optionMenu

* 1.如何触发Menu的显示

*  点击Menu键

*2.如何向Menu中添加MenuInfalter?重写onCreateOptionsMenu方法

*  1.menu。add()

*  菜单文件

*3.选择某个MenuItem是如何响应

*  重写onOptionsItemSelected方法

*ContextMenu

*  1.如何触发Menu的显示

*  长按某个视图,并view.setoncreatecontextMenulistener(this)

*  2.如何向Menu中添加MenuInfalter?

*  重写oncreatecontextMenu()方法用menu.add()添加(菜单文件方式也可以)

*  3.选择某个MenuItem是如何响应

*  重写oncontextItemSelected()根据item去响应

*/

2.3进度条

a.圆形

android:id="@+id/pb_test3_loading1"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

b水平

android:id="@+id/pb_test3_loading2"

style=“?android:attr/progressBarStyleHorizontal“    //水平进度条

android:layout_width="match_parent“

android:layout_height="wrap_content"

android:progress=“2“     //当前进度, 默认为0

android:max=“10”/>      // 最大进度, 默认为100

?ProgressBar

voidsetProgress(intProgress) : 设置当前进度

int getProgress() : 得到当前进度

voidsetMax(intmax) : 设置最大进度

int getMax() : 设置或得到最大进度

?View

voidsetVisibility(intvisibility) : 设置视图的可见性

View. VISIBLE :标识可见

View. INVISIBLE :标识不可见, 但占屏幕空间

View.GONE :标识不可见, 也不占屏幕空间

2.seekbar

android:id="@+id/sb_test3_prgress"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

SeekBar:

setOnSeekBarChangeListener(OnSeekBarChangeListener l)  :设置改变的监听

OnSeekBarChangeListener:

onProgressChanged(SeekBar seekBar, intprogress, boolean fromUser) : 进度改变

onStartTrackingTouch(SeekBar seekBar) : 按下滑杆

onStopTrackingTouch(SeekBar seekBar) : 从滑杆离开

S;

2.4对话框

1.API结构

2.alerdialog

a.一般的

AlertDialog  :

show()   :显示警告框

没有公开的构造方法, 只能通过其内部类Builder来创建

AlertDialog.Builder:

create() :创建AlertDialog对象

show()

: 创建AlertDialog对象, 同时将其显示出来

setTitle(CharSequencetitle) : 设置标题

setMessage(CharSequencemessage) : 设置内容

setPositiveButton(String

text, OnClickListener listener) : 设置正面按钮

setNegativeButton(String

text, OnClickListener listener): 设置负面按钮

dismiss() : 移除dialog

setSingleChoiceItems(….)设置单选项列表

AlertDialog  :

show()   :显示警告框

没有公开的构造方法, 只能通过其内部类Builder来创建

AlertDialog.Builder:

create() :创建AlertDialog对象

show()

: 创建AlertDialog对象, 同时将其显示出来

setTitle(CharSequencetitle) : 设置标题

setMessage(CharSequencemessage) : 设置内容

setPositiveButton(String

text, OnClickListener listener) : 设置正面按钮

setNegativeButton(String

text, OnClickListener listener): 设置负面按钮

dismiss() : 移除dialog

b自定义布局

AlertDialog  :

show()   :显示警告框

没有公开的构造方法, 只能通过其内部类Builder来创建

AlertDialog.Builder:

create() :创建AlertDialog对象

show()

: 创建AlertDialog对象, 同时将其显示出来

setTitle(CharSequencetitle) : 设置标题

setMessage(CharSequencemessage) : 设置内容

setPositiveButton(String

text, OnClickListener listener) : 设置正面按钮

setNegativeButton(String

text, OnClickListener listener): 设置负面按钮

dismiss() : 移除dialog

setSingleChoiceItems(….)设置单选项列表

setSingleChoiceItems(….)设置单选项列表

AlertDialog  :水平进度

show()   :显示警告框

没有公开的构造方法, 只能通过其内部类Builder来创建

AlertDialog.Builder:

create() :创建AlertDialog对象

show()

: 创建AlertDialog对象, 同时将其显示出来

setTitle(CharSequencetitle) : 设置标题

setMessage(CharSequencemessage) : 设置内容

setPositiveButton(String

text, OnClickListener listener) : 设置正面按钮

setNegativeButton(String

text, OnClickListener listener): 设置负面按钮

dismiss() : 移除dialog

setSingleChoiceItems(….)设置单选项列表

方式一

new Thread(){

public voidrun(){

//下面的代码在分线程执行

}

}.start();

方式二

new Thread(new Runnable(){

public voidrun(){

//下面的代码在分线程执行

}

}).start();

根据ID查找view对象

a.查找当前界面中的view对象:findviewbyid(id)

b.查找某个view对象的自view:viewfindviewbyid

更新视图

a.不能在分线程直接更新UI

toast不能再分现程显示

但progressDialog可以在分线程更新

b.长时间的工作职能放在分线程执行

原文地址:https://www.cnblogs.com/feng8026/p/9017812.html

时间: 2024-10-15 08:10:03

5.9UI的理解笔记的相关文章

Memcached理解笔记4---应对高并发攻击

近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意攻击,不停的刷新产品各个服务入口,制造垃圾数据,消耗资源.他们的最好成绩,1秒钟可以并发6次,赶在Database入库前,Cache进行Missing Loading前,强占这其中十几毫秒的时间,进行恶意攻击. 相关链接: Memcached笔记——(一)安装&常规错误&监控Memcached笔记——(二)XMemcached&Spring集成 Memcached笔记——(三)Memcached使用总结  Memcached

网站广告模版理解笔记

电子商务网站的,页面上往往或有很多活动的广告需要频繁的替换,还有关于网站的说明的文章,这些不是经常变动的,还有一些是专区的活动页面,上面放的都是活动的商品. 简单的设计思路: 1.建立一个模版表template,可以根据模版生成html 结构:id.模版名称.状态(有效和无效).模版内容.类型(html和vm) 2.建立一个模版实例表templateInstence,用来存放生成的html的信息 结构:id.templateId.html文件名称.html文件位置 3.建立一个模版实例商品表(非

Memcached理解笔记3---Memcached使用总结

为了将N个前端数据同步,通过Memcached完成数据打通,但带来了一些新问题: 使用iBatis整合了Memcached,iBatis针对每台server生成了唯一标识,导致同一份数据sql会产生不同的key,造成重复缓存.——通过重写iBatis部分原码,终止了唯一标识的生成,同一个SQL产生同一个Key,同时对生成key做hash,控制长度,使得数据统一在Memcached. 为了迎合iBatis的架构,通过CacheModel模式,对缓存数据分组管理.最初通过Map实现CacheMode

不理解笔记

# 不明白 # def print_nums(x): # for i in range(x): # print(i) # return # print_nums(10) # ------------------------ # rest=4+0.rest=4+1.rest=4+2.rest=4+3 # def func(x): # res = 0 # for i in range(x): # res += i # return res # # print(func(4)) #不输出字符长度 #

initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记

有时候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么? 那就通过查资料弄明白. 1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法,但是,我们以UIView为例,来搞清楚initWithFrame方法. 2.什么时候用initWithFrame方法? 简单的说,我们用编程方式申明,创建UIView对

bundle的理解笔记

Bundle是一个键值对这样一个东西.就是一个string类型的东西,对应任何类型的东西.就是用来存值的. 这里可以看到他的作用 public void onClick(View v) { String info = etName.getText().toString(); Bundle bundle = new Bundle(); //保存输入的信息 bundle.putString("name", info); Intent intent=new Intent(BundleDemo

Simple-DQN代码的理解笔记

# tenserboard --logdir=logs ,然后打开网页127.0.1.1:6006,可以查看定义网络的神经结构. # 两个神经网络,结构相同,但是参数不一样. # 走多少步再更新,可以自己定义 # target_net 是保存很久以前的的网络的值,冻结之前的神经网络.也叫q-real # eval_net 是实时进行更新的.每走一步,更新一步. # 他的第二个神经网络的输出,就应该等于action的数目,第二层输出的,就是一个q_eval的估计值. # n_l1是神经元的数目 #

个人对vuex的表象理解(笔记)

一个东西,首先要知道为什么用它,为什么要vuex,官方解释为了解决繁杂事件订阅和广播,那么事件的$dispatch,$on,怎么就复杂了?许多人是不是感觉后者还挺简单的,对的 如果简单小型项目,那么不需要vuex,只需要后者就可以,但是如果中大型,尤其是有许多事件传播,那么vuex作用就体现出现了,为什么?ok,$dispatch,$on,这种传播,如果是单向的还好,向上,向下,但是如果非单向,那么必定是先传上去,在传下来,中间还要监听好各自事件别给我整乱了...试想一下,一个中大型项目,这里会

cookie&&session再理解笔记

就拿php来说,两个php页面之间不拿get,post传递变量的话,数据是不能共享的.访问完1.php页面该页面的变量就被销毁了.所以就拿学校食堂来说,拿现金买饭的话你交完钱后,他给你个票以便确认你,你到时候拿票来到各个窗口买东西.设置cookie后,第一次执行cookie设置是服务器给浏览器cookie信息,浏览器保存,此后每次就是浏览器拿着cookie信息你去给浏览器.每次请求其他页面,请求头就会把cookie的信息传递过去 第一次执行cookie 此后的话,cookie就由浏览器到服务器了