开启APP,进入WelcomeActivity
,透明度由0到1,持续3秒,主要有:透明度的变化+更新逻辑
透明度由0到1,持续3秒
更新逻辑:获取本地与服务器中的VersionCode,判断是否更新,是则下载app,下载完成后弹出安装app的dialog,是:进入安装界面,否:进入主界面。
透明度的变化
ScaleAnimation animation = new ScaleAnimation(1.0f, 1.5f, 1.0f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(3000);
layoutRoot.startAnimation(animation);
获取versionName + versionCode#
PackageManager pm = getPackageManager();
try {
PackageInfo info = pm.getPackageInfo("com.qihu.mobilesafe", PackageManager.GET_ACTIVITIES);
localVersionName = info.versionName;
localVersionCode = info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
下载app
下载框架采用的是xUtils2.6.4
HttpUtils http = new HttpUtils(5000);
String url = NetUrl.BASE_URL + updateUrl;
String target = Environment.getExternalStorageDirectory().getAbsolutePath() + "/mobileSafe.apk";
// RequestParams params = new RequestParams();
// params.addBodyParameter("name","cui");
http.download(url, target, new RequestCallBack<File>() {
@Override
public void onLoading(long total, long current, boolean isUploading) {
super.onLoading(total, current, isUploading);
tv2.setText(current + "/" + total);
}
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
installApp(responseInfo.result.getAbsolutePath());
}
@Override
public void onFailure(HttpException e, String s) {
enterHome();
}
});
由于onSuccess(ResponseInfo<File> responseInfo)
返回的是ResponseInfo<File>
,若想获取T对象,那么采用responseInfo.result
即可。
进入安装界面
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
Uri data = Uri.parse("file://" + path);
intent.setDataAndType(data, "application/vnd.android.package-archive");
startActivityForResult(intent, 0);
对应的是
<activity android:name=".PackageInstallerActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/TallTitleBarTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="application/vnd.android.package-archive" />
</intent-filter>
</activity>
卸载APP需满足的intent-filter
<activity android:name=".UninstallerActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@style/TallTitleBarTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DELETE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
</activity>
主界面:GridView
主界面采用的是GridView,也有setAdapter(...)
和setOnItemClickListener(...)
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:horizontalSpacing="5dp"
android:verticalSpacing="3dp"
android:listSelector="@android:drawable/list_selector_background"/>
gridView.setAdapter(new MyAdapeter());
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ToastUtil.shortToast(MainActivity.this,array[i]);
}
});
网友评论