android综合
- 博客分类:
- android
1 ,手动设置横竖屏
TestAndroidActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //设置为置屏幕为竖屏
TestAndroidActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
<activity android:configChanges="orientation|keyboardHidden"
2 动态更改字符串
<string name="shortcut_installed" msgid="7071557296331322355">"已创建“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
java代码 String name ="demo";
String string=context.getString(R.string.shortcut_duplicate, name)
string== 已创建demo快捷方式
3. 设置和取消全屏
public void setFullScreen(){
WindowManager.LayoutParams attrs = mWindow.getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
mWindow.setAttributes(attrs);
mWindow.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
public void setScreenNoLimit(){
WindowManager.LayoutParams attrs = mWindow.getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
mWindow.setAttributes(attrs);
//取消全屏设置
mWindow.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
4. android 数据库事务处理
mDatabase.beginTransaction();
try{
//在这里执行多个数据库操作
//执行过程中可能会抛出异常
mDatabase.setTransactionSuccessful();
//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作
}catch(Exception e){
//当数据库操作出现错误时,需要捕获异常,结束事务
mDatabase.endTransaction();
throw e;
}
//当所有操作执行完成后结束一个事务
mDatabase.endTransaction();
备注:当endTransaction()时,会根据是否setTransactionSuccessful()提交数据或者回滚。
}
5 设置壁纸显示的主题
用<style name="Theme" parent="@android:style/Theme.Holo.Wallpaper.NoTitleBar">这个就可以显示
也可以修改其他主题:
<style name="Theme" parent="@android:style/Theme.Holo.Light.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowShowWallpaper">true</item>
</style>
6.andorid 4.0后设置屏幕强制横竖屏
在AndroidManifest.xml中的Activity加入以下属性:
android:configChanges="orientation|screenSize"
java源码:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onConfigurationChanged(newConfig);
}
7. <category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" /> 上述同时出现,按home键可出现类似多桌面打开应用的选择框,
<category android:name="android.intent.category.LAUNCHER" /> 觉得是否在桌面生成快捷方式
8.监听开关屏幕
(1):注册监听 @Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
// Listen for broadcasts related to user-presence
final IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
registerReceiver(mReceiver, filter);
}
(2): private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
/////屏幕关闭 后要处理的逻辑
} else if (Intent.ACTION_USER_PRESENT.equals(action)) {
//打开
}
}
};
(3):取消监听 @Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
unregisterReceiver(mReceiver);
}
9.后退键盘 : @Override
public void onBackPressed() {}
10 广播接收者
内部类的接收者好像不能在manifest里边静态注册,还是在代码动态注册吧
11. 更新widget的UI,AppWidgetManager对象调用updateAppWidget(),但是不可频繁调用,而且最好在定时器或线程,否则可能导致桌面卡死
12 Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
(1)在工程下新建lib文件夹,将需要的第三方包拷贝进来。
(2)将引用的第三方包,添加进工作的build path。
(3)(关键的一步)将lib设为源文件夹。
在/libs 文件夹上右键--Build Path--Use as Source Folder
如果不设置,则程序编译可以通过,但运行的时候,会报:
java.lang.NoClassDefFoundError
若出现如下问题取消之后再重新编译。。。
13.监听数据库变化(未接电话)
注册监听
ContentResolver resolver = getContentResolver();
// Register for changes to the call info
resolver.registerContentObserver(Calls.CONTENT_URI, true,mCallInfoObserver);
覆写监听数据库改变
private final ContentObserver mCallInfoObserver = new ContentObserver(new Handler()) {
public void onChange(boolean selfChange) {
//Log.i("hhl", "==LauncherApplications.java==mCallInfoObserver==");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.setComponent(sCallComponentName);// public static final ComponentName sCallComponentName = new ComponentName("com.android.contacts","com.android.contacts.activities.DialtactsActivity");
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
mModel.shenduUpdateAppMarkFromRegister(CALL_MARK,intent);
}
};
14 用法<activity android:clearTaskOnLanunch=”true/false”></activity>
假设,某人从主画面启动了Activity P,并从那里迁移至Activity Q。接下来用户按下HOME,然后返回Activity P。一般,用户可能见到的是Activity Q,因为它是P的Task中最后工作的内容。然而,如果P设定这个特性为“true”,当用户按下HOME并使这个Task再次进入前台时,其上的所有的 Activity(在这里是Q)都将被清除。因此,当返回到这个Task时,用户只能看到P。
但是当P.startActivity(Q)才有效, P.startActivityForResult(Q)时无效
15.控件getHeight和getWidth等于0的解决办法,在onCreat()方法里边写就行
//-----------------------------------------------方法三
ViewTreeObserver vto2 = imageView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());
}
});
16.获取所有的应用(带启动项的LAUNCHER)
final PackageManager packageManager = getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// get all apps
final List<ResolveInfo> apps = packageManager.queryIntentActivities(
mainIntent, 0);
17.开机自启动
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
获取开机启动动作的权限permission
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>"
TestAndroidActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //设置为置屏幕为竖屏
TestAndroidActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
<activity android:configChanges="orientation|keyboardHidden"
2 动态更改字符串
<string name="shortcut_installed" msgid="7071557296331322355">"已创建“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
java代码 String name ="demo";
String string=context.getString(R.string.shortcut_duplicate, name)
string== 已创建demo快捷方式
3. 设置和取消全屏
public void setFullScreen(){
WindowManager.LayoutParams attrs = mWindow.getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
mWindow.setAttributes(attrs);
mWindow.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
public void setScreenNoLimit(){
WindowManager.LayoutParams attrs = mWindow.getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
mWindow.setAttributes(attrs);
//取消全屏设置
mWindow.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
4. android 数据库事务处理
mDatabase.beginTransaction();
try{
//在这里执行多个数据库操作
//执行过程中可能会抛出异常
mDatabase.setTransactionSuccessful();
//在setTransactionSuccessful和endTransaction之间不进行任何数据库操作
}catch(Exception e){
//当数据库操作出现错误时,需要捕获异常,结束事务
mDatabase.endTransaction();
throw e;
}
//当所有操作执行完成后结束一个事务
mDatabase.endTransaction();
备注:当endTransaction()时,会根据是否setTransactionSuccessful()提交数据或者回滚。
}
5 设置壁纸显示的主题
用<style name="Theme" parent="@android:style/Theme.Holo.Wallpaper.NoTitleBar">这个就可以显示
也可以修改其他主题:
<style name="Theme" parent="@android:style/Theme.Holo.Light.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowShowWallpaper">true</item>
</style>
6.andorid 4.0后设置屏幕强制横竖屏
在AndroidManifest.xml中的Activity加入以下属性:
android:configChanges="orientation|screenSize"
java源码:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
super.onConfigurationChanged(newConfig);
}
7. <category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" /> 上述同时出现,按home键可出现类似多桌面打开应用的选择框,
<category android:name="android.intent.category.LAUNCHER" /> 觉得是否在桌面生成快捷方式
8.监听开关屏幕
(1):注册监听 @Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
// Listen for broadcasts related to user-presence
final IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
registerReceiver(mReceiver, filter);
}
(2): private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (Intent.ACTION_SCREEN_OFF.equals(action)) {
/////屏幕关闭 后要处理的逻辑
} else if (Intent.ACTION_USER_PRESENT.equals(action)) {
//打开
}
}
};
(3):取消监听 @Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
unregisterReceiver(mReceiver);
}
9.后退键盘 : @Override
public void onBackPressed() {}
10 广播接收者
内部类的接收者好像不能在manifest里边静态注册,还是在代码动态注册吧
11. 更新widget的UI,AppWidgetManager对象调用updateAppWidget(),但是不可频繁调用,而且最好在定时器或线程,否则可能导致桌面卡死
12 Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
(1)在工程下新建lib文件夹,将需要的第三方包拷贝进来。
(2)将引用的第三方包,添加进工作的build path。
(3)(关键的一步)将lib设为源文件夹。
在/libs 文件夹上右键--Build Path--Use as Source Folder
如果不设置,则程序编译可以通过,但运行的时候,会报:
java.lang.NoClassDefFoundError
若出现如下问题取消之后再重新编译。。。
13.监听数据库变化(未接电话)
注册监听
ContentResolver resolver = getContentResolver();
// Register for changes to the call info
resolver.registerContentObserver(Calls.CONTENT_URI, true,mCallInfoObserver);
覆写监听数据库改变
private final ContentObserver mCallInfoObserver = new ContentObserver(new Handler()) {
public void onChange(boolean selfChange) {
//Log.i("hhl", "==LauncherApplications.java==mCallInfoObserver==");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.setComponent(sCallComponentName);// public static final ComponentName sCallComponentName = new ComponentName("com.android.contacts","com.android.contacts.activities.DialtactsActivity");
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
mModel.shenduUpdateAppMarkFromRegister(CALL_MARK,intent);
}
};
14 用法<activity android:clearTaskOnLanunch=”true/false”></activity>
假设,某人从主画面启动了Activity P,并从那里迁移至Activity Q。接下来用户按下HOME,然后返回Activity P。一般,用户可能见到的是Activity Q,因为它是P的Task中最后工作的内容。然而,如果P设定这个特性为“true”,当用户按下HOME并使这个Task再次进入前台时,其上的所有的 Activity(在这里是Q)都将被清除。因此,当返回到这个Task时,用户只能看到P。
但是当P.startActivity(Q)才有效, P.startActivityForResult(Q)时无效
15.控件getHeight和getWidth等于0的解决办法,在onCreat()方法里边写就行
//-----------------------------------------------方法三
ViewTreeObserver vto2 = imageView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());
}
});
16.获取所有的应用(带启动项的LAUNCHER)
final PackageManager packageManager = getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// get all apps
final List<ResolveInfo> apps = packageManager.queryIntentActivities(
mainIntent, 0);
17.开机自启动
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
获取开机启动动作的权限permission
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>"
发表评论
-
ActivityGroup 替代tabActivity
2013-12-26 16:43 2498转载自http://www.cnblogs.com/answe ... -
Android实战技巧:为从右向左语言定义复杂字串
2013-09-04 17:37 1089我们所使用的语言,无论是中文还是英语, ... -
Android 5种方式存储数据:
2013-05-08 17:17 1059Android 提供了5种方式存储数据: --使用Shared ... -
widget的设计与应用
2013-02-02 16:27 8851.AppWidgetProviderInfo对象 ... -
Android系统主题设计和实现
2012-12-11 14:09 1402转自:http://www.apkbus.com/ ... -
Android实现DES对字符串加密
2012-09-02 14:15 17097import java.io.Unsuppor ... -
onSaveInstanceState
2012-08-01 17:40 680@Override //存储 public void onSa ... -
处理多个Activity
2012-07-20 09:40 670public class LifecycleManager ... -
bitmap 和drawable 互相转换
2012-07-19 13:37 621// bitmap to drawable; Drawable ... -
设置壁纸的三种方法
2012-07-19 11:46 23001111111111111111111111111111111 ... -
sqlite数据库处理时间问题 和 日期时间函数
2012-06-27 10:36 22784首先,sqlite数据库在时间 ... -
app缓存管理
2012-06-27 10:25 1015无论大型或小型应用, ... -
Uri、UriMatcher、ContentUris类使用介绍&&Android应用间数据共享之ContentProvider
2012-05-24 15:50 4378Android应用开发中我们会经常用Uri进行数据的处理,下面 ... -
getWidth()为0
2012-04-12 10:06 1963一般在刚开始开发android时,会犯一个错误,即在View的 ... -
自定义View 及使用
2012-04-05 14:08 743可能是一直都在做Web的富客户端开发的缘故吧,在接触Andro ... -
搜索手机联系人所有字段
2012-03-28 15:54 1386想取手机联系人的有效字段,但是苦于找不到API表示的字段变量, ... -
Andoid2.X各字段意义
2012-03-28 14:59 1207ContactsContract.Contacts.TIMES ... -
SMS发送流程
2012-03-20 18:07 1223发短信流程: 1 afterTextChanged{mWork ... -
Android telephony MMS 学习笔记
2012-03-14 13:32 2851转载 http://blog.csdn.net/tjy1985 ... -
Android_Mms源代码接受短信流程
2012-03-14 13:27 930短信来了之后framework会发送广播 “android.p ...
相关推荐
Android的简单计算器实验报告 有关android的简单实验
我们“嵌入式软件开发”的综合性实验课程设计:加密记事本。实现了对事本的增加,修改,查看,删除,加密的功能,程序比较常见,但是功能比较实用,而且配上我自己写的详细的实验报告,包括实验设计、实验功能说明、...
android综合例子,包含指南针,模拟传感器,数据库,网络,和自定义adapter listView的综合实例,希望对大家有帮助
Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例
简单Android综合小作业
Android综合项目实训总结报告便签管理.doc
android综合训练题.pdf
Android综合案例——RSS阅读器实源代码+讲解
GoogleAndroid开发入门与实战 第16章 Android综合实例.pdf
代码通过Android Studio编写,是RelativeLayout布局综合各种控件的结合体,适合初学者,看一下就知道了,这里写的是一个“工单”,包括姓名、联系方式、等级、工单内容等。
Java与移动智能设备开发方向,《Android综合应用》课程仓库
移动开发技术Android(安卓)综合项目: ①各个基本组件、高级组件的使用。 ②对话框的应用(AlertDialog、DatePickerDialog、TimePickerDialog)。 ③Intent实现页面间的跳转。 ④Sqlite数据库的创建以及增删改查。
Android核心分析.pdf 百度Android工程师面试题.pdf Google Android应用软体架构设计.pdf Android开发书籍 - 应用框架原理与程序设计36技 - 高焕堂.pdf Android API.chm
以下是我在各处收集和自己写的一部分常用资料,希望对大家日常工作能用上 各取所需吧
此打包文件,仅仅只是eclipse android工程项目。 请自行百度eclipse android环境配置。
使用eclipse简单的创建一个Android项目
第14章 android综合案例三——基于android的豆瓣网(web 2.0)移动客户端开发 260 14.1 关于豆瓣网和豆瓣网api 260 14.1.1 豆瓣网介绍 260 14.1.2 豆瓣网api介绍 261 14.1.3 豆瓣网api认证 261 14.1.4...
仿Win8可拖拽界面 自定义Spinner、自定义顶栏和副顶栏(包括三个下拉操作) 支持选项卡(使用的是TabHost,比较老的方式,现在已经不提倡了,看看就好,推荐使用fragment) 内存管理,支持选中关闭指定进程
第1章 掀起你的盖头来——初识Android 1.1 认识Android 1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android我做主 1.3.1 开发基于Android...第16章 Android综合案例五——手机信息查看助手