第三章

3.1

TextView的赋值有很多方法,比如在layout里可以直接写字符串 android:text="字符串",或者引用string.xml里的值 android:text="@string/title".而代码中的赋值也可以引用R类,也可以直接写字符串等.

3.2

把颜色代码定义在资源文件中,标签名为:<drawable >,该资源文件应该放在values文件夹下面.引用的时候应该是@drawable/white

3.3

在代码里指定颜色可以使用Color.WHITE等静态常量.

3.4

定义在string.xml里的属性,在代码中可以通过getString(R.String.xx)来访问.其实最正规的写法是getResources().getString(id).同理,获得颜色,尺寸等都可以通过这种方式

3.5

取得屏幕真实的大小,可以通过getWindowManager().getDefaultDisplay().getHeight()

3.6

style的定义,style就是把view的属性集合抽离出来,放在一个地方,以便重复调用.另外style也适用于Activity的window.该style.xml也需要放在values文件夹里.同样的,使用<style>标签

3.7

button的onClickLinstener的写法.需要注意的是监听器里的onClikc方法的形参View v指的是来自父层的view.这里指的是button本身.

3.8

setContentView每次调用都会重新加载一次布局文件,可以通过这种方法在一个activity实现多个layout的切换(但不提倡,还是一个activity,一个layout比较好.)

3.9

调用另一个activity可以通过intent和startActivity(intent)方法.需要注意的是,如果之前的acitivy不需要用了,可以先finish掉.如果希望第二个acitivy finish的时候返回结果给第一个acitivy,应该调用startActivityForResult(intnent),然后重写第一个acitivty里的onAcitivityResult方法.用ResultCode和ResportCode的来明确到底是从哪个activity返回.返回给谁.

应用程序的入口acitivity需要在Manifest.xml里指定,设定入口的activity需要指定action为android.intent.action.MAIN,category指定为android.intent.category.LAUNCHER

3.10

不同activity的数据传递是通过intent携带的bundle来实现.而intent.put("",""),事实上也是put到intent携带的bundle里.也就是说,new一个新的intent的同时也会new 一个bundle

3.11

startActivityForResult的用法

3.12

AlertDialog用与警告,确认等提示框.注意对话框里按钮的监听器的写法.最后必须show(),不然无法实现.另外需要注意的是,当对话框弹出的时候,activity应该会进入onPause状态.

3.14

通过Typeface来设置字体,通过textView.setTypeface.注意系统提供了一些常用的常数名称.

3.15

Gallery的用法.这里的Adapter是继承自BaseAdapter的自定义Adapter.注意adapter需要重写getView方法,这里需要做很多的优化策略.必须熟练.

3.17

关于页面,这里是菜单按钮的用法.创建通过重写onCreateOptionsMenu方法.menu.add方法,注意,这里定义的itemtId会在onOptionsItemSelected方法里使用.在onOptionsItemSelected做按钮事件的触发

3.18

ProgressDialog的用法,类似于AlertDialog.Progress的样式应该可以修改,待验证.

3.20

具有选择功能的对话框.用new AlertDialog.Builder(context).setItems设置item的布局和监听器

string数组可以用R.array.id来使用,也是定义在string.xml里,使用<array>标签.

3.21

sytle用在activity的window.在代码里可以通过setTheme(R.style.Id),注意必须要在setContentView之前.另外也可以在配置文件里android:theme="".

3.22

在EditText里隐藏密码,布局里可以用android:password="true",而在代码里需要设置setTransformationMethod方法

3.23

多语系就是在文件夹名后面加-en,-jp等.若不加则指的是默认语言.

第四章

4.1

EditText里有onKeyListener监听器,但不是特别好用.有些键盘是无法触发监听的.另外注意,该view必须获得focus才可以触发.

4.2

通过定义selector资源文件,可以实时改变view不同状态下的图标等.需要在drawable文件夹下面创建xml文件,定义<seletor>下的<item>标签.使用的时候用"@drawable/id"..另外在代码里也可以setOnFocusLintener和setOnPressLintener监听器来改变状态.

4.3

Toast可以通过setView使用自定义view,也可以使用setGravity改变显示的位置

4.4

checkBox的setOnClickListener用法,其实这里最好用setOnCheckChangeListener.朱育button的enable属性.

4.6

单选用RadioGroup.在这里设置多个RadioButton.注意监听器是在RadioGroup上

4.7

spinner的用法,需要设定item的layout,以及下拉菜单的item的layout.当弹出下拉菜单的时候让spinner本身做淡出的动画,可以提高界面友好.

4.8

spinner的add和delete.这里的数据不能用数组,最好用list.通过adapter的add或者remove操作.

4.9

Gallery的用法.这里注意的是new的ImageView的时候要设置setScaleType(这有什么用??)

4.13

AutoCompleteTextView,这是一个有下拉提示的EditText,需要设置下拉提示item的layout,以及通过setAdapter添加数据

4.14

analogClock和DigitalClock的原理就是通过new新线程确定时间,然后通过handle更新界面.

4.15

DatePicker和TimePicker的用法DatePicker通过init设置初始值和onDateChangerdListener事件,而TimePicker直接用setOnTimeChangedListener来实现.

而DatePickerDialog和TimePickerDialog就是new 一个新的,需要设置初始化和onTimeSetListener事件

4.16

ImageView有setAlpha设置透明度,注意255为没透明.

4.17

ProgressBar和handler的互交.setIndeterminate的含义??

4.18

GridView就是九宫格,通过setNumColumns设置有多少列.需要setAdapter加载数据,跟listview一个,需要设置item的layout

4.19

当listview的item的layout传入Android.R.layout.simple_list_item_multiple_choice.然后listview setChoiceMode传入CHOICE_MODE_MULTIPLE,就可以做多选设置

4.20

listview通过setAdapter切换数据显示.注意ListActivity的布局中,还可以增加一个新的view,id为android:empty.当listview没数据的时候就会显示这个view

萨芬萨斯反对

dd

4.23

动态缩放imageview.可以用Matrix,通过Bitmap.createBitmap,用原bmp和matrix创建出一个新的bmp,这里用到matrix的postScale

d

4.24

动态选择imageview,通过matrix的postRotate

d RadioButton的用法,注意RadioButton的LayoutParams是在RadioGroup的LayoutParams

4.27

SlidingDrawer的用法

这里重要的是handroid:handler和android:content.前者是要展开的layout配置id,后者是内容的layoutid..这里比较麻烦的是关于android:orientation的设置

4.28

AppWidgetProvider的用法

首先先设置桌面这个layout,然后在xml文件夹下建一个xml作为AppWidget-provider的文件,指定前面的 layout.

在配置文件里设定meta-data

自定义一个AppwidgetProvider类,重写相关方法,注意,这也是一个广播接收器.也可以写onReceiver方法.如果重写必须先super.onReceiver.因为onUpdate等方法是通过onReceiver分发下来的.

layout里的数据赋值通过RemoteViews,并且监听器也是通过这个类,但这里的监听器是通过PendingIntent来做的.

4.29

调用系统的搜索框组件.

需要在配置文件里设置intent-filter,接收搜索框传来的搜索字符.mete-date里设置相应的xml布局

在xml文件夹下创建一个searchable标签的xml,指定一个属性,比如hint的内容等.

在代码里调用onSearchRequested()就会显示搜索框.当搜索结束以后,会根据intent-filter的设置,重新创建新的acactivity,在onCreate里接收数据,通过intent.getStringExtra(SearchManager.QUERY);

4.30

AppWidget里的监听,看4.28

第五章

5.1

具有正则表达式的EditText.在代码中使用Linkify对象,就可以动态的作出判断,点击以后会启动相应的Intent,比如输入的如果是电话号码,点击以后就会自动拨打该号码

在布局文件里使用 android:autoLink

5.2

如何通过intent调用拨打电话的功能

5.3

发短信通过SmsManager的sendTextMessage方法,需要输入收件人地址,发送地址,正文,发送完毕的PendingIntent,送到对方的PendingIntent.

5.5

对数据库的操作.需要通过一个自定义的SQLiteOpenHelper.实现相应的方法.

5.6

手机震动.Vibrator对象(也是一个系统服务),实现vibrate方法(repeat为0表示会一直持续,-1为只会出现一次).通过cancel方法取消震动.需要添加权限android.permission.VIBRATE.

5.8

状态栏的图标和文字提醒.先获得NotiManager对象,然后new一个新的notification,在其中加入PendingIntent,icon,title等.通过notiManager.notify方法启动这个notification.

5.9

AutoCompleteView和CursorAdapter的用法.先自定义CursorAdapter类.实现其中的方法.注意特别是runQueryOnBackgroudThread就是通过关键字获得相应的cursor

5.10

调用联系人目录,选择后返回给原Acitivty.这里要注意的是,每个联系人可以有多组电话号码,电话号码和联系人信息是放在两个表里.

5.11

打开文件,也是通过intent来实现.需要设置Uri(数据内容),type(类型,关联要用什么程序打开).注意需要addFlag(Intent.FLAG_ACTIVITY_NEW_TASK);

5.12

使用clearWallpaper可以还原系统桌面.需要添加权限 android.permission.SET_WALLPAPER

5.13

设置系统桌面用acitivty.setWallpaper(InputStream in)

5.14

获得系统桌面 getWallpaper();

5.15

删除文件用file.delete 重命名用file.renameTo(file)

5.16

取得路径,通过activity.getCacheDir,getFilesDir()

5.17

wifi相关api,通过WifiManager.getWifistate来判断目前状态.打开wifi用setWifiEnabled(true).注意的是,当前如果正在打开,或者正在关闭,不可调用打开关闭的方法,会出异常

5.18

通过telephonyManager取得sim的相关信息.但是要注意的是,电话号码很难获取,因为一般在sim卡号和手机号码的对应是在放电信中心,而不是把号码放在sim卡上

5.19

用android.intent.action.CALL]_BUTTON 启动拨打电话的界面(注意,不是直接拨打)

5.20

按键事件通过重写activity的onKeyDown方法.通过keyCode来判断.

5.21

通过ActivityManager的getRunningTasks方法获得木桩正在允许的task(也就是应用).通过getRunningService获得目前正在允许的服务

5.22

横竖屏的转换.通过getRequestedOrientation可以判断目前的屏幕.通过setRequestedOrientation(注意,必须要设置配置文件里的androidscreenOrientation属性才可以使用上面2个方法.)

5.23

当横竖屏转换的时候会触发onConfigurationChanged方法,但是必须要在配置文件里设置android:configChanges属性才可以触发上面这个方法.

5.24

取得电信网络和手机的相关信息,也是通过telephonyManager.

5.25

yonggestureOverlayView.getGesture获得手写的动作.通过通过GestureLibraries.fromFile加载,最后save到文件里.

第六章

6.1

接收短信 通过接收广播 android.provider.Telephony.SMS_RECEIVED

6.2

手机电池计量,通过获得广播android.intent.action/BATTERY_CHANGED.(需要注意的是,API提到,这个广播必须注册在配置文件里,而不能在代码里)

6.4

开启服务使用onBind或者onStart方法,关闭只用stopService方法就可以了.需要注意的是,在配置文件里可以添加android:exported=true允许外部应用程序调用这个服务

6.6

手机拨打状态,通过TelephonyManager.listen注册PhoneStateListener监听器

6.8

存储卡容量,statFs = new StafFs(path),statFs.getBlockSize(),getBlockCount,相乘就是总容量.getAvailableBlocks()已使用的block数量

6.10

闹钟.alarmManager通过set时间和PandingIntent使用.取消使用manager.cancel(PendingIntent),通过PendingIntent的resquestCode和resportCode来区分不同的闹钟.

6.12

手机翻盖静音通过SensorManager注册水平感光器的监听器.在监听器里判断坐标

6.15

因为service里的context跟activity的context不一定一样.所以,service想跟activity通过,必须借助broadcast.通过在service里sendBroadcast发送广播.

6.16

开机启动,通过接收广播android.intent.action.BOOT_COMPLETED

6.18

监控电池温度.通过温度的sensor.Sensor.TYPE_TEMPERATURE.也同样注册监听器.但是要注意,温度的变化指的是电池温度,而不是人体接触的温度,而且该变化缓慢,不容易测试.

6.19

电池电量的appwidget.每次启动一个电池电量的appwidget后,在onUpdate里就启动一次服务,在服务里获得SharedPreferences的值.同时用一个广播来监听电池变化而set sharedPreferences的值.

6.21

电子罗盘通过方向感光器判断X轴的坐标而判断方向.

第七章

7.1

取得图片资源的几种方法.Bitmap.create(...) BitmapFactory(files.kstreams.byte,resourceId)等

7.2

绘制view需要重写onDraw方法.canvas就是画布,是绘图的地基,paint是画笔.canvas.drawRect(paint)就可以绘制不同形状的内容.path是根据paint的移动来绘图.

同时还可以加上Shader产生渐变效果.比如LinearGradient等等.

7.4

手指移动照片.

7.7

ImageSwitcher可以动态的切换图片,其实也是ImageView封装后加了一层新的包装,同事可以设置InAnimation和outAnimation.需要注意的是,需要显示ViewFactory的makeView方法

7.8

调节音量大小.使用AudioManager.使用audioManager.adjustVolume方法

7.13

VidoeView的用法.事实上这是SurfaceView包装后的view,需要设置MediaController控制器来做暂停,播放,停止等操作.

7.14

用SurfaceView实现VideoView的功能.需要注意的是prepare()和release的用法和使用时机.

7.15

照相机和SurfaceView的结合使用,把照相机的内容通过Holder跟SurfaceView连接起来.

7.18

Text-to-Speech用法.tts的创建需要设置onInitListener监听器,用来初始化播放的语言类型.然后通过speak来发言.最后可以用shutdown方法来释放内存.

7.19

触摸移动照片,用在高分辨率的照片上.当屏幕无法显示完全部的内容的时候使用.事实上每次触摸后都是重新绘制bitmap.根据触摸移动后的位置来判断.

放大和缩小图片通过双击和单击监听器完成.需要重写onSingleTapConfirmed和onDoubleTapListener方法

7.20

多点触摸,事实上android支持最多3个的触摸.都是通过onTouchEvent方法来判断.使用event.getPointerCount来判断目前是几点触摸.

更多相关文章

  1. 【Android(安卓)Developers Training】 22. 与其他fragment通信
  2. android 源码 来电流程 详解
  3. Android(安卓)实现绚丽多彩的TextView
  4. Android(安卓)Application 和Webview 之间的交互
  5. Android解析json数据的几种方法
  6. android TextView设置中文字体加粗
  7. EventBus的简单用法及介绍
  8. windowIsTranslucent和windowBackground对比
  9. android 4.0 全屏 屏蔽下面的status bar

随机推荐

  1. EditText小总结
  2. android manifest.xml中元素含义android
  3. 【Android】Android(安卓)代码判断是否获
  4. 最新Android(安卓)ADT, SDK, SDK_tool等
  5. Android(安卓)PagerTabStrip和PagerTitle
  6. [Android]"@string/hello"和"你好"的区别
  7. Android(安卓)布局属性详解
  8. RelativeLayout 重要的属性
  9. Ubuntu android NDK 配置
  10. android 图片自动切换