Android 学习笔记 34
回顾
1. 加载模式
standard
singleTop
singleTask
singleInstance
onNewIntent()
SingleTon
单实例设计模式
全局只有一个实例
1. 构造方法私有
2. 类内部创建实例
3. static方法获取实例
饱汉: 成员变量初始化
饿汉: (延迟加载)第一次使用的时候初始化
Lazy Loading
ListView
不要重复发明轮子
复用 消除重复
延迟加载
2. 自定义OptionsMenu
详细分析被替换对象的特征
显示:Menu
隐藏:1. 再按Menu
2. Back
3. other
4. MenuItem
5. onPause()
3. 布局的标签和优化
include
merge
requestFocus
viewstub
定制ProgressBar
1. 无尽
实现方法:
android:indeterminateDrawable="@drawable/progressbaranim"
1. 查找style的定义
sdk\platforms\android-10\data\res
\values\attrs.xml styles.xml
关键字:progressbar
找到决定UI显示的属性
<item name="android:indeterminateDrawable">
@android:drawable/progress_medium_white</item>
产品经理 用户交互设计师 研发
3. 有序广播
垃圾短信过滤
系统短信广播ACTION:
android.provider.Telephony.
SMS_RECEIVED
声明权限:android.permission.RECEIVE_SMS
指定广播接收者的优先级
<intent-filter android:priority="">
priority:值的范围:-1000~1000
发送有序广播:
sendOrderedBroadcast
中止有序广播
abortBroadcast();
IP拨号
获取数据:getResultData()
修改数据:setResultData(telnumber);
权限:
android.permission.PROCESS_OUTGOING_CALLS
Action:
android.intent.action.
NEW_OUTGOING_CALL
4. WebView
是什么:是一个UI组件,是显示Html的组件,
使用了一个Html和js语法解析引擎
Webkit是一个开源的html、js解析引擎
iOS safari
搜狗
好处:Android UI-> Htm
以用户体验品质为代价换时间
HTML5 native app
以web技术为基础跨移动平台的开发框架
phonegap
reexxx
如何使用:
1. 布局中添加Webview
mWebView.loadUrl("http://www.baidu.com/");
2. 点击链接时不启动系统浏览器
mWebView.setWebViewClient(new WebViewClient());
3. 浏览本地html文件
mWebView.loadUrl(
"file:///android_asset/android.html");
4. 进度刷新
mWebView.setWebChromeClient(new WebChromeClient()
{
@Override
public void onProgressChanged(WebView view, int newProgress) {
mProgressBar.setProgress(newProgress);
}
});
5. LocalView和WebView数据交互
Local -> WebView
WebView -> Local
6. 获得焦点
mWebView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mWebView.requestFocus();
return false;
}
});
5. 横纵屏
横纵屏切换:
当前的Activity的成员变量的数据可能丢失
UI界面的数据不会丢失
与UI无关的状态,需要持久化
onStop() 存储
onStart() 恢复
处理屏幕改变
1. manifest指定方向
android:screenOrientation="portrait"
2. manifest指定配置改变
android:configChanges="orientation|keyboardHidden"
3. 覆写Activity中的onConfigurationChanged()
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
}