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>"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值