第一天 splash页面开发和高级设置初步

一、Splash界面窗口没有标题没有任务栏

// 设置窗口特性为:NO_TITTLE(无标题)

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.splash_activity);

// 设置窗口全屏幕

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);


二、在Splash界面显示的时候显示两秒钟的透明度动画(AlphaAnimation)

// 初始化动画效果 从0.0f 全透明(0.0f)->全不透明(1.0f)

AlphaAnimation animation = new AlphaAnimation(0.0f, 1.0f);

// 设置动画渐变时间 为2000ms 2s

animation.setDuration(2000);

// 为该线性布局文件开启动画

((LinearLayout) findViewById(R.id.splash_activity))

.startAnimation(animation);


三、将资产文件夹(res/assert/)中的文件拷入到数据文件夹(data/data/com.example.phoneguard/files/)下

private void copyDB(String fileName) {

File dbFile = new File(getFilesDir(), fileName);

if (!(dbFile.exists() && dbFile.length() > 0)) {// 不是(文件已经存在并且可用)F,不需要拷贝

try {

InputStream is = getAssets().open(fileName);

OutputStream os = new FileOutputStream(dbFile);

 

int len;

byte[] buffer = new byte[1024];

while ((len = is.read(buffer)) != -1) {

os.write(buffer, 0, len);

}

if (os != null) {

os.close();

os = null;

}

if (is != null) {

is.close();

is = null;

}

Toast.makeText(this, "INIT...数据库已经拷入到应用数据目录下...", 1).show();

 

} catch (IOException e) {

e.printStackTrace();

}

} else {

Toast.makeText(this, "DONE...数据库已经拷入到应用数据目录下...", 1).show();

}

}


四、在Splash界面上显示清单文件中的版本信息

/**

 * 

 * @return 程序清单文件下配置的程序的版本号 如:version 1.0.1:1

 */

public String getVersion() {

PackageManager packageManager = getPackageManager();

try {

PackageInfo packageInfo = packageManager.getPackageInfo(

getPackageName(), 0);

return "version " + packageInfo.versionName + ":"

+ packageInfo.versionCode;

} catch (NameNotFoundException e) {

e.printStackTrace();

return getResources().getString(R.string.unkonwn_version);

}

}


五、判断桌面上是否已经存在快捷图标

/**

 * 判断桌面是否已添加快捷方式

 * 

 * @param cx

 * @param titleName

 *            快捷方式名称

 * @return

 */

public static boolean hasShortcut(Context cx) {

boolean result = false;

// 获取当前应用名称

String title = null;

try {

final PackageManager pm = cx.getPackageManager();

title = pm.getApplicationLabel(

pm.getApplicationInfo(cx.getPackageName(),

PackageManager.GET_META_DATA)).toString();

} catch (Exception e) {

}

 

final String uriStr;

if (android.os.Build.VERSION.SDK_INT < 8) {

uriStr = "content://com.android.launcher.settings/favorites?notify=true";

} else {

uriStr = "content://com.android.launcher2.settings/favorites?notify=true";

}

final Uri CONTENT_URI = Uri.parse(uriStr);

final Cursor c = cx.getContentResolver().query(CONTENT_URI, null,

"title=?", new String[] { title }, null);

if (c != null && c.getCount() > 0) {

result = true;

}

return result;

}


六、在桌面上添加快捷图标

/**

 * 为当前应用添加桌面快捷方式

 * 

 * @param cx

 * @param appName

 *            快捷方式名称

 */

public static void addShortcut(Context cx) {

Intent shortcut = new Intent(

"com.android.launcher.action.INSTALL_SHORTCUT");

 

Intent shortcutIntent = cx.getPackageManager()

.getLaunchIntentForPackage(cx.getPackageName());

shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);

// 获取当前应用名称

String title = null;

try {

final PackageManager pm = cx.getPackageManager();

title = pm.getApplicationLabel(

pm.getApplicationInfo(cx.getPackageName(),

PackageManager.GET_META_DATA)).toString();

} catch (Exception e) {

}

// 快捷方式名称

shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);

// 不允许重复创建(不一定有效)

shortcut.putExtra("duplicate", false);

// 快捷方式的图标

Parcelable iconResource = Intent.ShortcutIconResource.fromContext(cx,

R.drawable.ic_launcher);

shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);

 

cx.sendBroadcast(shortcut);

}


七、高级设置开发初步

a) 自定义一个控件(自定义控件开发在其他文章中有提到)。并将该控件的开关状态持久化到SharedPreferced文件中。Splash界面根据该状态决定是否联网查找更新包

你可能感兴趣的:(旺旺卫士开发,安卓学习笔记)