Android学习要点.docx
《Android学习要点.docx》由会员分享,可在线阅读,更多相关《Android学习要点.docx(10页珍藏版)》请在冰豆网上搜索。
![Android学习要点.docx](https://file1.bdocx.com/fileroot1/2022-12/13/f0fdd146-b445-4394-a2b9-5154c4c1806c/f0fdd146-b445-4394-a2b9-5154c4c1806c1.gif)
Android学习要点
Android学习要点
Day03:
1、写出三种不同的布局LinearLayoutRelativeLayoutFrameLayout
二、写出线性布局方向属性和属性值android:
orientationhorizontalvertical三、写出相对布局的16个属性相对于兄弟控件位置:
layout_toLeftOflayout_toRightOflayout_abovelayout_below相对于兄弟控件对齐:
layout_alignLeftlayout_alignRightlayout_alignToplayout_alignBottomlayout_alignBaseline相对于父控件的位置:
layout_alignParentLeftlayout_alignParentRightlayout_alignParentToplayout_alignParentBottom相对于父控件对齐:
layout_centerInParentlayout_centerHorizontallayout_centerVertical四、列出常用的属性(字体大小,字体颜色、边距、对齐方式)textSizetextColorpaddinglayout_margingravitylayout_gravity
Day04:
一、写出常用的UI控件(至少6个)TextViewImageViewButtonRadioButtonCheckBoxEditTextRadioGroupImageButton二、写出三个不同UI控件事件监听器(接口)OnClickListenerOnCheckedChangeListener(CompoundButton/RadioGroup)OnItemSelectedListener三、写出ImageView的缩放类型的属性及其属性值(至少4个属性值)android:
scaleTypecentercenterCropcenterInsidefitCenterfitStartfitEndfitXY四、写出实现跑马灯的属性android:
singleLine=“true”android:
ellipsize=“marquee”android:
marqueeRepeatLimit=“marquee_forever”android:
focusable=“true”android:
focusableInTouchMode=“true”
Day05:
一、写出相对布局的16个属性二、写出Spinner的常用属性(至少4个)下拉模式:
android:
spinnerMode设置标题:
android:
prompt=“@string/title”设置数据源:
android:
entries=“@array/cityes”设置下拉背景:
android:
popupBackground=“#f00”三、描述Spinner与ArrrayAdapter之间的用法(需要写出ArrayAdapter的构造方法)1.Spinner是AdapterView的子类,因此需要ArrayAdapter显示数据2.Spinner.setAdapter(ArrayAdapter)设置Spinner的适配器对象3.ArrayAdatper(Contextcontext,intresid,Listdatas)ArrayAdapter(Contextcontext,intresid,T[]datas)四、写出AutoCompleteTextView的用法及文本改变事件监听器接口1.AutoCompleteTextView辅助用户快速输入内容2.AutoCompleteTextView辅助的信息是集合类型,因此需要一个ArrayAdapter3.AutoCompleteTextView.setAdapter(ArrayAdapter)4.AutoCompleteTextView.addTextChangedLinstener(TextWatcher)
Day06:
一、写出ImageView的ScaleType的属性值(至少需要5个)centerCropcenterInsidefitCenterfitStartfitEndfitXYcenter二、写出Activity之间的传值方式1.intent2.静态成员3.全局对象或方法4.startActivityForResult三、写出Spinner与ArrayAdapter的用法Spinner.setAdapter(ArrayAdapter)ArrayAdapter(Contextcontext,intresid,T[])或ArrayAdapter(Contextcontext,intresid,List)四、写出Activity的生命周期方法与相关说明1.onCreate()初始创建时调用,且只调用一次2.onStart()显示窗口3.onResume()获取焦点,与用户交互4.onPause()失去焦点,暂停与用户交互5.onStop()关闭窗口6.onRestart()重新显示窗口:
onStart()—>onResume()7.onDestory()销毁窗口对象五、写出ActivityA启动ActivityB的生命周期方法的调用顺序A:
onPause->B:
onCreate()->B:
onStart()->B:
onResume()->A:
onStop()六、写出当前Activity下按Home键的生命周期方法的调用顺序onPause()->onStop()
Day07:
一、写四种Activity运行模式和设置方法四种:
standardsingleTopsingleTasksingleInstance设置方法:
在清单配置文件(AndroidManifest.xml)的Activity标签中使用android:
launchMode属性设置二、RunningTaskInfo类的常用属性id,baseActivity,topActivity,numActivities三、写出Intent的七大属性ComponentNameActionCategoryDataTypeExtraFlag四、写出打电话的隐式意图Intentintent=newIntent(Intent.ACTION_CALL,Uri.parse(“tel:
10086”));startActivity(intent);
一、描述一下Android中使用线程的规则1.主线程(UI线程)不能被阻塞2.子线程(WorkThread)不能访问UI控件二、什么时候会发生ANR,ANR全称是什么是在主线程被阻塞5秒以上则会发生ANR,ApplicationnotResponding解决办法是在子线程中执行耗时操作三、写出AsyncTask的用法1.创建类,继承AsyncTask类,并指定三个泛型2.重写doInBackground()方法,在此方法中处理网络或耗时操作3.重写onPostExecute()处理后台线程返回结果4.重写onPreExecute()和onProgressUpdate()实现后台处理进度信息5.在UI线程中实现自定义的AsyncTask的子类,并调用其的execute()方法执行网络请求四、如何取消AsyncTask1.通过自定义的AsyncTask的子类对象,调用其的cancel(true)取消任务2.在AsyncTask子类的doInBackground()方法中,通过isCancelled()判断当前任务是否被取消
Day09:
一、写出AsyncTask的三种泛型的作用1.Params:
请求处理的类型(Url和String)2.Progress:
后台处理的进度(Integer)3.Result:
后台处理的结果类型(Bitmap,List)二、如何修改ProgressBar的样式android:
attr?
ProgressBarStyleHorizontal”>三、写出ListView的常用属性android:
divider设置分隔线的样式android:
dividerHeight:
设置分隔线的高度android:
entries设置列表的数据源四、写出BaseAdapter的四个抽象方法publicintgetCount();publicObjectgetItem(intposition)publiclonggetItemId(intposition)publicViewgetView(intposition,ViewconvertView,ViewGroupparent);
Day12:
1、写出三种不同的菜单的创建方式和点击菜单项的事件处理1.OptionsMenu在Activity中重写onCreateOptionsMenu()重写onOptionsItemSelected()2.ContextMenu重写onCreateContextMenu()重写onContextItemSelected()3.PopupMenupopupMenu=newPoppuMenu(Context,View);popupMenu.setOnMenuItemClickListener(OnMenuItemClickListener)//设置菜单项点击事件二、写出AlertDialog简单用法AlertDialog.Builderbuilder=newAlertDialog.Builder(Context);builder.setTitle(String).setIcon(intres).setMessage(String).setPositiveButton(String,DialogInterface.OnClickListener).create().show();三、写出一个通知的普通用法(构造通知和发送通知)1.NotificationCompat.Builderbuilder=newNotificationCompat.Builder(Context);builder.setSmallIcon(intresId).setContentTitle(String).setContentText(String).setContentIntent(PendingIntent);2.NotificationManagernotifyManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);notifyManager.notify(1,builder.build())
Day13:
1、写出Fragment11个生命周期方法onAttach()onCreate()onCreateView()onActivityCreated()onStart()onResume()onPause()onStop()onDestroyView()onDestroy()onDetach()二、写出Fragment传值方式Bundle方式:
FragmentTransaction.setArguments(Bundle)Activity方式:
在Activity中声明public方法,在Fragment中通过getActivity()获取Fragment所在的Activity对象,并执行其中public方法三、如何动态增加Fragment到指定的布局中(id:
contentId)FragmentManagermanager=getFragmentManager();FragmentTransactiontrans=manager.beginTransaction();trans.replace(contentId,newCustomFragment());
mit()
Day14:
1、写出四种数据存储方式SharedPreferences共享参数内部存储扩展存储网络存储
二、如何判断SDCard是否可用,如何获取SDCard的根目录1.StringsdcardState=Environment.getExternalStorageState();if(sdCardSate.equals(Environment.MEDIA_MOUNTED){//可用}2.Stringpath=Environment.getExteralStorageDirectory().getAbsolutePath()三、写出内部存储的读写方法1.读FileInputStreamfis=openFileInput(String)2.写FileOutputStreamfos=openFileOutput(String,intmode),Context.MODE_PRIVATE四、写出共享参数的简单使用的代码(读与写)1.读SharedPreferencespres=getSharedPreferences();Stringkey=pres.getString(“key”);2.写SharedPreferencespres=getSharedPreferences();SharedPreferecces.Editoreditor=pres.edit();editor.putString(“key”,”Value”);mit();五、写出上传文件核心代码(Android端)MultipartEntitymultipartEntity=newMultipartEntity();FileBodyfile=newFileBody(newFile(filePath));FormBodyPartformPart=newFormBodyPart(“form”,file);multipartEntity.addPart(formPart);HttpClientclient=newHttpClient();HttpPostpost=newHttpPost(url);post.setEntity(multipartEntity);
Day15:
一、写出SimpleAdapter的构造方法SimpleAdapter(Context,List>>,intresId,String[],int[])二、写出SimpleCursorAdapter的构造方法SimpleCursorAdapter(Context,intresId,Cursor,String[],int[],intflags)flag—>CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVERCursorAdatper.FLAG_AUTO_REQUERY三、写出数据库操作的相关类(到少3个)SQLiteDatabaseSQLiteOpenHelperCursorContentValues四、写出内部存储的数据库的位置/data/data/{packName}/databases/*.db
day16:
1、写出AsyncTask使用步骤1.创建类,继承AsyncTask,并指定三个泛型2.重写四个方法onPreExecute()ResultdoInBackground(Params…params)[必须实现]onPostExecute(Resultresult)[必须重写]onProgressUpdate(Progress…progress)3.在UI线程中实例化异步任务类,并执行execute(Params…)二、写出BaseAdapter的四个抽象方法intgetCount()ObjectgetItem(intposition)longgetItemId(intposition)ViewgetView(intposition,ViewconvertView,ViewGroupparent)三、写出SQLiteOpenHelper的用法(两种打开数据库的方式)1.创建类,继承SQLiteOpenHelper2.重写二个方法,并增加带Context参数的构造方法1).onCreate()2).onUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)
3.实例化SQLiteOpenHelper子类的对象->dbHelper1).dbHelper.getReadableDatabase()只读方式2).dbHelper.getWritableDatabase()读写方式
Day17:
1、写出Fragment的11个生命周期方法1)onAttach(Activity)onCreate(Bundle)onCreateView(LayoutInflater,ViewGroupcontainer,Bundle)onActvityCreated(Bundle)2)onStart()onResume()onPause()onStop()3)onDestoryView()onDestory()onDettach()二、解析以下的Json内容:
(至少2种方式)[{age:
10,name:
”s1”},{age:
15,name:
”s2”,sex:
”男”},{name:
”s3”,sex:
”女”}]1.StringjsonStr=“[{age:
10,name:
”s1”},{age:
15,name:
”s2”,sex:
”男”},{name:
”s3”,sex:
”女”}]”JSONArrayarray=newJSONArrray(jsonStr);for(inti=0;iStudent2.Listlist=JSON.parseArray(jsonStr,Student.class);3.GOSN方式1)创建Student类2)创建TypeTokentypeToken=newTypeToken>(){};3)创建Gson对象:
Gsongson=newGson();Listlists=gson.fromJSON(jsonStr,typeToken.getType());三、写出ContentProvider的使用步骤(涉及到提供方和使用方及相关的方法)1.提供方(ContentProvider端)1)创建SQLiteOpenHelper的子类,并实现两个方法,用于对本应用下的数据库操作的onCreate()onupgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)2)创建ContentProvider的子类,并实现6个方法,主要提供给ContentResolver端使用的booleanonCreate()query(Uriuri,String[]projections,Stringwhere,String[]whereArgs,StringsortOrder)insert(Uriuri,StringnullColum,ContentValuesvalues)update(Uriuri,ContentValuesvalues,Stringwhere,String[]whereArgs)delete(Uriuri,Stringwhere,String[]whereArgs)StringgetType(Uriuri)3)在ContentProvider子类中增加Authority和相应请求的Code4)根据请求的Code增加Uri到UriMatcher中UriMatchermatcher=newUriMatcher(UriMatcher.NO_MATCH)matcher.addUri(StringAuthority,Stringpath,intcode)5)在相应的方法中通过UriMatcher对象,匹配当前请求的Uri是哪种Code,根据不同的code来处理不同表的事务6)在AndroidManifest.xml清单配置文件增加访问当前ContentProvider的权限,并注册ContentProvidername=“{Authority}.READ_WRITE”/>..name=“CotentProvider子类的完整类路径”android:
authorites=“{Authority}”android:
permission=“{Authority}.READ_WRITE”android:
exported=“true”/>2.使用方1).在AndroidManifest.xml清单配置文件使用提供方声明的权限name=“{Authority}.READ_WRITE”/>2)通过getContentResolver()获取到ContentResolver对象,并执行相应的数据处理事务注意:
.需要正确使用Uri数据访问接口和访问字段
Day18:
1、写出SimpleCursorAdapter的构造方法SimpleCursorAdapter(Context,intresId,Cursor,String[]from,int[]to,intflag)flag->CursorAdapter.FLAG_REISTER_CONTENT_OBSERVER二、写出启动Loader的步骤1.当前的Activity或Fragment实现LoaderCallbacs接口,并实现其三个方法LoaderonCreateLoader(intloaderId,Bundleargs)onLoadFinished(Loaderloader,Cursordata)onLoaderReset(Lo