git-osc-android客户端之源码分析3

一、侧滑菜单栏
这里写图片描述

工作流程图:
这里写图片描述
当菜单栏显示时,点击左上角图标,隐藏菜单栏;菜单栏隐藏时,显示菜单栏。
当点击菜单栏的某一条目后,跳转到对应的界面。
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值