事件驱动机制高级UI消息提示机制.docx

上传人:b****3 文档编号:26756683 上传时间:2023-06-22 格式:DOCX 页数:30 大小:485.88KB
下载 相关 举报
事件驱动机制高级UI消息提示机制.docx_第1页
第1页 / 共30页
事件驱动机制高级UI消息提示机制.docx_第2页
第2页 / 共30页
事件驱动机制高级UI消息提示机制.docx_第3页
第3页 / 共30页
事件驱动机制高级UI消息提示机制.docx_第4页
第4页 / 共30页
事件驱动机制高级UI消息提示机制.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

事件驱动机制高级UI消息提示机制.docx

《事件驱动机制高级UI消息提示机制.docx》由会员分享,可在线阅读,更多相关《事件驱动机制高级UI消息提示机制.docx(30页珍藏版)》请在冰豆网上搜索。

事件驱动机制高级UI消息提示机制.docx

事件驱动机制高级UI消息提示机制

Android基础

三、Android事件驱动机制2

3.1点击事件2

3.1.1点击事件四种书写方式2

3.2选择事件4

3.2.1复选事件4

3.2.2单选事件5

3.2.3下拉列表选择5

3.3长按与触屏事件6

3.4键盘事件7

四、Android高级UI8

4.1ProgressBar8

4.2RatingBar8

4.3ToggleButton9

4.4ScrollView10

4.5ListView10

五、Android消息提示机制12

5.1Logcat日志猫13

5.2Toast瞬时提示13

5.3对话框15

5.3.1标准对话框15

5.3.2菜单式对话框17

5.3.3复选对话框18

5.3.4自定义对话框21

5.3.5对话框优化22

 

三、Android事件驱动机制

一般,用户经常会通过界面与应用交互,Android框架一般采用事件驱动的形式与用户交互,那如何处理用户界面中触发的事件?

可以通过从用户交互的View设置事件监听器的方式来实现对事件的处理,一个事件监听器是View类中一个包含单一回调方法的接口。

当注册了监听器的View发生了对应的监听事件时,Android框架就会回调相应的监听方法,实现与用户的交互

 

*常见的用户事件

点击事件、选择事件、触屏事件、长按事件、按键事件

3.1点击事件

单击事件是事件机制中最常见的事件,通过对控件绑定View.OnClickListener实现单击事件的监听

3.1.1点击事件四种书写方式

&私有类实现方式

&匿名内部类实现方式

&布局中对控件添加android:

onClick

&Activity实现监听接口

*案例:

对按钮按键监听

对四个按钮实现监听,分别用四种不同的书写方式实现单击监听事件

*界面设计

*代码实现

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_click_event);

//1.通过内部类形式实现

inner();

//2.通过匿名内部类形式实现

anonymouns();

//4.Activity实现监听接口方式

Buttonbutton=(Button)findViewById(R.id.activity);

button.setOnClickListener(this);

}

/**

*通过匿名内部类形式实现单击监听

*/

privatevoidanonymouns(){

Buttonbutton=(Button)findViewById(R.id.anonymouns);

button.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

Toast.makeText(ClickEventActivity.this,"匿名内部类实现方式",Toast.LENGTH_SHORT).show();

}

});

}

//通过内部类的方式实现

privatevoidinner(){

Buttonbutton=(Button)findViewById(R.id.inner);

button.setOnClickListener(newMyListener());

}

//3.通过XML方式实现

publicvoidclickByXml(Viewv){

Toast.makeText(ClickEventActivity.this,"布局中设置onClick属性实现方式",Toast.LENGTH_SHORT).show();

}

privateclassMyListenerimplementsView.OnClickListener{

@Override

publicvoidonClick(Viewv){

Toast.makeText(ClickEventActivity.this,"内部类实现方式",Toast.LENGTH_SHORT).show();

}

}

//4、通过对Activity实现单击监听接口实现方式

@Override

publicvoidonClick(Viewv){

Toast.makeText(ClickEventActivity.this,"Activity实现监听接口方式",Toast.LENGTH_SHORT).show();

}

3.2选择事件

3.2.1复选事件

复选事件的监听接口:

CompoundButton.OnCheckedChangeListener

复选控件CheckBox有两种状态:

选中与未选中状态,对复选控件

*案例:

明密文切换

通过对CheckBox控件的复选监听,实现对EditText内容明密文切换

*界面设计

*代码实现

/*

*通过对CheckBox复选监听实现明密文切换

*/

privatevoidcheckBox(){

finalEditTextinfoEdt=(EditText)findViewById(R.id.info_edt);

CheckBoxcheckBox=(CheckBox)findViewById(R.id.checkbox);

checkBox.setOnCheckedChangeListener(new

CompoundButton.OnCheckedChangeListener(){

@Override

publicvoidonCheckedChanged(CompoundButtonbuttonView,

booleanisChecked){

if(isChecked){

////把EditText隐藏的文本内容还原

infoEdt.setTransformationMethod(new

HideReturnsTransformationMethod());

}else{

//把EditText的内容用密码的方式隐藏起来

infoEdt.setTransformationMethod(new

PasswordTransformationMethod());

}

}

});

}

3.2.2单选事件

单选事件的监听接口:

RadioGroup.OnCheckedChangeListener

RadioButton与RadioGroup组合使用才能实现单选功能

*案例:

选择字符集

通过对RadioButton控件的选择监听,实现对字符集的选择

*界面设计

*代码实现

privatevoidsingleCheck(){

finalTextViewcharSet=(TextView)findViewById(R.id.charSet);

RadioGroupradioGroup=(RadioGroup)findViewById(R.id.radioGroup1);

//对单选组添加选择监听事件

radioGroup.setOnCheckedChangeListener(newRadioGroup.

OnCheckedChangeListener(){

/**选择状态改变监听

*RadioGroup:

单选组

*checkedId:

被改变的控件的资源id

*/

publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){

//通过通过findViewById找到所选择的RadioButton

RadioButtonradioButton=(RadioButton)findViewById(checkedId);

charSet.setText(radioButton.getText().toString());

}

});

}

3.2.3下拉列表选择

下拉事件的监听接口:

AdapterView.OnItemSelectedListener

*案例:

城市选择

通过对Spinner下拉列表监听,实现对城市的选择

*界面设计

*代码实现

privatevoidspinner(){

//通过资源ID获得字符串数组

finalString[]citys=getResources().getStringArray(R.array.city);

Spinnerspinner=(Spinner)findViewById(R.id.spinner);

spinner.setPrompt("请选择城市");

spinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){

@Override

/**下拉项选择监听

*AdapterView:

下拉项的父控件:

Spinner

*View:

当前选择的Item项

*Position:

选择项的位置

*id:

选择项的行号

*/

publicvoidonItemSelected(AdapterView

>parent,Viewview,

intposition,longid){

Toast.makeText(context,citys[position],Toast.LENGTH_SHORT).show();

}

@Override

publicvoidonNothingSelected(AdapterView

>arg0){

}

});

}

3.3长按与触屏事件

长按事件监听接口:

View.OnLongClickListener

触屏事件监听接口:

View.OnTouchListener

*案例:

长按图标设置手机桌面壁纸

clearWallpaper:

清除桌面壁纸

setWallpaper(BitMapbitmap):

设置桌面壁纸

设置壁纸要添加权限:

name="android.permission.SET_WALLPAPER"/>

*代码实现

privatevoidsetWallPaper(){

ImageViewimage=(ImageView)findViewById(R.id.image);

//对图片添加触屏监听

image.setOnTouchListener(newView.OnTouchListener(){

@Override

publicbooleanonTouch(Viewv,MotionEventevent){

System.out.println("触屏监听");

returnfalse;

}

});

//对图片添加长按监听,实现设置手机壁纸的功能

image.setOnLongClickListener(newView.OnLongClickListener(){

@Override

publicbooleanonLongClick(Viewv){

try{

//清除屏幕壁纸

clearWallpaper();

Bitmapbitmap=BitmapFactory

.decodeResource(getResources(),R.drawable.ic_launcher);

//设置壁纸

setWallpaper(bitmap);

}catch(IOExceptione){

e.printStackTrace();

}

System.out.println("长按监听");

returnfalse;

}

});

}

3.4键盘事件

Activity实现了KeyEvent.backcall接口

onKeyDown(intkeyCode,KeyEventevent):

当键按下去触发

onBackPress():

当返回键按下去触发,Activity的方法

模拟器常见的按键:

Back返回键

Home手机屏幕桌面

Ctrl+F11切换模拟器横竖屏幕

F2手机菜单

F3电话面板

F8手机网络开关

四、Android高级UI

4.1ProgressBar

ProgressBar进度条,常用于文件下载进度显示、系统初始化进度等,默认情况是没有进度值的(转圈圈)

*提示点:

style="@android:

style/Widget.ProgressBar.Horizontal"样式设置

setProgress(int)设置当前进度值

getProgress()得到当前进度值

setMax(int)设置最大值

案例:

通过按钮设置进度条进度

*界面设计:

*代码实现

//设置进度条的最大值

progressBar.setMax(10);

addBtn.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

//获得当前的进度值

intprogress=progressBar.getProgress();

//设置进度值

progressBar.setProgress(progress+1);

}

});

4.2RatingBar

RatingBar评分进度条,常用于对商品、用户的评价,比如满意度调查等

*提示点:

setOnRatingBarChangeListener设置监听器

setNumStars设置星星的个数(设置总分)

setStepSize设置分数间隔

getRating获得当前的分数值

setRating设置当前的分数值

案例:

对欧冠精彩程度打分

*界面设计:

*代码实现

//设置星星的数量

ratingBar.setNumStars(5);

//设置步长值

ratingBar.setStepSize(0.5f);

//添加评分控件值改变的监听

ratingBar.setOnRatingBarChangeListener(newRatingBar.OnRatingBarChangeListener(){

/**ratingBar:

评分控件

*rating:

当前的值

*fromUser:

是不是用户操作

*/

publicvoidonRatingChanged(RatingBarratingBar,floatrating,

booleanfromUser){

if(fromUser){

Log.v("RatingBarfromuser",rating+"");

}else{

Log.v("RatingBarnofromuser",rating+"");

}

}

});

4.3ToggleButton

ToggleButton:

开关按钮,它是CompoundButton的子类,实现开与关的效果,比如蓝牙开关、wifi开关、声音开关等

*提示点:

-实现的监听接口:

CompoundButton.OnCheckedChangeListener

该接口是监听开关按钮状态的改变

-toggle():

取反操作

-xml属性设置

textOn:

表示状态为开的提示文本

textOff:

表示状态为关的提示文本

案例:

设置声音开关

*界面设计

*代码实现

toggleButton.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener(){

/**选择状态改变的监听

*

*@parambuttonView:

toggleButton

*@paramisChecked:

表示当前的开关按钮控件的状态

*/

@Override

publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){

Toast.makeText(AdvanceUIActivity.this,isChecked?

"声音开":

"声音关",Toast.LENGTH_LONG).show();

//toggleButton.toggle();//取反,每一次点击开关按钮会自动取反

}

});

4.4ScrollView

ScrollView:

滚屏视图,它是FrameLayout的子类,能够被用户滚动的布局容器,它只能拥有一个子控件,经常应用于一个垂直方向的线性布局中。

ScrollView只支持垂直滚动,对于需要水平滚动,则用HorizontalScollView

4.5ListView

ListView列表框,常用控件,用来显示相同数据结构的批量数据,比如:

从数据库获取的数据列表,从网络解析的批量结构数据,一般都会采用ListView展示数据,系统中的设置、未接来电、通信录等显示可采用ListView进行展示

用ListView展示数据的四个步骤:

列表项描述、初始化数据、适配器数据装配、设置适配器

案例:

在ListView中显示好友列表

*界面设计与分析:

*代码实现

//引用ListView控件

ListViewsettingListView=(ListView)findViewById(R.id.setting_listView);

/**

*1、描述列表项,设置列表项的布局

*2、初始化数据:

ArrayList

*3、把数据通过数据适配器装配到ListView中

*/

//初始化数据

ArrayList>data=newArrayList>();

HashMapitem=null;

//生成假数据

for(inti=1;i<12;i++){

item=newHashMap();

item.put("icon",R.drawable.emoji_044+i);//添加的是图片资源的ID

item.put("title","设置"+i);

//向数组列表添加map

data.add(item);

}

//简单数据适配器

/**

*context:

上下文

*data:

数据源ArrayList

*resource:

列表项布局资源id

*from:

装配数据--数据从哪里来

*to:

装配数据--数据到那里去

*/

String[]from={"icon","title"};

int[]to={R.id.icon,R.id.title};

SimpleAdapteradapter=newSimpleAdapter(this,data,R.layout.setting_item,from,to);

//装配数据到ListView中,对ListView设置数据适配器

settingListView.setAdapter(adapter);

}

 

五、Android消息提示机制

在某些情况下,可能需要你去通知用户发生在你应用中的事件,其中一些事件需要用户响应,有的则不需要。

Android框架通过消息机制很好的完成上述的需求。

比如:

-当一个事件完成时(比如保存文件),需要显示一个简短的消息来确认保存成功

-假如应用正在后台运行,且需要用户注意,那么该应用需要创建一个通知以方便用户做出响应

-假如用户要操作一个危险的操作,则应该创建一个对话框通知,再一次确认用户的操作

常见的消息提示方式有:

-Logcat(日志猫)

-Toast(瞬时提示)

-Dialog(对话框)

-Notification(通知)

5.1Logcat日志猫

*级别:

v、d、i、w、e级别由低往高

-verbose:

混淆的,所有信息都可以输出,级别最低

-debug:

调试级别

-info:

信息级别

-warning:

警告级别

-error:

错误级别

*添加过滤器按照Tag进行过滤

*System.out.println()与Log输出之间的区别

-System.out.println()输出的信息等级是info级别,标记tag:

System.out

-System.out.print()输出信息需要System.out.flush()刷缓存输出

5.2Toast瞬时提示

Toast通知是一种浮现在屏幕上层的消息提醒,它只填充消息所需要的空间,而当前正在运行的活动仍然保持其自身的可见性和交互性。

这种通知自动淡入淡出且不接受交互事件

通过代码自定义Toast

*代码实现

//通过代码的形式自定义Toast

publicvoiddiyToast1(Viewv){

//声明一个Toast对象

Toasttoast=newTo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1