




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计外文文献原文及译文BEGINNINGANDROIDANDROID起航学生姓名学号系别专业指导教师2015年5月计算机系网络工程BEGINNINGANDROIDUSINGXMLBASEDLAYOUTSWHILEITISTECHNICALLYPOSSIBLETOCREATEANDATTACHWIDGETSTOOURACTIVITYPURELYTHROUGHJAVACODE,THEWAYWEDIDINCHAPTER4,THEMORECOMMONAPPROACHISTOUSEANXMLBASEDLAYOUTFILEDYNAMICINSTANTIATIONOFWIDGETSISRESERVEDFORMORECOMPLICATEDSCENARIOS,WHERETHEWIDGETSARENOTKNOWNATCOMPILETIMEEG,POPULATINGACOLUMNOFRADIOBUTTONSBASEDONDATARETRIEVEDOFFTHEINTERNETWITHTHATINMIND,ITSTIMETOBREAKOUTTHEXMLANDLEARNHOWTOLAYOUTANDROIDACTIVITIESTHATWAYWHATISANXMLBASEDLAYOUTASTHENAMESUGGESTS,ANXMLBASEDLAYOUTISASPECIFICATIONOFWIDGETSRELATIONSHIPSTOEACHOTHERANDTOTHEIRCONTAINERSMOREONTHISINCHAPTER7ENCODEDINXMLFORMATSPECIFICALLY,ANDROIDCONSIDERSXMLBASEDLAYOUTSTOBERESOURCES,ANDASSUCHLAYOUTFILESARESTOREDINTHERES/LAYOUTDIRECTORYINSIDEYOURANDROIDPROJECTEACHXMLFILECONTAINSATREEOFELEMENTSSPECIFYINGALAYOUTOFWIDGETSANDTHEIRCONTAINERSTHATMAKEUPONEVIEWHIERARCHYTHEATTRIBUTESOFTHEXMLELEMENTSAREPROPERTIES,DESCRIBINGHOWAWIDGETSHOULDLOOKORHOWACONTAINERSHOULDBEHAVEFOREXAMPLE,IFABUTTONELEMENTHASANATTRIBUTEVALUEOFANDROIDTEXTSTYLE“BOLD“,THATMEANSTHATTHETEXTAPPEARINGONTHEFACEOFTHEBUTTONSHOULDBERENDEREDINABOLDFACEFONTSTYLEANDROIDSSDKSHIPSWITHATOOLAAPTWHICHUSESTHELAYOUTSTHISTOOLSHOULDBEAUTOMATICALLYINVOKEDBYYOURANDROIDTOOLCHAINEG,ECLIPSE,ANTSBUILDXMLOFPARTICULARIMPORTANCETOYOUASADEVELOPERISTHATAAPTGENERATESTHERJAVASOURCEFILEWITHINYOURPROJECT,ALLOWINGYOUTOACCESSLAYOUTSANDWIDGETSWITHINTHOSELAYOUTSDIRECTLYFROMYOURJAVACODEWHYUSEXMLBASEDLAYOUTSMOSTEVERYTHINGYOUDOUSINGXMLLAYOUTFILESCANBEACHIEVEDTHROUGHJAVACODEFOREXAMPLE,YOUCOULDUSESETTYPEFACETOHAVEABUTTONRENDERITSTEXTINBOLD,INSTEADOFUSINGAPROPERTYINANXMLLAYOUTSINCEXMLLAYOUTSAREYETANOTHERFILEFORYOUTOKEEPTRACKOF,WENEEDGOODREASONSFORUSINGSUCHFILESPERHAPSTHEBIGGESTREASONISTOASSISTINTHECREATIONOFTOOLSFORVIEWDEFINITION,SUCHASAGUIBUILDERINANIDELIKEECLIPSEORADEDICATEDANDROIDGUIDESIGNERLIKEDROIDDRAW1SUCHGUIBUILDERSCOULD,INPRINCIPLE,GENERATEJAVACODEINSTEADOFXMLTHECHALLENGEISREREADINGTHEUIDEFINITIONTOSUPPORTEDITSTHATISFARSIMPLERIFTHEDATAISINASTRUCTUREDFORMATLIKEXMLTHANINAPROGRAMMINGLANGUAGEMOREOVER,KEEPINGGENERATEDXMLDEFINITIONSSEPARATEDFROMHANDWRITTENJAVACODEMAKESITLESSLIKELYTHATSOMEBODYSCUSTOMCRAFTEDSOURCEWILLGETCLOBBEREDBYACCIDENTWHENTHEGENERATEDBITSGETREGENERATEDXMLFORMSANICEMIDDLEGROUNDBETWEENSOMETHINGTHATISEASYFORTOOLWRITERSTOUSEANDEASYFORPROGRAMMERSTOWORKWITHBYHANDASNEEDEDALSO,XMLASAGUIDEFINITIONFORMATISBECOMINGMORECOMMONPLACEMICROSOFTSXAML2,ADOBESFLEX3,ANDMOZILLASXUL4ALLTAKEASIMILARAPPROACHTOTHATOFANDROIDPUTLAYOUTDETAILSINANXMLFILEANDPUTPROGRAMMINGSMARTSINSOURCEFILESEG,JAVASCRIPTFORXULMANYLESSWELLKNOWNGUIFRAMEWORKS,SUCHASZK5,ALSOUSEXMLFORVIEWDEFINITIONWHILE“FOLLOWINGTHEHERD”ISNOTNECESSARILYTHEBESTPOLICY,ITDOESHAVETHEADVANTAGEOFHELPINGTOEASETHETRANSITIONINTOANDROIDFROMANYOTHERXMLCENTEREDVIEWDESCRIPTIONLANGUAGEOK,SOWHATDOESITLOOKLIKEHEREISTHEBUTTONFROMTHEPREVIOUSCHAPTERSSAMPLEAPPLICATION,CONVERTEDINTOANXMLLAYOUTFILE,FOUNDINTHELAYOUTS/NOWREDUXSAMPLEPROJECTTHISCODESAMPLEALONGWITHALLOTHERSINTHISCHAPTERCANBEFOUNDINTHESOURCECODEAREAOFHTTP/APRESSCOMTHECLASSNAMEOFTHEWIDGETBUTTONFORMSTHENAMEOFTHEXMLELEMENTSINCEBUTTONISANANDROIDSUPPLIEDWIDGET,WECANJUSTUSETHEBARECLASSNAMEIFYOUCREATEYOUROWNWIDGETSASSUBCLASSESOFANDROIDVIEWVIEW,YOUWOULDNEEDTOPROVIDEAFULLPACKAGEDECLARATIONASWELLTHEROOTELEMENTNEEDSTODECLARETHEANDROIDXMLNAMESPACEXMLNSANDROID“HTTP/SCHEMASANDROIDCOM/APK/RES/ANDROID“ALLOTHERELEMENTSWILLBECHILDRENOFTHEROOTANDWILLINHERITTHATNAMESPACEDECLARATIONBECAUSEWEWANTTOREFERENCETHISBUTTONFROMOURJAVACODE,WENEEDTOGIVEITANIDENTIFIERVIATHEANDROIDIDATTRIBUTEWEWILLCOVERTHISCONCEPTINGREATERDETAILLATERINTHISCHAPTERTHEREMAININGATTRIBUTESAREPROPERTIESOFTHISBUTTONINSTANCEANDROIDTEXTINDICATESTHEINITIALTEXTTOBEDISPLAYEDONTHEBUTTONFACEINTHISCASE,ANEMPTYSTRINGANDROIDLAYOUT_WIDTHANDANDROIDLAYOUT_HEIGHTTELLANDROIDTOHAVETHEBUTTONSWIDTHANDHEIGHTFILLTHE“PARENT”,INTHISCASETHEENTIRESCREENTHESEATTRIBUTESWILLBECOVEREDINGREATERDETAILINCHAPTER7SINCETHISSINGLEWIDGETISTHEONLYCONTENTINOURACTIVITY,WEONLYNEEDTHISSINGLEELEMENTCOMPLEXUISWILLREQUIREAWHOLETREEOFELEMENTS,REPRESENTINGTHEWIDGETSANDCONTAINERSTHATCONTROLTHEIRPOSITIONINGALLTHEREMAININGCHAPTERSOFTHISBOOKWILLUSETHEXMLLAYOUTFORMWHENEVERPRACTICAL,SOTHEREAREDOZENSOFOTHEREXAMPLESOFMORECOMPLEXLAYOUTSFORYOUTOPERUSEFROMCHAPTER7ONWARDWHATSWITHTHESIGNSMANYWIDGETSANDCONTAINERSONLYNEEDTOAPPEARINTHEXMLLAYOUTFILEANDDONOTNEEDTOBEREFERENCEDINYOURJAVACODEFOREXAMPLE,ASTATICLABELTEXTVIEWFREQUENTLYONLYNEEDSTOBEINTHELAYOUTFILETOINDICATEWHEREITSHOULDAPPEARTHESESORTSOFELEMENTSINTHEXMLFILEDONOTNEEDTOHAVETHEANDROIDIDATTRIBUTETOGIVETHEMANAMEANYTHINGYOUDOWANTTOUSEINYOURJAVASOURCE,THOUGH,NEEDSANANDROIDIDTHECONVENTIONISTOUSEID/ASTHEIDVALUE,WHERETHEREPRESENTSYOURLOCALLYUNIQUENAMEFORTHEWIDGETINQUESTIONINTHEXMLLAYOUTEXAMPLEINTHEPRECEDINGSECTION,ID/BUTTONISTHEIDENTIFIERFORTHEBUTTONWIDGETANDROIDPROVIDESAFEWSPECIALANDROIDIDVALUES,OFTHEFORMANDROIDID/WEWILLSEESOMEOFTHESEINVARIOUSCHAPTERSOFTHISBOOK,SUCHASCHAPTERS8AND10WEATTACHTHESETOTHEJAVAHOWGIVENTHATYOUHAVEPAINSTAKINGLYSETUPTHEWIDGETSANDCONTAINERSINANXMLLAYOUTFILENAMEDMAINXMLSTOREDINRES/LAYOUT,ALLYOUNEEDISONESTATEMENTINYOURACTIVITYSONCREATECALLBACKTOUSETHATLAYOUTSETCONTENTVIEWRLAYOUTMAINTHISISTHESAMESETCONTENTVIEWWEUSEDEARLIER,PASSINGITANINSTANCEOFAVIEWSUBCLASSINTHATCASE,ABUTTONTHEANDROIDBUILTVIEW,CONSTRUCTEDFROMOURLAYOUT,ISACCESSEDFROMTHATCODEGENERATEDRCLASSALLOFTHELAYOUTSAREACCESSIBLEUNDERRLAYOUT,KEYEDBYTHEBASENAMEOFTHELAYOUTFILEMAINXMLRESULTSINRLAYOUTMAINTOACCESSOURIDENTIFIEDWIDGETS,USEFINDVIEWBYID,PASSINGINTHENUMERICIDENTIFIEROFTHEWIDGETINQUESTIONTHATNUMERICIDENTIFIERWASGENERATEDBYANDROIDINTHERCLASSASRIDSOMETHINGWHERESOMETHINGISTHESPECIFICWIDGETYOUARESEEKINGTHOSEWIDGETSARESIMPLYSUBCLASSESOFVIEW,JUSTLIKETHEBUTTONINSTANCEWECREATEDINCHAPTER4THERESTOFTHESTORYINTHEORIGINALNOWDEMO,THEBUTTONSFACEWOULDSHOWTHECURRENTTIME,WHICHWOULDREFLECTWHENTHEBUTTONWASLASTPUSHEDORWHENTHEACTIVITYWASFIRSTSHOWN,IFTHEBUTTONHADNOTYETBEENPUSHEDMOSTOFTHATLOGICSTILLWORKS,EVENINTHISREVISEDDEMONOWREDUXHOWEVER,RATHERTHANINSTANTIATINGTHEBUTTONINOURACTIVITYSONCREATECALLBACK,WECANREFERENCETHEONEFROMTHEXMLLAYOUTPACKAGECOMCOMMONSWAREANDROIDLAYOUTSIMPORTANDROIDAPPACTIVITYIMPORTANDROIDOSBUNDLEIMPORTANDROIDVIEWVIEWIMPORTANDROIDWIDGETBUTTONIMPORTJAVAUTILDATEPUBLICCLASSNOWREDUXEXTENDSACTIVITYIMPLEMENTSVIEWONCLICKLISTENERBUTTONBTNOVERRIDEPUBLICVOIDONCREATEBUNDLEICICLESUPERONCREATEICICLESETCONTENTVIEWRLAYOUTMAINBTNBUTTONFINDVIEWBYIDRIDBUTTONBTNSETONCLICKLISTENERTHISUPDATETIMEPUBLICVOIDONCLICKVIEWVIEWUPDATETIMEPRIVATEVOIDUPDATETIMEBTNSETTEXTNEWDATETOSTRINGTHEFIRSTDIFFERENCEISTHATRATHERTHANSETTINGTHECONTENTVIEWTOBEAVIEWWECREATEDINJAVACODE,WESETITTOREFERENCETHEXMLLAYOUTSETCONTENTVIEWRLAYOUTMAINTHERJAVASOURCEFILEWILLBEUPDATEDWHENWEREBUILDTHISPROJECTTOINCLUDEAREFERENCETOOURLAYOUTFILESTOREDASMAINXMLINOURPROJECTSRES/LAYOUTDIRECTORYTHEOTHERDIFFERENCEISTHATWENEEDTOGETOURHANDSONOURBUTTONINSTANCE,FORWHICHWEUSETHEFINDVIEWBYIDCALLSINCEWEIDENTIFIEDOURBUTTONASID/BUTTON,WECANREFERENCETHEBUTTONSIDENTIFIERASRIDBUTTONNOW,WITHTHEBUTTONINSTANCEINHAND,WECANSETTHECALLBACKANDSETTHELABELASNEEDEDASYOUCANSEEINFIGURE51,THERESULTSLOOKTHESAMEASWITHTHEORIGINALNOWDEMOFIGURE51THENOWREDUXSAMPLEACTIVITYEMPLOYINGBASICWIDGETSEVERYGUITOOLKITHASSOMEBASICWIDGETSFIELDS,LABELS,BUTTONS,ETCANDROIDSTOOLKITISNODIFFERENTINSCOPE,ANDTHEBASICWIDGETSWILLPROVIDEAGOODINTRODUCTIONASTOHOWWIDGETSWORKINANDROIDACTIVITIESASSIGNINGLABELSTHESIMPLESTWIDGETISTHELABEL,REFERREDTOINANDROIDASATEXTVIEWLIKEINMOSTGUITOOLKITS,LABELSAREBITSOFTEXTNOTEDITABLEDIRECTLYBYUSERSTYPICALLY,THEYAREUSEDTOIDENTIFYADJACENTWIDGETSEG,A“NAME”LABELBEFOREAFIELDWHEREONEFILLSINANAMEINJAVA,YOUCANCREATEALABELBYCREATINGATEXTVIEWINSTANCEMORECOMMONLY,THOUGH,YOUWILLCREATELABELSINXMLLAYOUTFILESBYADDINGATEXTVIEWELEMENTTOTHELAYOUT,WITHANANDROIDTEXTPROPERTYTOSETTHEVALUEOFTHELABELITSELFIFYOUNEEDTOSWAPLABELSBASEDONCERTAINCRITERIA,SUCHASINTERNATIONALIZATION,YOUMAYWISHTOUSEARESOURCEREFERENCEINTHEXMLINSTEAD,ASWILLBEDESCRIBEDINCHAPTER9TEXTVIEWHASNUMEROUSOTHERPROPERTIESOFRELEVANCEFORLABELS,SUCHASANDROIDTYPEFACETOSETTHETYPEFACETOUSEFORTHELABELEG,MONOSPACEANDROIDTEXTSTYLETOINDICATETHATTHETYPEFACESHOULDBEMADEBOLDBOLD,ITALICITALIC,ORBOLDANDITALICBOLD_ITALICANDROIDTEXTCOLORTOSETTHECOLOROFTHELABELSTEXT,INRGBHEXFORMATEG,FF0000FORREDFOREXAMPLE,INTHEBASIC/LABELPROJECT,YOUWILLFINDTHEFOLLOWINGLAYOUTFILEASYOUCANSEEINFIGURE61,JUSTTHATLAYOUTALONE,WITHTHESTUBJAVASOURCEPROVIDEDBYANDROIDSPROJECTBUILDEREG,ACTIVITYCREATOR,GIVESYOUTHEAPPLICATIONFIGURE61THELABELDEMOSAMPLEAPPLICATIONBUTTON,BUTTON,WHOSGOTTHEBUTTONWEVEALREADYSEENTHEUSEOFTHEBUTTONWIDGETINCHAPTERS4AND5ASITTURNSOUT,BUTTONISASUBCLASSOFTEXTVIEW,SOEVERYTHINGDISCUSSEDINTHEPRECEDINGSECTIONINTERMSOFFORMATTINGTHEFACEOFTHEBUTTONSTILLHOLDSFLEETINGIMAGESANDROIDHASTWOWIDGETSTOHELPYOUEMBEDIMAGESINYOURACTIVITIESIMAGEVIEWANDIMAGEBUTTONASTHENAMESSUGGEST,THEYAREIMAGEBASEDANALOGUESTOTEXTVIEWANDBUTTON,RESPECTIVELYEACHWIDGETTAKESANANDROIDSRCATTRIBUTEINANXMLLAYOUTTOSPECIFYWHATPICTURETOUSETHESEUSUALLYREFERENCEADRAWABLERESOURCE,DESCRIBEDINGREATERDETAILINTHECHAPTERONRESOURCESYOUCANALSOSETTHEIMAGECONTENTBASEDONAURIFROMACONTENTPROVIDERVIASETIMAGEURIIMAGEBUTTON,ASUBCLASSOFIMAGEVIEW,MIXESINTHESTANDARDBUTTONBEHAVIORS,FORRESPONDINGTOCLICKSANDWHATNOTFOREXAMPLE,TAKEAPEEKATTHEMAINXMLLAYOUTFROMTHEBASIC/IMAGEVIEWSAMPLEPROJECTWHICHISFOUNDALONGWITHALLOTHERCODESAMPLESATHTTP/APRESSCOMTHERESULT,JUSTUSINGTHECODEGENERATEDACTIVITY,ISSHOWNINFIGURE62FIGURE62THEIMAGEVIEWDEMOSAMPLEAPPLICATIONFIELDSOFGREENOROTHERCOLORSALONGWITHBUTTONSANDLABELS,FIELDSARETHETHIRD“ANCHOR”OFMOSTGUITOOLKITSINANDROID,THEYAREIMPLEMENTEDVIATHEEDITTEXTWIDGET,WHICHISASUBCLASSOFTHETEXTVIEWUSEDFORLABELSALONGWITHTHESTANDARDTEXTVIEWPROPERTIESEG,ANDROIDTEXTSTYLE,EDITTEXTHASMANYOTHERSTHATWILLBEUSEFULFORYOUINCONSTRUCTINGFIELDS,INCLUDINGANDROIDAUTOTEXT,TOCONTROLIFTHEFIELDSHOULDPROVIDEAUTOMATICSPELLINGASSISTANCEANDROIDCAPITALIZE,TOCONTROLIFTHEFIELDSHOULDAUTOMATICALLYCAPITALIZETHEFIRSTLETTEROFENTEREDTEXTEG,FIRSTNAME,CITYANDROIDDIGITS,TOCONFIGURETHEFIELDTOACCEPTONLYCERTAINDIGITSANDROIDSINGLELINE,TOCONTROLIFTHEFIELDISFORSINGLELINEINPUTORMULTIPLELINEINPUTEG,DOESMOVEYOUTOTHENEXTWIDGETORADDANEWLINEBEYONDTHOSE,YOUCANCONFIGUREFIELDSTOUSESPECIALIZEDINPUTMETHODS,SUCHASANDROIDNUMERICFORNUMERICONLYINPUT,ANDROIDPASSWORDFORSHROUDEDPASSWORDINPUT,ANDANDROIDPHONENUMBERFORENTERINGINPHONENUMBERSIFYOUWANTTOCREATEYOUROWNINPUTMETHODSCHEMEEG,POSTALCODES,SOCIALSECURITYNUMBERS,YOUNEEDTOCREATEYOUROWNIMPLEMENTATIONOFTHEINPUTMETHODINTERFACE,THENCONFIGURETHEFIELDTOUSEITVIAANDROIDINPUTMETHODFOREXAMPLE,FROMTHEBASIC/FIELDPROJECT,HEREISANXMLLAYOUTFILESHOWINGANEDITTEXTNOTETHATANDROIDSINGLELINEISFALSE,SOUSERSWILLBEABLETOENTERINSEVERALLINESOFTEXTFORTHISPROJECT,THEFIELDDEMOJAVAFILEPOPULATESTHEINPUTFIELDWITHSOMEPROSEPACKAGECOMCOMMONSWAREANDROIDBASICIMPORTANDROIDAPPACTIVITYIMPORTANDROIDOSBUNDLEIMPORTANDROIDWIDGETEDITTEXTPUBLICCLASSFIELDDEMOEXTENDSACTIVITYOVERRIDEPUBLICVOIDONCREATEBUNDLEICICLESUPERONCREATEICICLESETCONTENTVIEWRLAYOUTMAINEDITTEXTFLDEDITTEXTFINDVIEWBYIDRIDFIELDFLDSETTEXT“LICENSEDUNDERTHEAPACHELICENSE,VERSION20“THE“LICENSE“YOUMAYNOTUSETHISFILE“EXCEPTINCOMPLIANCEWITHTHELICENSEYOUMAY“OBTAINACOPYOFTHELICENSEAT“HTTP/WWWAPACHEORG/LICENSES/LICENSE20“THERESULT,ONCEBUILTANDINSTALLEDINTOTHEEMULATOR,ISSHOWNINFIGURE63FIGURE63THEFIELDDEMOSAMPLEAPPLICATIONNOTEANDROIDSEMULATORONLYALLOWSONEAPPLICATIONINTHELAUNCHERPERUNIQUEJAVAPACKAGESINCEALLTHEDEMOSINTHISCHAPTERSHARETHECOMCOMMONSWAREANDROIDBASICPACKAGE,YOUWILLONLYSEEONEOFTHESEDEMOSINYOUREMULATORSLAUNCHERATANYONETIMEANOTHERFLAVOROFFIELDISONETHATOFFERSAUTOCOMPLETION,TOHELPUSERSSUPPLYAVALUEWITHOUTTYPINGINTHEWHOLETEXTTHATISPROVIDEDINANDROIDASTHEAUTOCOMPLETETEXTVIEWWIDGETANDISDISCUSSEDINCHAPTER8JUSTANOTHERBOXTOCHECKTHECLASSICCHECKBOXHASTWOSTATESCHECKEDANDUNCHECKEDCLICKINGTHECHECKBOXTOGGLESBETWEENTHOSESTATESTOINDICATEACHOICEEG,“ADDRUSHDELIVERYTOMYORDER”INANDROID,THEREISACHECKBOXWIDGETTOMEETTHISNEEDITHASTEXTVIEWASANANCESTOR,SOYOUCANUSETEXTVIEWPROPERTIESLIKEANDROIDTEXTCOLORTOFORMATTHEWIDGETWITHINJAVA,YOUCANINVOKEISCHECKEDTODETERMINEIFTHECHECKBOXHASBEENCHECKEDSETCHECKEDTOFORCETHECHECKBOXINTOACHECKEDORUNCHECKEDSTATETOGGLETOTOGGLETHECHECKBOXASIFTHEUSERCHECKEDITALSO,YOUCANREGISTERALISTENEROBJECTINTHISCASE,ANINSTANCEOFONCHECKEDCHANGELISTENERTOBENOTIFIEDWHENTHESTATEOFTHECHECKBOXCHANGESFOREXAMPLE,FROMTHEBASIC/CHECKBOXPROJECT,HEREISASIMPLECHECKBOXLAYOUTTHECORRESPONDINGCHECKBOXDEMOJAVARETRIEVESANDCONFIGURESTHEBEHAVIOROFTHECHECKBOXPUBLICCLASSCHECKBOXDEMOEXTENDSACTIVITYIMPLEMENTSCOMPOUNDBUTTONONCHECKEDCHANGELISTENERCHECKBOXCBOVERRIDEPUBLICVOIDONCREATEBUNDLEICICLESUPERONCREATEICICLESETCONTENTVIEWRLAYOUTMAINCBCHECKBOXFINDVIEWBYIDRIDCHECKCBSETONCHECKEDCHANGELISTENERTHISPUBLICVOIDONCHECKEDCHANGEDCOMPOUNDBUTTONBUTTONVIEW,BOOLEANISCHECKEDIFISCHECKEDCBSETTEXT“THISCHECKBOXISCHECKED“ELSECBSETTEXT“THISCHECKBOXISUNCHECKED“NOTETHATTHEACTIVITYSERVESASITSOWNLISTENERFORCHECKBOXSTATECHANGESSINCEITIMPLEMENTSTHEONCHECKEDCHANGELISTENERINTERFACEVIACBSETONCHECKEDCHANGELISTENERTHISTHECALLBACKFORTHELISTENERISONCHECKEDCHANGED,WHICHRECEIVESTHECHECKBOXWHOSESTATEHASCHANGEDANDWHATTHENEWSTATEISINTHISCASE,WEUPDATETHETEXTOFTHECHECKBOXTOREFLECTWHATTHEACTUALBOXCONTAINSTHERESULTCLICKINGTHECHECKBOXIMMEDIATELYUPDATESITSTEXT,ASYOUCANSEEINFIGURES64AND65FIGURE64THECHECKBOXDEMOSAMPLEAPPLICATION,WITHTHECHECKBOXUNCHECKEDFIGURE65THESAMEAPPLICATION,NOWWITHTHECHECKBOXCHECKEDTURNTHERADIOUPASWITHOTHERIMPLEMENTATIONSOFRADIOBUTTONSINOTHERTOOLKITS,ANDROIDSRADIOBUTTONSARETWOSTATE,LIKECHECKBOXES,BUTCANBEGROUPEDSUCHTHATONLYONERADIOBUTTONINTHEGROUPCANBECHECKEDATANYTIMELIKECHECKBOX,RADIOBUTTONINHERITSFROMCOMPOUNDBUTTON,WHICHINTURNINHERITSFROMTEXTVIEWHENCE,ALLTHESTANDARDTEXTVIEWPROPERTIESFORFONTFACE,STYLE,COLOR,ETC,AREAVAILABLEFORCONTROLLINGTHELOOKOFRADIOBUTTONSSIMILARLY,YOUCANCALLISCHECKEDONARADIOBUTTONTOSEEIFITISSELECTED,TOGGLETOSELECTIT,ANDSOON,LIKEYOUCANWITHACHECKBOXMOSTTIMES,YOUWILLWANTTOPUTYOURRADIOBUTTONWIDGETSINSIDEOFARADIOGROUPTHERADIOGROUPINDICATESASETOFRADIOBUTTONSWHOSESTATEISTIED,MEANINGONLYONEBUTTONOUTOFTHEGROUPCANBESELECTEDATANYTIMEIFYOUASSIGNANANDROIDIDTOYOURRADIOGROUPINYOURXMLLAYOUT,YOUCANACCESSTHEGROUPFROMYOURJAVACODEANDINVOKECHECKTOCHECKASPECIFICRADIOBUTTONVIAITSIDEG,GROUPCHECKRIDRADIO1CLEARCHECKTOCLEARALLRADIOBUTTONS,SONONEINTHEGROUPARECHECKEDGETCHECKEDRADIOBUTTONIDTOGETTHEIDOFTHECURRENTLYCHECKEDRADIOBUTTONOR1IFNONEARECHECKEDFOREXAMPLE,FROMTHEBASIC/RADIOBUTTONSAMPLEAPPLICATION,HEREISANXMLLAYOUTSHOWINGARADIOGROUPWRAPPINGASETOFRADIOBUTTONWIDGETSFIGURE66SHOWSTHERESULTUSINGTHESTOCKANDROIDGENERATEDJAVAFORTHEPROJECTANDTHISLAYOUTFIGURE66THERADIOBUTTONDEMOSAMPLEAPPLICATIONNOTETHATTHERADIOBUTTONGROUPISINITIALLYSETTOBECOMPLETELYUNCHECKEDATTHEOUTSETTOPRESETONEOFTHERADIOBUTTONSTOBECHECKED,USEEITHERSETCHECKEDONTHERADIOBUTTONORCHECKONTHERADIOGROUPFROMWITHINYOURONCREATECALLBACKINYOURACTIVITYITSQUITEAVIEWALLWIDGETS,INCLUDINGTHEONESPREVIOUSLYSHOWN,EXTENDVIEW,ANDASSUCHGIVEALLWIDGETSANARRAYOFUSEFULPROPERTIESANDMETHODSBEYONDTHOSEALREADYDESCRIBEDUSEFULPROPERTIESSOMEOFTHEPROPERTIESONVIEWMOSTLIKELYTOBEUSEDINCLUDECONTROLSTHEFOCUSSEQUENCEANDROIDNEXTFOCUSDOWNANDROIDNEXTFOCUSLEFTANDROIDNEXTFOCUSRIGHTANDROIDNEXTFOCUSUPANDROIDVISIBILITY,WHICHCONTROLSWHETHERTHEWIDGETISINITIALLYVISIBLEANDROIDBACKGROUND,WHICHTYPICALLYPROVIDESANRGBCOLORVALUEEG,00FF00FORGREENTOSERVEASTHEBACKGROUNDFORTHEWIDGETUSEFULMETHODSYOUCANTOGGLEWHETHERORNOTAWIDGETISENABLEDVIASETENABLEDANDSEEIFITISENABLEDVIAISENABLEDONECOMMONUSEPATTERNFORTHISISTODISABLESOMEWIDGETSBASEDONACHECKBOXORRADIOBUTTONSELECTIONYOUCANGIVEAWIDGETFOCUSVIAREQUESTFOCUSANDSEEIFITISFOCUSEDVIAISFOCUSEDYOUMIGHTUSETHISINCONCERTWITHDISABLINGWIDGETSASPREVIOUSLYMENTIONED,TOENSURETHEPROPERWIDGETHASTHEFOCUSONCEYOURDISABLINGOPERATIONISCOMPLETETOHELPNAVIGATETHETREEOFWIDGETSANDCONTAINERSTHATMAKEUPANACTIVITYSOVERALLVIEW,YOUCANUSEGETPARENTTOFINDTHEPARENTWIDGETORCONTAINERFINDVIEWBYIDTOFINDACHILDWIDGETWITHACERTAINIDGETROOTVIEWTOGETTHEROOTOFTHETREEEG,WHATYOUPROVIDEDTOTHEACTIVITYVIASETCONTENTVIEWBEGINNINGANDROIDANDROID起航使用XML进行布局虽然纯粹通过JAVA代码在ACTIVITY上创建和添加部件,在技术上是可行的,我们在第4章中做的一样,更常见的方法是使用一种基于XML的布局文件。动态的小部件实例保留更多,情况复杂,小工具在编译时不为人所知(例如,在数据检索了互联网基础上将单选按钮填充柱。考虑到这一点,现在是时候打破XML来学习如何用此种方式来布置ANDROIDACTIVITIES。什么是基于XML的布局正如其名称所示,一个基于XML的布局是一个关系到每个规格的小部件,和他们的容器(更多关于此内容的在第7章)编码的XML格式。具体来说,ANDROID认为基于XML的布局是资源,因此布局文件存储在RES/在你的ANDROID项目布局目录中。每个XML文件包含一个指定的部件和容器布局元素树,一种意见认为构成层次。对XML元素的属性,描述一个部件应如何看或者一个容器应如何运转。例如,如果一个按钮元素。有一个ANDROID的属性值文字样式“BOLD”,这意味着该文本出现在按钮的表面应该是呈现一个粗体字体样式ANDROID的SDK中附带一个使用的布局的工具(AAPT)。这个工具应自动调用你的ANDROID工具链(例如,ECLIPSE中,ANTSBUILDXML)。作为一个开发人员,尤其重要的是,在您的项目中AAPT生成RJAVA源文件,让您能在那些布局中直接从JAVA代码中获取布局和部件。为什么使用基于XML的布局使用XML布局文件做的大部分都可以通过JAVA代码。例如,你可以使用SETTYPEFACE()命令一个按钮使用粗体文本,而不是在一个XML布局中使用属性。由于XML布局是为你跟踪的另一个文件,所以我们需要好的理由来使用这样的文件。也许最大的原因是为了在视图定义中协助工具的建立,如IDE中一个GUI创建者像ECLIPSE或者一个像DROIDDRAW1设计GUI图形用户界面建设者。这样GUI建设者们,在原则上,生成JAVA代码而不是XML。目前的挑战是重新阅读用户界面的定义,以支持编辑,也就是说,如果是像XLM的结构公式数据比一个程序语言中的数据简单的多。此外,保持生成的XML定义从手写的JAVA代码中分离,使得某人定制的来源意外重新生成不太可能。XML形成一个良好的中间立场,使工具作家使用更简便,程序员需要时手工工作更简易。此外,XML作为一个GUI定义格式是越来越普遍。微软的XAML,ADOBE的FLEX,和MOZILLA的XUL都采取ANDROID类似的方法把布局细节放在一个XML文件和把编程智慧资料放在源文件(例如,XUL中的JAVASCRIPT)。许多不太知名的图形用户界面框架,如ZK,还使用视图定义的XML。而“随大流”并不一定是最好的政策,但他们有优势帮助从任何其他XML为中心的观点描述语言轻松进入ANDROID。好了,那么基于XML的布局是什么样子的下面是以前的章节的示例应用程序按钮,转换成一个XML布局文件,布局/NOWREDUX示例项目,在这一章中可以找到源代码的HTTP/APRESSCOM领域。部件,按钮的类名称形成XML元素的名称。因为按钮是ANDROID提供的部件,我们可以只使用裸类的名称。如果您创建自己的部件作为ANDROIDVIEWVIEW子小部件,您也将需要提供一个完整的包声明(如COMCOMMONSWAREANDROIDMYWIDGET)。根元素需要ANDROID的XML命名空间声明XMLNSANDROID“HTTP/SCHEMASANDROIDCOM/APK/RES/ANDROID“所有其他要素将成为子根并继承该命名空间的声明。因为我们要引用这个来自JAVA代码的按钮,我们需要通过ANDROID给它一个标识符ID属性。我们将在本章后面更详细的介绍这个概念。其余的属性是此按钮实例属性ANDROID文字表示的初始文本将显示在按钮(这种情况显示空字符串)ANDROIDLAYOUT_WIDTH和ANDROIDLAYOUT_HEIGHT命令ANDROID有按钮的宽度和高度填写“PARENT”,这种情况下,整个屏幕。将这些属性将在第7章中详解。由于这个单一部件是ACTIVITY的仅有内容,我们只需要这一个因素。复杂的用户界面将需要整个树的元素,代表工具和容器,控制自己的定位。所有的这本书余下的章节将使用XML布局,所以还有数十种更复杂的其他布局实例,请前进到第七章仔细阅读。符号有什么用途许多部件和容器只需要出现在XML布局文件,不须引用在JAVA代码。例如,一个静态标签(TEXTVIEW)只需要在布局文件中以表明它应该出现在那里。在XML文件中各种元素文件不需要有ANDROIDID属性给他们一个名称。任何你想要在JAVA资源中使用的东西,都需要一个ANDROIDID该公约是使用ID作为ID值,其中的代表你LOCALLYUNIQUE名称有问题的部件。在上一节的XML布局的例子中,ID是按钮控件的标识符。ANDROID提供了一些特殊的ANDROI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市综合体商业运营管理合同范本
- 2025年度主题式办公场所租赁合作协议
- 2025年现代化餐饮业员工综合素质培训及职业生涯规划合同
- 年度陕西西凤酒原产地保护与市场拓展合作框架合同
- 高端AI学术论文自动生成解决方案采购合同
- 2025年中小企业员工意外事故救助资金合同
- 2025年专业体育健身场馆使用权及服务合同
- 2025年度新能源车辆抵押权及租赁权一体化服务合同
- 2025年环保设备综合性能检测与提升质保服务协议
- 2025版美容顾问合作协议书
- 医院内部督查与监督制度
- 2024关于进一步提升基层应急管理能力的意见学习解读课件
- 浅谈幼小衔接的论文
- 2024小学数学义务教育新课程标准(2022版)必考题库附含答案
- WS 329-2024 麻醉记录单标准
- 2021年海南省社区网格员真题九十天冲刺打卡单选题+多选题+填空题+判断题+客观题A卷
- 电梯监督监督检验和定期检验规则(TSG T7001-2023)
- 不交养老保险劳务合同范本
- 智慧监狱智能化整体解决方案
- 初中语文现代文阅读训练及答案二十篇
- DZ/T 0462.1-2023 矿产资源“三率”指标要求 第1部分:煤(正式版)
评论
0/150
提交评论