1.引导界面同时鉴别是不是新版本,用来重新出现loading页和清除旧版本数据


package com.xionghu.view;import java.util.ArrayList;import com.example.utils.Common;import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;/** * @author yangyu 功能描述:引导界面activity类 */public class GuideActivity extends Activity implements OnPageChangeListener {// 定义ViewPager对象private ViewPager viewPager;// 定义ViewPager适配器private ViewPagerAdapter vpAdapter;// 定义一个ArrayList来存放Viewprivate ArrayList views;// 定义各个界面View对象private View view1, view2, view3, view4, view5;// 定义开始按钮对象private ImageView startBt;// 是否是第一次使用private boolean isFirstUse;private int old_install_Code, current_versionCode;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_guide);SharedPreferences preferences = getSharedPreferences("isFirstUse", 1);// 读取SharedPreferences中需要的数据isFirstUse = preferences.getBoolean("isFirstUse", true);old_install_Code = preferences.getInt("old_install_Code", 0);// Common.getVerCode 中包名一定要与本应用包名一致current_versionCode = Common.getVerCode(getApplicationContext());if (isFirstUse || old_install_Code == 0|| current_versionCode > old_install_Code) {initView();} else {Intent intent = new Intent();intent.setClass(GuideActivity.this, MainActivity.class);startActivity(intent);this.finish();}}/** * 初始化组件 */private void initView() {// 实例化各个界面的布局对象LayoutInflater mLi = LayoutInflater.from(this);view1 = mLi.inflate(R.layout.guide_view01, null);view2 = mLi.inflate(R.layout.guide_view02, null);view3 = mLi.inflate(R.layout.guide_view03, null);view4 = mLi.inflate(R.layout.guide_view04, null);// 实例化ViewPagerviewPager = (ViewPager) findViewById(R.id.viewpager);// 实例化ArrayList对象views = new ArrayList();// 实例化ViewPager适配器vpAdapter = new ViewPagerAdapter(views);// 实例化开始按钮startBt = (ImageView) view4.findViewById(R.id.start_img);initData();}/** * 初始化数据 */private void initData() {// 设置监听viewPager.setOnPageChangeListener(this);// 将要分页显示的View装入数组中views.add(view1);views.add(view2);views.add(view3);views.add(view4);// 设置适配器数据viewPager.setAdapter(vpAdapter);// 给开始按钮设置监听startBt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {startbutton();}});}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {}/** * 相应按钮点击事件 */private void startbutton() {SharedPreferences preferences = getSharedPreferences("isFirstUse", 1);// 实例化Editor对象Editor editor = preferences.edit();// 存入数据editor.putBoolean("isFirstUse", false);editor.putInt("old_install_Code", current_versionCode);// 提交修改editor.commit();// 本应用数据清除管理器 DataCleanManager// DataCleanManager.cleanSharedPreference(this);// 清除本应用旧版本SharedPreference// DataCleanManager.cleanDatabases(this) 清除本应用旧版本所有数据库Intent intent = new Intent();intent.setClass(GuideActivity.this, MainActivity.class);startActivity(intent);this.finish();}}


当AndroidManifest.xml 中 android:versionCode="1"  改为 android:versionCode="2" 时 你会发现loading页又出现了


2.Common.java用来 识别当前版本号

package com.example.utils;/** * @author harvic * @date 2014-5-7 * @address http://blog.csdn.net/harvic880925 */import android.content.Context;import android.content.pm.PackageManager.NameNotFoundException;import android.util.Log;public class Common {/** * 获取软件版本号 * @param context * @return */public static int getVerCode(Context context) {        int verCode = -1;        try {        //注意:"com.example.try_downloadfile_progress"对应AndroidManifest.xml里的package="……"部分            verCode = context.getPackageManager().getPackageInfo(                    "com.xionghu.view", 0).versionCode;        } catch (NameNotFoundException e) {        Log.e("msg",e.getMessage());        }        return verCode;    }   /**    * 获取版本名称    * @param context    * @return    */    public static String getVerName(Context context) {        String verName = "";        try {            verName = context.getPackageManager().getPackageInfo(                    "com.xionghu.view", 0).versionName;        } catch (NameNotFoundException e) {        Log.e("msg",e.getMessage());        }        return verName;   }        /**     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)     */    public static int dip2px(Context context, float dpValue) {        final float scale = context.getResources().getDisplayMetrics().density;        return (int) (dpValue * scale + 0.5f);    }        /**     * 获取手机状态栏高度     */    public static int getStatusBarHeight(Context context) {      int result = 0;      int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");      if (resourceId > 0) {          result = context.getResources().getDimensionPixelSize(resourceId);      }      return result;    }    /**      * 根据手机的分辨率从 px(像素) 的单位 转成为 dp      */      public static int px2dip(Context context, float pxValue) {          final float scale = context.getResources().getDisplayMetrics().density;          return (int) (pxValue / scale + 0.5f);      } }


3.DataCleanManager.java用来 清除旧版本数据  引用来源

package com.xionghu.view;/*  * 文 件 名:  DataCleanManager.java  * 描    述:  主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录  */import java.io.File;import android.annotation.SuppressLint;import android.content.Context;import android.os.Environment;/** * 本应用数据清除管理器 */public class DataCleanManager {/** * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * @param context */public static void cleanInternalCache(Context context) {deleteFilesByDirectory(context.getCacheDir());}/** * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) * * @param context */@SuppressLint("SdCardPath")public static void cleanDatabases(Context context) {deleteFilesByDirectory(new File("/data/data/"+ context.getPackageName() + "/databases"));}/** * * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) * * @param * context */@SuppressLint("SdCardPath")public static void cleanSharedPreference(Context context) {deleteFilesByDirectory(new File("/data/data/"+ context.getPackageName() + "/shared_prefs"));}/** * 按名字清除本应用数据库 * * @param context * @param dbName */public static void cleanDatabaseByName(Context context, String dbName) {context.deleteDatabase(dbName);}/** * 清除/data/data/com.xxx.xxx/files下的内容 * * @param context */public static void cleanFiles(Context context) {deleteFilesByDirectory(context.getFilesDir());}/** * * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache) * * @param * context */public static void cleanExternalCache(Context context) {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {deleteFilesByDirectory(context.getExternalCacheDir());}}/** * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * * @param filePath */public static void cleanCustomCache(String filePath) {deleteFilesByDirectory(new File(filePath));}/** * 清除本应用所有的数据 * * @param context * @param filepath */public static void cleanApplicationData(Context context, String... filepath) {cleanInternalCache(context);cleanExternalCache(context);cleanDatabases(context);cleanSharedPreference(context);cleanFiles(context);for (String filePath : filepath) {cleanCustomCache(filePath);}}/** * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 * * @param directory */private static void deleteFilesByDirectory(File directory) {if (directory != null && directory.exists() && directory.isDirectory()) {for (File item : directory.listFiles()) {item.delete();}}}}


DataCleanManager.java 使用

package com.xionghu.view;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {private Button clean_data;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);clean_data = (Button) findViewById(R.id.clean_data);clean_data.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {DataCleanManager.cleanSharedPreference(MainActivity.this);/* * 其他数据清除 用 DataCleanManager */// DataCleanManager.cleanDatabases(context) 清除本应用所有数据库Toast.makeText(MainActivity.this,"清除本应用SharedPreference 成功!!!", Toast.LENGTH_SHORT).show();Toast.makeText(MainActivity.this, "再次打开本程序,发现loading页又出现了",Toast.LENGTH_SHORT).show();}});}}

资源下载链接



更多相关文章

  1. Android根据Data匹配隐式Intent的实例
  2. android 数据库操作异常
  3. android 数据报表
  4. Android Bitmap对象与byte[]相互转换
  5. Android 整屏截图与区域指定view或layout截屏并返回bitmap对象
  6. Android 下陀螺仪、加速度和磁场传感器数据定义
  7. Android 动态添加view或item并获取数据
  8. android连接数据库sqllist基础操作学习:
  9. Android Studio HttpURLConnection 接收 JSON 数据

随机推荐

  1. Windows10下MySQL5.7.19安装教程 MySQL忘
  2. mysql中使用instr进行模糊查询方法介绍
  3. mysql登录警告问题的解决方法
  4. mysql查询语句中用户变量的使用代码解析
  5. 详解MySQL数据类型DECIMAL(N,M)中N和M分
  6. MySQL数据类型中DECIMAL的用法实例详解
  7. MySQL如何查看元数据锁阻塞在哪里
  8. JDBC连接mysql处理中文时乱码解决办法详
  9. linux/mac安装mysql忘记密码的解决办法
  10. MySQL操作之JSON数据类型操作详解