一、侧滑菜单栏
工作流程图:
当菜单栏显示时,点击左上角图标,隐藏菜单栏;菜单栏隐藏时,显示菜单栏。
当点击菜单栏的某一条目后,跳转到对应的界面。
1、点击登录后,进入登录界面;
2、发现,进入发现界面;
3、我的,进入我的界面;
4、语言,进入我的语言界面;
5、摇一摇,进入摇一摇界面;
6、设置,进入设置界面;
7、反馈,进入反馈界面;
界面之间的跳转则是封装在了UIHelper.java中:
1、点击登录,如果未登录则显示登录界面,已经登录则显示我的详细信息:
private void showLoginActivity() {
if (!mContext.isLogin()) {
Intent intent = new Intent(mContext,LoginActivity.class);
startActivity(intent);
}
else
{
UIHelper.showMySelfInfoDetail(MainActivity.this);
}
}
2、点击发现:
private void setExploreShow()
{
FragmentTransaction ft=mFragmentManager.beginTransaction();
ft.replace(R.id.main_slidingmenu_frame,mMenu,DRAWER_MENU_TAG).replace(R.id.main_content,ExploreViewPagerFragment.newInstance(),DRAWER_CONTENT_TAG).commit();
mTitle="发现";
mActionBar.setTitle(mTitle);
mCurrentContentTag=CONTENT_TAG_EXPLORE;
}
3、我的:
@Override
public void onClickMySelf() {
if (!mContext.isLogin()) {
UIHelper.showLoginActivity(this);
return;
} else
{
showMainContent(1);
}
}
4、语言、摇一摇、设置、反馈:
public void onClickNotice() {
if (!mContext.isLogin()) {
UIHelper.showLoginActivity(this);
return;
}
Intent intent = new Intent(mContext, NotificationActivity.class);
startActivity(intent);
}
@Override
public void onClickLanguage() {
Intent intent = new Intent(mContext, LanguageActivity.class);
startActivity(intent);
}
@Override
public void onClickShake() {
Intent intent = new Intent(mContext, ShakeActivity.class);
startActivity(intent);
}
@Override
public void onClickSetting() {
Intent intent = new Intent(mContext, SettingActivity.class);
startActivity(intent);
}
@Override
public void onClickFeedback() {
if (!mContext.isLogin()) {
UIHelper.showLoginActivity(this);
return;
}
Intent intent = new Intent(mContext, FeedbackActivity.class);
startActivity(intent);
}
二、用户配置界面
在每一个应用中都会有这样一个界面,偏好设置界面,我们给用户提供一些可选项。因此用户可以最大限度地控制自己的App,Android平台也提供一个这样的API(Android提供的app_setttings)供开发者使用,来做到一个统一的效果。当然,你也可以通过一系列的自定义来完成这样的设置操作。
如果想为App提供“设置”,你应该使用Android提供的API:Preference来构建交互界面,它提供了和其他Android APP一致的用户体验(包括系统的设置)。使用Preference来在你的APP中创建settings.
在设置界面中涉及到一些别的知识点,比如:
1、启动时进行检查更新
2、程序更新、以及更新后程序的安装
3、缓存的处理
三、程序更新管理
在程序的设置界面中,有一个选项“启动检查更新”,当被勾选后,将会在启动时检查服务器是否有版本来更新。
软件更新流程图:
在程序MainActivity的onPostCreate()方法中:
// 检查新版本
if (mContext.isCheckUp()) {
UpdateManager.getUpdateManager().checkAppUpdate(this, false);
}
接着调用了UpdateManager,在这个类中涉及到很多有用的知识点:
1)获取应用程序的当前版本号getCurrentVersion():
/**
*获取当前客户端版本信息
*/
private void getCurrentVersion()
{
try
{
PackageInfo info =mContext.getPackageManager().getPackageInfo((mContext.getPackageName(),0));
curVersionCode=info.versionCode;
} catch (NameNotFoundException e)
{
e.printStackTrace(System.err);
}
}
2)安装apk;
/**
*安装apk
*/
private void installApk()
{
File apkfile=new File(apkFilePath);
if(!apkfile.exists())
{
return;
}
Intent i=new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file://"+apkfile.toString()),"application/vnd.android.package-archive");
mContext.startActivity(i);
}
3)下载apk:
/**
*下载apk
*/
private void downloadApk()
{
downloadThread=new Thread(mdownApkRunnable);
downloadThread.start();
}
4)对应用更新实体类的封装:Update.java
5)使用到的网络部分:
/**
*获取App更新信息
*/
public Update getUpdateInfo() throws AppException
{
return ApiClient.getUpdateInfo(this);
}
a.监测程序新版本信息,获取APP更新信息: ApiClient.getUpdateInfo(this)
b.下载程序新版本
网络涉及到的类:
ApiClient.java、HTTPRequestor.java、Update.java、AppContext.java