Android实验设计实验三:Button事件处理08386038胡巍巍08计算机应用软件【目的】Android编程基础,UI设计,Button事件处理。【要求】1.了解Android编程原理2.掌握界面控件设计3.掌握控件的事件处理编程【原理】1.Viewandroid.view.View.findViewById(intid);通过该函数,在执行期动态取得控件;2.通过xml布局添加Button,后台代码添加对Button的Click事件的监听;3.通过xml布局添加ImageButton,xml设计ImageButton背景,后台代码添加对ImageButton的Click事件的监听;4.通过后台代码运行期动态添加按钮及相应Click事件。【实验过程】1.实验效果预览:图1按下按钮前图2按下按钮后布局实现:在main.xml添加TextView还有Button控件:TextViewandroid:id=@+id/TV1android:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:text=@string/hello/Buttonandroid:id=@+id/button1android:layout_height=wrap_contentandroid:layout_width=wrap_contentandroid:text=Button1/按钮响应:在Part3.java实现如下:PrivateButtonmBtn;PrivateTextViewmText;mBtn=(Button)findViewById(R.id.button1);//通过id获得Button控件mBtn.setOnClickListener(newOnClickListener()//Button监听设置与响应{PublicvoidonClick(Viewv)//按钮响应{mText=(TextView)findViewById(R.id.TV1);//通过id获得TextView控件mText.setText(按下了+String.valueOf(((Button)v).getText()));//更新//Text内容}});2.添加ImageButton并作出相应的处理:首先,将下面两个按钮图片Import到res/drawable里面在res/drawable下定义btn_x.xml,主要针对按钮的state_focused,state_pressed与drawable属性做设置,如下所示:在res/layout/main.xml布局中,添加ImageButton:添加res/drawable/btn_x.xml文件:效果预览:图3按钮按下前图4按钮按下时3.动态添加按钮及事件响应处理:在main.xml添加根节点LinearLayout的android:id属性,使后台代码可以通过id获取前台的布局;接着,实例化一个Button对象,设置该对象的事件响应函数;最后通过LinearLayout::addView方法,将Button对象添加到布局中。实例代码如下:Part3.java:效果预览:图5按钮按下前图6按钮按下后4.制作一个登录框,要求用户输入用户密码,点击登录按钮,在后台判断账号密码是否分别为android、a206,并通过TextView提示账号密码是否正确。效果预览:图7登录框实例图8输入账号密码图9登录成功实现过程:布局实现:在main.xmlTextViewandroid:layout_width=fill_parentandroid:id=@+id/TV1android:layout_height=wrap_contentandroid:visibility=invisibleandroid:text=/EditTextandroid:hint=请输入帐号android:id=@+id/EditText1android:layout_width=fill_parentandroid:layout_height=wrap_content/EditTextEditTextandroid:hint=请输入密码android:id=@+id/EditText2android:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:password=true/EditTextLinearLayoutandroid:id=@+id/llayout1android:orientation=horizontalandroid:layout_width=fill_parentandroid:layout_height=wrap_contentButtonandroid:text=登录android:id=@+id/Button1android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_weight=1/ButtonButtonandroid:text=清除android:id=@+id/Button2android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_weight=1/Button/LinearLayout事件响应实现:StringN_cs=Android;StringP_cs=a206;TextViewNP_test;ButtonOn_Ok;ButtonOn_No;OnClickListenerOn_len1=null;OnClickListenerOn_len2=null;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);On_len1=newOnClickListener(){//监听登录按钮事件publicvoidonClick(Viewv){//事件响应StringN_temp=((EditText)findViewById(R.id.EditText1)).getText().toString();StringP_temp=((EditText)findViewById(R.id.EditText2)).getText().toString();NP_test=(TextView)findViewById(R.id.TV1);if(!N_temp.equals(Android))NP_test.setText(帐号错误);elseif(!P_temp.equals(a206))NP_test.setText(密码错误);elseNP_test.setText(OK,你可以进来了);NP_test.setVisibility(View.VISIBLE);}};On_len2=newOnClickListener(){//监听清除按钮事件@OverridepublicvoidonClick(Viewv){//事件响应//TODOAuto-generatedmethodstub((EditText)findViewById(R.id.EditText1)).setText();((EditText)findViewById(R.id.EditText2)).setText();}};On_Ok=(Button)findViewById(R.id.Button1);On_Ok.setOnClickListener(On_len1);On_No=(Button)findViewById(R.id.Button2);On_No.setOnClickListener(On_len2);}【课后习题】1.设计如下一个手机拨号版面,并采用按钮的动态添加。实现如下:ButtonBtn;TextViewTv;StringS_Tv=;StringSource=1234567890#*;Stringclear=clear;Stringdelete=delete;intTextLength=89;OnClickListenerlistener=null;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);LinearLayoutlinearlayout=(LinearLayout)findViewById(R.id.main);//获取第一级布局//控件布局参数:layoutheight=40dip,layoutweight=1LayoutParamsparams=newLayoutParams(40,40,1);for(inti=0;i4;i++){LinearLayoutlinearlayout2=newLinearLayout(this);//申请第二级布局for(intj=0;j3;j++){Btn=newButton(this);//申请按钮控件Btn.setText(Source.substring(0,1));//按钮控件文本设置Btn.setOnClickListener(newOnClickListener(){//监听及事件处理@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubTv=(TextView)findViewById(R.id.TextView1);if(S_Tv.length()TextLength)S_Tv+=(((Button)v).getText()).toString();Tv.setText(S_Tv);}});Source=Source.substring(1);//在二级布局内添加Button控件,水平并排列linearlayout2.addView(Btn,params);}linearlayout.addView(linearlayout2);}LinearLayoutlinearlayout4=newLinearLayout(this);Btn=newButton(this);Btn.setText(delete);Btn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubTv=(TextView)findViewById(R.id.TextView1);if(S_Tv.length()0)S_Tv=S_Tv.substring(0,S_Tv.length()-1);Tv.setText(S_Tv);}});linearlayout4.addView(Btn,params);Btn=newButton(this);Btn.setText(clear);Btn.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubTv=(TextView)findViewById(R.id.TextView1);S_Tv=;Tv.setText(S_Tv);}});linearlayout4.addView(Btn,p