之基础石老师-代码6android用户界面开发_第1页
之基础石老师-代码6android用户界面开发_第2页
之基础石老师-代码6android用户界面开发_第3页
之基础石老师-代码6android用户界面开发_第4页
之基础石老师-代码6android用户界面开发_第5页
免费预览已结束,剩余76页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android用户界 单选 多选 菜 作 绘制按钮和土司弹出//ButtonButtonbutton_ok=(Button)//设置Button控件{publicvoidonClick(Viewv)//}}}/*publicbooleanonKeyDown(intkeyCode,KeyEvent{switch(keyCode)caseKeyEvent.KEYCODE_DPAD_UP:DisplayToast("按下:上方向键");}}/*publicbooleanonKeyUp(intkeyCode,KeyEvent{switch(keyCode)case}}textview(TextView)this.findViewById(R.id.textview);Stringstring="TextView示例,wangzhiguo";/*/*/*设置文字背景*//*设置TextView*/的TextView组件 ,粗 单位也不确定,是pixel还是dip,都。后来想起textview中有个内容过长加省略号的属性,即ellipsize,可以较偷懒地解决这个问题,哈哈~在xml中android:ellipsizeend"省略号在结尾android:ellipsize="start"省略号在开头android:ellipsizemiddle"省略号在中间android:ellipsize="marquee"跑马灯 编辑框<stringandroid:layoutwidth="fillparent"android:layoutheight="wrapcontent" android:layoutwidth="fillparent"android:layoutheight="wrapcontent"android:layoutx="29px"android:layouty="33px"m_EditText=(EditText)findViewById(R.id.EditText01);*设置当m_EditText中为空时提示的内容在XML中同样可以实现:///*设置EditText事件*/ 得到文字,将其显示 }android:hint="请输入用户名..."提示属性android:textColorHint="#238745"更改提示颜色android:enabled="false"不可编辑android:maxLength="40"最大内容长度 要求输入android:phoneNumber="true"只能输入android:inputType="date指定输入类型 actionUnspecified未指定,对应常量actionNoneEditorInfo.IME_ACTION_NONEactionGo去往,对应常量EditorInfo.IME_ACTION_GO效果:actionSend发送,对应常量EditorInfo.IME_ACTION_SEND效果:actionNextEditorInfo.IME_ACTION_NEXT效果:actionDoneEditorInfo.IME_ACTION_DONE//回车editText.setOnEditorActionListener(new()

publicbooleanonEditorAction(TextViewv,intactionId,eyEventevent)Toast.makeText(oEditText.this,String.valueOf(actionId),Toast.LENGTH_SHORT).show();return}publicvoidonClick(Viewv)Toast.makeText(oEditText.this,.toString(),Buttonall=(Button)findViewById(R.id.btn_all);all.setOnClickListener(newOnClickListener(){publicvoidonClick(View{}Buttonall=(Button)findViewById(R.id.btn_all);all.setOnClickListener(newOnClickListener(){publicvoidonClick(View{}publicvoidonClick(Viewv)Editableeditable=editText.getText();;}publicvoidonClick(Viewv)intend=editText.getSelectionEnd();CharSequencee(start,Toast.makeText(oEditText.this,selectText,}

@paramstart@paramendprotectedvoidswitchIndex(intstart,int{int}EditText中的焦点控制导致进入intent就打开输入法,影响界面美观。也可以EditText前面放置一个看不到的LinearLayout,让他率先获取焦点:<LinearLayoutandroidfocusable="true"androidfocusableInTouode="true"android:layout_width="0px"EditText中内容改变事件用户提示当前已经录入多少字符。在EditText没有找setOnxxxx的方法。所以到sourceprint?01editText.addTextChangedListener(newandroid.text.TextWatcher(){publicvoidafterTextChanged(Editables)}publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){}publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){}<string<string<string>*TextViewRadioGroup4个RadioButtonm_TextView=(TextView)findViewById(R.id.TextView01);m_Radio1=(RadioButton)findViewById(R.id.RadioButton1);m_Radio2=(RadioButton)findViewById(R.id.RadioButton2);m_Radio3=(RadioButton)findViewById(R.id.RadioButton3);m_Radio4=(RadioButton)findViewById(R.id.RadioButton4);/*设置事件*/.setOnCheckedChangeListener(new{}else}}

}/*Toast//toast显示该Toast}Toast的用法简toastToast.makeText(getApplicationContext(),"自定义位置Toast",Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER,0,0);带效"带的Toast",Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER,0,0);toastView.addView(imageCodeProject,0);LayoutInflaterinflater=getLayoutInflater();(ViewGroup)findViewById(R.id.llToast));ImageViewimage=(ImageView)layouttext.setText("完全自定义Toast");toast=newToast(getApplicationContext());{publicvoid{}<string>>>CheckBox.OnCheckedChangeListener()

booleanisChecked) }}m_Button1.setOnClickListener(newButton.OnClickListener()publicvoidonClick(Viewv)intnum=if{}if{}if{}if{}

DisplayToast("谢谢参与!你一共选择了numPopWindow(了解<LinearLayoutxmlns:android="http://s android:orientation="horizontal"android:layout_width="fill_parent"<LinearLayoutandroid:layout_width="fill_parent"android:orientation="vertical"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/popwindow_linear_call"><TextViewandroid:layout_width="wrap_content"android:textSize="15dp"/><LinearLayoutandroid:layout_width="fill_parent"android:orientation="vertical"android:layout_height="wrap_content" <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Message"android:textSize="15dp"/><LinearLayoutandroid:layout_width="fill_parent"android:orientation="vertical"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/popwindow_linear_details"><TextViewandroid:layout_width="wrap_content"android:textSize="15dp"/>/**Calledwhentheactivityisfirstcreated.*/}Viewview=View.inflate(this,R.layout.popupwindow_layout,null);PopupWindowpopupWindow=newPopupWindow(view,popupWindow.showAtLocation(View.inflate(this,R.layout.main,null),}

////Viewview1=view.findViewById(R.id.popwindow_linear_call);view1.setLayoutParams(newLayoutParams(LayoutParams.WRAP_CONTENT,}}ActivityGroup(了解layout分开,把逻辑代码全写在主界面的逻辑代码中,但是很明显可性相当差,这里通过ActivityGroup来解决这个问题。要求点击底部不同按钮切换不同的Activity,并在中间显示Activity对应的ContentView<LinearLayoutxmlns:android="http://s android:layout_width="fill_parent"android:orientation="vertical"<LinearLayoutandroid:gravity="center_horizontal"<TextViewandroid:id="@+id/cust_title"android:textColor="@android:color/white" <ScrollViewandroid:measureAllChildren="true"android:id="@+id/containerBody"android:layout_weight="1"android:layout_height="fill_parent"<LinearLayoutandroid:background="@android:color/black"android:layout_gravity="bottom"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"> android:layout_marginLeft="7dp"android:layout_marginTop="3dp"android:layout_height="wrap_content"/> android:layout_marginLeft="7dp"android:layout_marginTop="3dp"android:layout_height="wrap_content"/> android:layout_marginLeft="7dp"android:layout_marginTop="3dp"android:layout_height="wrap_content"/>publicclassTestViewextendsActivityGroupprivateScrollViewcontainer=////// 。 此时通过 跳转到B,如果这个 添//B。也就是说,如果添加了FLAG_ACTIVITY_CLEAR_TOP标记,并且目标Activity在栈中已经存在,则将会把位于该目标activity之上的activity从栈出销毁。这跟上面把B的Launch//ActivityGroup不保存子Activity的状态呢?即切换时,直接销毁。ImageViewbtnModule1(ImageViewfindViewById(R.id.btnModule1);btnModule1.setOnClickListener(newOnClickListener(){publicvoidonClick(View{container.removeAllViews();}//ImageViewbtnModule2=(ImageView)findViewById(R.id.btnModule2);btnModule2.setOnClickListener(newOnClickListener(){publicvoidonClick(View{container.removeAllViews();}//ImageViewbtnModule3=(ImageView)findViewById(R.id.btnModule3);btnModule3.setOnClickListener(newOnClickListener(){publicvoidonClick(View{container.removeAllViews();}}}其实也很简单,只要在继承ActivityGroup的类中publicbooleanonKeyUp(intkeyCode,KeyEvent{if(keyCode==KeyEvent.KEYCODE_){}}onkeyDownonkeyUp单 <itemandroid:id="@+id/about"android:title="关于"/><itemandroid:id="@+id/exit"android:title="退出"/*创 publicboolean Inflaterinflater= //设 ..return}

,/* //得到当前选中的 intitem_id=item.getItemId();switch(item_id){case/*Intent*/Intentintentnew/*指定intent要启动的类*//*启动一个新的Activity*//*关闭当前的Activity*/case}return}启用菜单的另外 )// .add(0,0,0,.add(0,1,1,return}DialogDialogdialog=newnew 在登陆

pDialog=ProgressDialog.show(Acitivity01.this,"请稍等","newpublicvoidrun()try}catch(InterruptedExceptione)//TODOAuto-generatedcatchblock}publicDialog LayoutInflaterfactory=LayoutInflater.from(Acitivity01.this);ViewdialogView=factory.inflate(R.layout.dialog,null);Dialogdialog=null;AlertDialog.Builderbuilder=newAlertDialog.Builder(Acitivity01.this);builder.setTitle("thisisaloginview");builder.setPositiveButton("ok",null);dialog=builder.create();return}Dialog显示样式问题Dialogd=new<itemDialogd=newAlertDialogdialog=newAlertDialog.Builder(this).create();>>ImageViewtextview=(TextView)this.findViewById(R.id.TextView01);//android:src="@drawable/logo"//publicvoidrun()while(isrung)try//更新Alpha{}}}//mHandler=newHandler(){{super.handleMessage(msg);"+//}}publicvoidupdateAlpha()if(image_alpha-7>={image_alpha-=}elseisrung=false;}//imageview}列表视图1{String[]strs= R.layout.simple_list_item_1,strs);ListViewlv=this.getListView();intposition,longid) }}}}{ListViewString[]strs={"Java","JavaME","JavaEE","Android"};{super.onCreate(savedInstanceState);lv=ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strs);intposition,longid) }}}第三种ListView的写法(使用自定义适配器{setListAdapter(newMyAdapter());}String[]strs={"Java","JavaME","JavaEE","Android"};publicintgetCount(){return}}return}{Viewv=li.inflate(R.layout.listview_item,ImageViewiv= }}}补lv.setFilterText("am");模仿键盘输入am注意在ListView上添加,应该使使用setOnItemSelectedListener 则添加在listView上的setOnItemClickListener无效,如何处理?只需在该Viewsimple_list_item_1是系统带listview的布局listView的onItemClickListener,无效,解决办法,ListView中一些特殊的属性首先stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false第二transciptMode属性需要ListView或者其它显示大Items的控件实时或者查看信息,并且希望第三cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张然后指定属list空白位置的时候发现ListItem要的颜色,如果你是用做背景的话,那也只要将android:cacheColorHint指定为透明(# )就可以了去掉item之间的分割线android:divider="@drawable/list_driver"其中@drawable/list_driver是一个资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null"就可以了第五fadingEdge属性,上边和下边有黑色的阴影第五scrollbars属性,作用是隐藏listView的滚动条,"数据适配器KnownIndirectArrayAdapter<T>,BaseAdapter,CursorAdapter,HeaderViewListAdapter,ResourceCursorAdapter,SimpleAdapter,SimpleCursorAdapter,WrapperListAdapter我们一般常用的这里主要介绍publicSimpleAdapter(Contextcontext,List<?extendsMap<String,?>>data,intresource,String[]from,int[]to)Activity(一般而言),是Map或者继承自MapHashMap,这些语法都是Java了!这里呢是作为数据源,而且每一个ArraList中的一行就代表着呈现出来的一行,Map这个id数组就是LayOutxml文件中命名id形成的唯一的int型标识符4ImageButtonm_ImageButton1=(ImageButton)findViewById(R.id.ImageButton01);m_ImageButton2=(ImageButton)findViewById(R.id.ImageButton02);m_ImageButton3=(ImageButton)findViewById(R.id.ImageButton03);m_ImageButton4=(ImageButton)findViewById(R.id.ImageButton04);//m_ImageButton1是在xml //以下分别为每个按钮设置事件setOnClickListenerm_ImageButton1.setOnClickListener(newButton.OnClickListener//Dialogdialog=newintwhichButton)}}).create();//}Dialogdialog=newint{

}}).create();//}

Dialogdialog=newint{}}).create();//}Dialogdialog=newintwhichButton)}}).create();//}Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有?在我们的列表有项时会是什么样的?是不是会占用极大的系统资源?{Viewitem=mInflater.inflate(R.layout.list_item_icon_text,null);((TextView)item.findViewById(R.id.text)).setText(DATA[position]);((ImageView)item.findViewById(R.id.icon)).setImageBitmap((position&1)==1?mIcon1:mIcon2);return}怎么样?如果超过项时,设想!您可千万别这么写!{if(convertView==null)}convertView.findViewById(R.id.icon)).setImageBitmap((position&1)==1?mIcon1:mIcon2);return}当你使用已有coneriew的时候,以后的conveView,是从原先的coverView中取来(参考帮助文档中的gidiew),如果这些属性被更改了,则必须从新set.否则显示会出问题{ViewHolderif(convertView==null)holder=newViewHolder();holder.text=(TextView)convertView.findViewById(R.id.text);}else}holder.icon.setImageBitmap((position&1)==1?mIcon1:mIcon2);returnconvertView;}{TextViewtext;ImageView}SL_SE_NGeSCOL_STE_OCH_SCO将那些view显示出来ListView继承自publicinterfaceOnScrollListener{Theviewisnotscrolling.NotenavigatingthelistusingthetrackballcountsbeingintheidlestatesincethesetransitionsarenotTheuserisscrollingusingtouch,andtheirfingerisstillontheTheuserhadpreviouslybeenscrollingusingtouchandhadperformedafling.animationisnowcoastingtoaCallbackmethodtobeinvokedwhilethelistvieworgridviewisbeingscrolled.Ifviewisbeingscrolled,thismethodwillbecalledbeforethenextframeofthescrollrendered.Inparticular,itwillbecalledbeforeanycalls@paramviewTheviewwhosescrollstateisbeing@paramscrollStateThecurrentscrollstate.Oneof{@linkCallbackmethodtobeinvokedwhenthelistorgridhasbeenscrolled.Thiswillcalledafterthescrollhas@paramviewTheviewwhosescrollstateisbeing@paramfirstVisibleItemtheindexofthefirstvisiblecell(ignore@paramvisibleItemCountthenumberofvisible@paramtotalItemCountthenumberofitemsinthelistpublicvoidonScroll(AbsListViewview,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount);}privatebooleanmBusy=false;//滚动中privateOnScrollListenermOnScrollListener=newOnScrollListener(){@Override{switch(scrollState)mBusy=false;casemBusy=true;mBusy=true;}}intvisibleItemCount,inttotalItemCount){}OnScrollListener还可以方便的实现动态加载数据。水平滚动与垂直滚动<ScrollView <LinearLayoutandroid:orientation="vertical"<TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="30px" "/> <TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text=" ScrollView垂直滚动,不能通过修改属性变HorizontalScrollView水平滚这两个可以任意相互嵌套。注意命名空间 自带滚动,无需添 设定哪个处于被选中自定义组件隐藏(不占位置);View.VISIBLEView.VISIBLELinearLayoutlayout=AnimationSetset=newAnimationSet(true);Animationanim=AnimationUtils.loadAnimation(this,LayoutAnimationControllercontroller=newLayoutAnimationController(anim,2);anim=newTranslateAnimation(320,0,0,0);anim=newAlphaAnimation(0,1); > >Shader渲AndroidShader类专门用来渲染图像以及一些几何图形,Shader下面包括几个直接子类,分别是BitmapShader、ComposeShaderLinearGradientRadialGradient、SweepGradient。BitmapShader主要用来渲染图像,LinearGradient用来进行梯度渲染,RadialGradient用来进行环形渲染,SweepGradient用来进行梯度渲染,ComposeShader则是一个混合渲染,可以和其它几个子类组合起来使用。对象,然后设置渲染对象,然后再绘制时使用这个Paint对象即可。当然,用不同的渲染时需要构建不同的对象。下面是一个简单的示例,其实用起来比较简单了只是方法参数比shape的使<solidandroid:angle="270"/>android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。 修复了这个问题吧,如果无效的话那就只能设成1dp了。<?xmlversion="1.0"encoding="utf- <itemandroid:state_pressed="true"<itemandroid:state_focused="true"android:angle="270"/><solid垂直线性布局<LinearLayoutxmlns:android="http://s >android:layout_weight="3"重量级,越大则在界面中所占比例也越多(即四行所水平线性布局<LinearLayoutxmlns:android="http://s ><RelativeLayoutxmlns:android="http://s android:layout_below="@id/label"/>//layout_below表示该放在TextView下面 //在id=ok的左边android:text="取消"/><TableLayoutxmlns:android="http://s android:padding="3dip"/>android:padding="3dip"/>android:padding="3dip"/><TableLayoutxmlns:android="http://s >android:text="TableTest"android:text="1"android:text="2"android:text="AndroidOS"android:collapseandroid:collapse="1(目前更改为如下写法本例中没有涉及此属性,它是要设置当前view的背景,文件应该放在res文件夹<TextViewandroid:layout_column="0"android:padding="3dip"android:layout_span="2"android:text="android:background="#ff0000"/>android:layout_span="2"合并单元格不要和android:layout_weight="1",同时使用切换卡布局<TabHostxmlns:android="http://s android:text="thisisatab"/>android:text="thisisanothertab"/>android:text="thisisathirdtab"//TabHost对/**Calledwhentheactivityisfirstcreated.*///TabHost/*为TabHost添加////设置其和图标//设置内容(setContent)mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB2",mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB3",////设置TabHost的背景资////设置当前显示哪一个//切换事件处理,setOnTabChangedListener//TODOAuto-generatedmethodstubDialogdialog=newint{}}).create();//}}}我们再看三种推荐的写1publicclassTest3ActivityextendsTabActivityTabHosttabHost=this.getTabHost(); TabSpectab1=tabHost.newTabSpec("aa").setIndicator("bb").setContent(R.id.xxx2/**Calledwhentheactivityisfirstcreated.*/TabHosttabHost=this.getTabHost();TabSpectab2=}{TextViewtv=newTextView(this);return}3 关于事件publicvoidonTabChanged(String}注:使用切如果我们使用文档上的方法,依据布局文件生成界面,这样的好处就是切换卡的位置和内容区域的位置可以通过配置文件指定。比如,让切换看出现在屏幕下方。。。当然,目前无法出现在左右。或者,在切换卡布局上方绘制标题之类。示android:padding="5dp"/>importcom.feng.entiy.R;importandroid.content.DialogInterface;importandroid.graphics.Color;importandroid.view.Gravity;importandroid.view.;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseExpandableListAdapter;importandroid.widget.ExpandableListAdapter;importandroid.widget.ExpandableListView;importandroid.widget.TextView;publicclasstabitem3extends{ExpandableListAdaptermAdapter;ExpandableListViewlv;intm=booleanflag={super.onCreate(savedInstanceState);mAdapter=newMyExpandableListAdapter();//上下文菜单lv=this.getExpandableListView();{m=if(m==1)AlertDialog.Builderbuilder=new{}}for(inti=0;i<mAdapter.getGroupCount();{if(m!=i)}}}}// Inflaterinflater=this.get 3,);return }//privateStringgroups默认组隐私组植物两系privateString[][]children={{"1111","2222","44444","33333"{"55555","66666","77777","888888"{"99999", "},{ ", "}publicint{return}{return}{return}publicObjectgetChild(intgroupPosition,int{return}{return}publiclonggetChildId(intgroupPosition,int{return}{return}//TextViewtextView=newTextView(tabitem3.this);//设置组名距离左边的距离textView.setPadding(400,0,0);returntextView;}publicViewgetGroupView(intgroupPosition,booleanisExpanded,ViewconvertView,ViewGroupparent){TextViewtextView=getGenericView();returntextView;}publicViewgetChildView(intgroupPosition,intchildPosition,booleanisLastChild,ViewconvertView,ViewGroupparent){TextViewtextView=getGenericView();publicvoidonCreateContext(Context Info){}

.add(0,0,1,移动到其它组.add(0,1,2,从该组中移除return}publicbooleanisChildSelectable(intgroupPosition,int{return}}}补解决Android4.0模拟器不能上网问题进入androids 命令窗口:cmd->adbs>adbs就通过getTag来分辨是哪个Button被按下。importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;Buttonbutton1=(Button)findViewById(R.id.Button01);B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论