Android软件管理器项目学习笔记-04

##自定义Toast的方法

1、new出toast,自定义view  Toast toast = new Toast(context);

2、在view中自定义其样式  LinearLayout toastLayout = new LinearLayout(context);  toastLayout.addView(imageView);  

3、将自定义view设置给toast,并将其显示出来  toast.setView(toastLayout);  toast.show();    

 

##弹出菜单(Dialog)设置方法

1、给每个view(gv、lv)设置OnItemClick监听器,实现该监听器接口    

   gv.setOnItemClickListener(this);    

   lv.setOnItemClickListener(this);  

2、复写监听器的onItemClick方法,新建构造器,传入上下文,并进行相应设置  

  AlertDialog.Builder builder = new AlertDialog.Builder(this);  builder.setTitle("选项");  

  builder.setItems(R.array.choice,new DialogInterface.OnClickListener(){...}

3、构造器的setItems选项中需要资源文件的ID,所以在string.xml中添加如下资源:  

  <array name="choice">        

    <item name="start app">启动</item>        

    <item name="details">详细信息</item>        

    <item name="uninstall">卸载</item>        

     ...    

  </array>  

 

##启动程序的方法

1、获取package名称,获得当前所点击的pkgInfo  

  PackageInfo tempPkgInfo = showPackageInfos.get(position);  

  String pkgName = tempPkgInfo.packageName;

2、获取默认启动它的activity的类名  //一般来说默认启动的activity放在0的位置  

  ActivityInfo activityInfo = tempPkgInfo.activities[0];

  if(activityInfo==null) {   

    Toast.makeText(MainActivity.this,"没有任何activity", Toast.LENGTH_SHORT);   

    return;  

  }  String activityName = activityInfo.name;   

  !!在获取activity和service的时候,记得加上相应的flag,否则会取不到/报错

3、启动activity的方法  Intent intent = new Intent();  //使用包名+类名的方式将activity启动起来  

  intent.setComponent(new ComponentName(pkgName,activityName));  

  startActivity(intent); 

 

 

##获取每个程序的图标  

  setIcon(pkgInfo.applicationInfo.loadIcon(getPackageManager()));

 

##卸载程序只能通过调用系统卸载界面,不能自己通过代码卸载。只需要一个URI实现跳转  

  Uri pkgUri = Uri.parse("package:"+tempPkgInfo.packageName);  

  Intent deleteIntent = new Intent();  

  deleteIntent.setAction(Intent.ACTION_DELETE);  

  deleteIntent.setData(pkgUri);  

  startActivity(deleteIntent);

 

 

## 解决BUG:startActivityForResult

1、 在onResume方法中重新加载packageInfo  

  protected void onResume() {   

    // TODO Auto-generated method stub   

    super.onResume();   

    ...  }

2、使用startActivityForResult方法  

  startActivityForResult(deleteIntent, 0);

3、 使用startActivity方法启动时,会将当前Activity压栈、弹出  

  使用startActivityForResult方法启动时,会调用onActivityResult方法  

 

##  Android下所有动画效果都被封装为Animation,下面有4种不同的动画效果

分类:  

  1、AlphaAnimation:控制渐变透明的动画效果  

  2、ScaleAnimation:控制尺寸伸缩的动画效果  

  3、TranslateAnimation:控制画面平移的动画效果(图形左上角的起始位置)  

  4、RotateAnimation:控制画面角度变化的动画效果

实现方式:  
  Animation animition = new TranslateAnimation(130, 1, 130, 1);  

  animition.setDuration(500);//设置单位为毫秒的持续时间  

  lv.startAnimation(animition);//将动画设置到某一个view上去

特:

  setInterpolator属性可以对动画的效果进行进一步的设置  

  animition.setInterpolator(MainActivity.this, android.R.anim.accelerate_decelerate_interpolator);

 

 

## AnimationSet,让一个activity实现多个animation  

  AnimationSet aSet = new AnimationSet(false);  //RotateAnimation           

  Animation animition = new RotateAnimation(60,0);//起始和终止角度  

  animition.setDuration(500);//单位是ms  

  aSet.addAnimation(animition);  

  animition = new AlphaAnimation(0,1);//起始和终止角度  

  animition.setDuration(500);

  aSet.addAnimation(animition);  

  gv.startAnimation(aSet);  //注意start的是一个animationSet  

 

##  AnimationSet aSet = new AnimationSet(false);  //false表示是否使用set本身的插入器

 

# #   通过资源文件实现动画效果

    Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.set1);
     gv.startAnimation(animation);

Android软件管理器项目学习笔记-04

上一篇:android加密文件在pc上破解的若干方法


下一篇:Android单个进程内存分配策略