1、Android学习要点Android学习要点Day03:1、写出三种不同的布局 LinearLayout RelativeLayout FrameLayout二、写出线性布局方向属性和属性值 android:orientation horizontal vertical三、写出相对布局的16个属性 相对于兄弟控件位置: layout_toLeftOf layout_toRightOf layout_above layout_below 相对于兄弟控件对齐:layout_alignLeft layout_alignRight layout_alignTop layout_alignBottom
2、layout_alignBaseline 相对于父控件的位置: layout_alignParentLeft layout_alignParentRight layout_alignParentTop layout_alignParentBottom 相对于父控件对齐:layout_centerInParent layout_centerHorizontal layout_centerVertical四、列出常用的属性(字体大小,字体颜色、边距、对齐方式) textSize textColor padding layout_margin gravity layout_gravityDay04:
3、一、写出常用的UI控件(至少6个) TextView ImageView Button RadioButton CheckBox EditText RadioGroup ImageButton二、写出三个不同UI控件事件监听器(接口)OnClickListenerOnCheckedChangeListener(CompoundButton/RadioGroup)OnItemSelectedListener三、 写出ImageView的缩放类型的属性及其属性值(至少4个属性值)android:scaleType center centerCrop centerInside fitCenter f
4、itStart fitEnd fitXY四、写出实现跑马灯的属性 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” 设置数据源
5、: android:entries=“array/cityes” 设置下拉背景:android:popupBackground=“#f00” 三、 描述Spinner与ArrrayAdapter之间的用法(需要写出ArrayAdapter的构造方法) 1. Spinner是AdapterView的子类,因此需要ArrayAdapter显示数据 2. Spinner.setAdapter(ArrayAdapter) 设置Spinner的适配器对象 3. ArrayAdatper(Context context,int resid,List datas) ArrayAdapter(Context
6、context, int resid,T datas)四、写出AutoCompleteTextView的用法及文本改变事件监听器接口 1. AutoCompleteTextView 辅助用户快速输入内容 2. AutoCompleteTextView辅助的信息是集合类型,因此需要一个ArrayAdapter 3. AutoCompleteTextView.setAdapter(ArrayAdapter) 4. AutoCompleteTextView.addTextChangedLinstener(TextWatcher) Day06:一、 写出ImageView 的ScaleType的属性值
7、(至少需要5个) centerCrop centerInside fitCenter fitStart fitEnd fitXY center二、写出Activity之间的传值方式 1. intent 2. 静态成员 3. 全局对象或方法 4. startActivityForResult三、写出Spinner与ArrayAdapter的用法 Spinner.setAdapter(ArrayAdapter) ArrayAdapter(Context context, int resid,T) 或 ArrayAdapter(Context context, int resid,List)四、写出
8、Activity的生命周期方法与相关说明 1. onCreate() 初始创建时调用,且只调用一次 2. onStart() 显示窗口 3. onResume() 获取焦点,与用户交互 4. onPause() 失去焦点,暂停与用户交互 5. onStop() 关闭窗口 6. onRestart() 重新显示窗口: onStart()onResume() 7. onDestory() 销毁窗口对象五、写出Activity A 启动Activity的生命周期方法的调用顺序 :onPause - B: onCreate() - B:onStart() -B: onResume() -A: onSt
9、op()六、写出当前Activity下按Home键的生命周期方法的调用顺序 onPause() - onStop()Day07:一、 写四种Activity运行模式和设置方法 四种: standard singleTop singleTask singleInstance 设置方法: 在清单配置文件(AndroidManifest.xml) 的Activity标签中使用 android:launchMode属性设置二、 RunningTaskInfo类的常用属性 id,baseActivity, topActivity, numActivities三、写出Intent的七大属性 Compone
10、ntName Action Category Data Type Extra Flag四、写出打电话的隐式意图 Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse(“tel:10086”); startActivity(intent); 一、描述一下Android中使用线程的规则 1. 主线程(UI线程)不能被阻塞 2. 子线程(WorkThread)不能访问UI控件 二、什么时候会发生ANR,ANR全称是什么 是在主线程被阻塞5秒以上则会发生ANR , Application not Responding 解决办法是在子线程中执行耗时操
11、作 三、写出AsyncTask的用法 1. 创建类,继承AsyncTask类,并指定三个泛型 2. 重写doInBackground()方法,在此方法中处理网络或耗时操作 3. 重写onPostExecute()处理后台线程返回结果 4. 重写onPreExecute()和onProgressUpdate()实现后台处理进度信息 5. 在UI线程中实现自定义的AsyncTask的子类,并调用其的execute()方法执行网络请求 四、如何取消AsyncTask 1. 通过自定义的AsyncTask的子类对象,调用其的cancel(true)取消任务 2. 在AsyncTask子类的doInBa
12、ckground()方法中,通过isCancelled()判断当前任务是否被取消Day09:一、 写出AsyncTask的三种泛型的作用 1. Params : 请求处理的类型(Url 和String) 2. Progress : 后台处理的进度(Integer) 3. Result : 后台处理的结果类型(Bitmap ,List)二、如何修改ProgressBar的样式 三、写出ListView的常用属性 android:divider 设置分隔线的样式 android:dividerHeight :设置分隔线的高度 android:entries 设置列表的数据源四、写出BaseAdap
13、ter的四个抽象方法 public int getCount(); public Object getItem(int position) public long getItemId(int position) public View getView(int position,View convertView,ViewGroup parent); Day12:1、 写出三种不同的菜单的创建方式和点击菜单项的事件处理 1. OptionsMenu 在Activity中重写onCreateOptionsMenu() 重写 onOptionsItemSelected() 2. ContextMenu
14、 重写onCreateContextMenu() 重写onContextItemSelected() 3. PopupMenu popupMenu= new PoppuMenu(Context,View); popupMenu.setOnMenuItemClickListener(OnMenuItemClickListener) /设置菜单项点击事件 二、写出AlertDialog简单用法 AlertDialog.Builder builder=new AlertDialog.Builder(Context); builder.setTitle(String) .setIcon(int res
15、) .setMessage(String) .setPositiveButton(String,DialogInterface.OnClickListener) .create().show();三、写出一个通知的普通用法(构造通知和发送通知) 1. NotificationCompat.Builder builder=new NotificationCompat.Builder(Context); builder.setSmallIcon(int resId) .setContentTitle(String) .setContentText(String) .setContentIntent
16、(PendingIntent); 2.NotificationManager notifyManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notifyManager.notify(1,builder.build()Day13:1、 写出Fragment11个生命周期方法 onAttach() onCreate() onCreateView() onActivityCreated() onStart() onResume() onPause() onStop() onDestroyView(
17、) onDestroy() onDetach()二、写出Fragment传值方式 Bundle 方式: FragmentTransaction.setArguments(Bundle) Activity方式: 在Activity中声明public 方法,在Fragment中通过getActivity()获取Fragment所在的Activity对象,并执行其中public方法三、 如何动态增加Fragment到指定的布局中(id: contentId) FragmentManager manager=getFragmentManager(); FragmentTransaction trans
18、=manager.beginTransaction(); trans.replace(contentId, new CustomFragment(); mit()Day14:1、写出四种数据存储方式 SharedPreferences 共享参数 内部存储 扩展存储 网络存储二、如何判断SDCard是否可用,如何获取SDCard的根目录 1. String sdcardState=Environment.getExternalStorageState(); if(sdCardSate.equals(Environment.MEDIA_MOUNTED) /可用 2. String path=Env
19、ironment.getExteralStorageDirectory().getAbsolutePath()三、写出内部存储的读写方法 1. 读 FileInputStream fis=openFileInput(String) 2. 写 FileOutputStream fos=openFileOutput(String,int mode),Context.MODE_PRIVATE四、写出共享参数的简单使用的代码(读与写) 1. 读 SharedPreferences pres=getSharedPreferences(); String key= pres.getString(“key”
20、); 2. 写 SharedPreferences pres=getSharedPreferences(); SharedPreferecces.Editor editor=pres.edit(); editor.putString(“key”,”Value”); mit();五、写出上传文件核心代码(Android端) MultipartEntity multipartEntity=new MultipartEntity(); FileBody file=new FileBody(new File(filePath); FormBodyPart formPart=new FormBodyPa
21、rt(“form”,file); multipartEntity.addPart(formPart); HttpClient client=new HttpClient(); HttpPost post=new HttpPost(url); post.setEntity(multipartEntity);Day15:一、写出SimpleAdapter的构造方法 SimpleAdapter(Context,ListHashMap,int resId,String,int)二、写出SimpleCursorAdapter的构造方法 SimpleCursorAdapter(Context,int re
22、sId,Cursor,String,int,int flags) flag CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER CursorAdatper.FLAG_AUTO_REQUERY三、写出数据库操作的相关类(到少3个) SQLiteDatabase SQLiteOpenHelper Cursor ContentValues四、写出内部存储的数据库的位置 /data/data/packName/databases/*.dbday16:1、写出AsyncTask使用步骤 1. 创建类,继承AsyncTask,并指定三个泛型 2. 重写四个方法 onP
23、reExecute() Result doInBackground(Params params ) 必须实现 onPostExecute(Result result) 必须重写 onProgressUpdate(Progress progress) 3. 在UI线程中实例化异步任务类,并执行execute(Params )二、写出BaseAdapter的四个抽象方法 int getCount() Object getItem(int position) long getItemId(int position) View getView(int position,View convertView
24、,ViewGroup parent)三、写出SQLiteOpenHelper的用法(两种打开数据库的方式) 1. 创建类,继承SQLiteOpenHelper 2. 重写二个方法,并增加带Context参数的构造方法 1). onCreate() 2). onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) 3. 实例化SQLiteOpenHelper子类的对象-dbHelper 1). dbHelper.getReadableDatabase() 只读方式 2). dbHelper.getWritableDatabase() 读
25、写方式Day17:1、写出Fragment的11个生命周期方法 1) onAttach(Activity) onCreate(Bundle) onCreateView(LayoutInflater,ViewGroup container,Bundle) onActvityCreated(Bundle) 2) onStart() onResume() onPause() onStop() 3) onDestoryView() onDestory() onDettach() 二、解析以下的Json内容:(至少2种方式) age:10,name:”s1”,age:15,name:”s2”,sex:”
26、男”,name:”s3”,sex:”女” 1. String jsonStr=“ age:10,name:”s1”,age:15,name:”s2”,sex:”男”,name:”s3”,sex:”女” JSONArray array=new JSONArrray(jsonStr); for(int i=0;iStudent 2. List list=JSON.parseArray(jsonStr,Student.class); 3. GOSN方式 1)创建Student类 2) 创建TypeTokenLIst typeToken=new TypeTokenList(); 3) 创建Gson对象
27、: Gson gson=new Gson(); List lists=gson.fromJSON(jsonStr,typeToken.getType(); 三、写出ContentProvider的使用步骤(涉及到提供方和使用方及相关的方法) 1. 提供方(ContentProvider端) 1) 创建SQLiteOpenHelper的子类,并实现两个方法,用于对本应用下的数据库操作的 onCreate() onupgrade(SQLiteDatabase db,int oldVersion,int newVersion) 2) 创建ContentProvider的子类,并实现6个方法,主要提供
28、给ContentResolver端使用的 boolean onCreate() query(Uri uri,String projections,String where,String whereArgs,String sortOrder) insert(Uri uri,String nullColum,ContentValues values) update(Uri uri,ContentValues values,String where,String whereArgs) delete(Uri uri, String where,String whereArgs) String getT
29、ype(Uri uri) 3) 在ContentProvider子类中增加Authority和相应请求的Code 4) 根据请求的Code增加Uri到UriMatcher中 UriMatcher matcher=new UriMatcher(UriMatcher.NO_MATCH) matcher.addUri(String Authority,String path,int code) 5) 在相应的方法中通过UriMatcher对象,匹配当前请求的Uri是哪种Code,根据不同的code来处理不同表的事务 6) 在AndroidManifest.xml清单配置文件增加访问当前Content
30、Provider的权限,并注册ContentProvider . 2. 使用方 1). 在 AndroidManifest.xml清单配置文件使用提供方声明的权限 2) 通过getContentResolver()获取到ContentResolver对象,并执行相应的数据处理事务 注意:.需要正确使用Uri数据访问接口和访问字段Day18:1、写出SimpleCursorAdapter的构造方法 SimpleCursorAdapter(Context ,int resId,Cursor ,String from,int to,int flag) flag- CursorAdapter.FLAG_REISTER_CONTENT_OBSERVER二、写出启动Loader的步骤 1. 当前的Activity或Fragment实现LoaderCallbacs接口,并实现其三个方法 Loader onCreateLoader(int loaderId,Bundle args) onLoadFinished(Loader loader,Cursor data) onLoaderReset(Lo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1