Android软件管理器项目学习笔记-04
1 ##自定义Toast的方法 2 3 1、new出toast,自定义view Toast toast = new Toast(context); 4 5 2、在view中自定义其样式 LinearLayout toastLayout = new LinearLayout(context); toastLayout.addView(imageView); 6 7 3、将自定义view设置给toast,并将其显示出来 toast.setView(toastLayout); toast.show(); 8 9 10 11 ##弹出菜单(Dialog)设置方法 12 13 1、给每个view(gv、lv)设置OnItemClick监听器,实现该监听器接口 14 15 gv.setOnItemClickListener(this); 16 17 lv.setOnItemClickListener(this); 18 19 2、复写监听器的onItemClick方法,新建构造器,传入上下文,并进行相应设置 20 21 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("选项"); 22 23 builder.setItems(R.array.choice,new DialogInterface.OnClickListener(){...} 24 25 3、构造器的setItems选项中需要资源文件的ID,所以在string.xml中添加如下资源: 26 27 <array name="choice"> 28 29 <item name="start app">启动</item> 30 31 <item name="details">详细信息</item> 32 33 <item name="uninstall">卸载</item> 34 35 ... 36 37 </array> 38 39 40 41 ##启动程序的方法 42 43 1、获取package名称,获得当前所点击的pkgInfo 44 45 PackageInfo tempPkgInfo = showPackageInfos.get(position); 46 47 String pkgName = tempPkgInfo.packageName; 48 49 2、获取默认启动它的activity的类名 //一般来说默认启动的activity放在0的位置 50 51 ActivityInfo activityInfo = tempPkgInfo.activities[0]; 52 53 if(activityInfo==null) { 54 55 Toast.makeText(MainActivity.this,"没有任何activity", Toast.LENGTH_SHORT); 56 57 return; 58 59 } String activityName = activityInfo.name; 60 61 !!在获取activity和service的时候,记得加上相应的flag,否则会取不到/报错 62 63 3、启动activity的方法 Intent intent = new Intent(); //使用包名+类名的方式将activity启动起来 64 65 intent.setComponent(new ComponentName(pkgName,activityName)); 66 67 startActivity(intent); 68 69 70 71 72 73 ##获取每个程序的图标 74 75 setIcon(pkgInfo.applicationInfo.loadIcon(getPackageManager())); 76 77 78 79 ##卸载程序只能通过调用系统卸载界面,不能自己通过代码卸载。只需要一个URI实现跳转 80 81 Uri pkgUri = Uri.parse("package:"+tempPkgInfo.packageName); 82 83 Intent deleteIntent = new Intent(); 84 85 deleteIntent.setAction(Intent.ACTION_DELETE); 86 87 deleteIntent.setData(pkgUri); 88 89 startActivity(deleteIntent); 90 91 92 93 94 95 ## 解决BUG:startActivityForResult 96 97 1、 在onResume方法中重新加载packageInfo 98 99 protected void onResume() { 100 101 // TODO Auto-generated method stub 102 103 super.onResume(); 104 105 ... } 106 107 2、使用startActivityForResult方法 108 109 startActivityForResult(deleteIntent, 0); 110 111 3、 使用startActivity方法启动时,会将当前Activity压栈、弹出 112 113 使用startActivityForResult方法启动时,会调用onActivityResult方法 114 115 116 117 ## Android下所有动画效果都被封装为Animation,下面有4种不同的动画效果 118 119 分类: 120 121 1、AlphaAnimation:控制渐变透明的动画效果 122 123 2、ScaleAnimation:控制尺寸伸缩的动画效果 124 125 3、TranslateAnimation:控制画面平移的动画效果(图形左上角的起始位置) 126 127 4、RotateAnimation:控制画面角度变化的动画效果 128 129 实现方式: 130 Animation animition = new TranslateAnimation(130, 1, 130, 1); 131 132 animition.setDuration(500);//设置单位为毫秒的持续时间 133 134 lv.startAnimation(animition);//将动画设置到某一个view上去 135 136 特: 137 138 setInterpolator属性可以对动画的效果进行进一步的设置 139 140 animition.setInterpolator(MainActivity.this, android.R.anim.accelerate_decelerate_interpolator); 141 142 143 144 145 146 ## AnimationSet,让一个activity实现多个animation 147 148 AnimationSet aSet = new AnimationSet(false); //RotateAnimation 149 150 Animation animition = new RotateAnimation(60,0);//起始和终止角度 151 152 animition.setDuration(500);//单位是ms 153 154 aSet.addAnimation(animition); 155 156 animition = new AlphaAnimation(0,1);//起始和终止角度 157 158 animition.setDuration(500); 159 160 aSet.addAnimation(animition); 161 162 gv.startAnimation(aSet); //注意start的是一个animationSet 163 164 165 166 ## AnimationSet aSet = new AnimationSet(false); //false表示是否使用set本身的插入器 167 168 169 170 # # 通过资源文件实现动画效果 171 172 Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.set1); 173 gv.startAnimation(animation); 174 175 176 177 ## LayoutAnimation是对每一个控件设置动作 178 179 180 181 182 183
__________________________________________________________
shoobie do lang lang ^^