android:
id="@+id/passwordShow"
android:
layout_width="fill_parent"
android:
layout_height="wrap_content"
android:
textSize="18sp"
/>
二、长按图标抖动以及显示删除
功能:
将app列举在界面上,并且长按图标使图标进行抖动以及显示删除图标。
1.初始化一个gridview的适配器
2.通过不停转动图标实现图标的抖动以及添加删除图标
3.添加监听器实现长按图标使图标抖动及显示删除
完整代码
1.main_activity.java
publicclassMainActivityextendsActivity{
privatePackageManagermPackageManager;
privateGridViewmAppGrid;
privateListmAppList;
privateDrawablemColorDrawable;
privateGridViewAdaptermAdapter=null;
privatestaticintmAppState=0;
privatestaticfinalintAPP_DELFINISHED=0x1;
publicMainActivity(){
//TODOAuto-generatedconstructorstub
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0){
if(mAppState==1){
//resetAllAppIcon();
refreshAppList();
returntrue;
}
}
returnsuper.onKeyDown(keyCode,event);
}
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
mAppList=newArrayList();
getAppList(mAppList);
setContentView(R.layout.activity_main);
mAppGrid=(GridView)findViewById(R.id.app_list_grid);
mAppGrid.setNumColumns(calculatorNumColumn());
mAdapter=newGridViewAdapter(mAppList,this,mPackageManager);
mAppGrid.setAdapter(mAdapter);
mAppGrid.setOnItemClickListener(clickListener);
mAppGrid.setOnItemLongClickListener(itemLongClickListener);
//mAppGrid.setOnTouchListener(newPicOnTouchListener());
}
@Override
protectedvoidonResume(){
//TODOAuto-generatedmethodstub
super.onResume();
}
@Override
protectedvoidonPause(){
//TODOAuto-generatedmethodstub
super.onPause();
}
@Override
protectedvoidonDestroy(){
//TODOAuto-generatedmethodstub
super.onDestroy();
}
OnItemClickListenerclickListener=newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView
>parent,Viewview,intposition,longid){
if(mAppState==1){
PackageInfoinfo=mAppList.get(position);
//Activity
UripackageURI=Uri.parse("package:
"+info.applicationInfo.packageName);
IntentuninstallIntent=newIntent(Intent.ACTION_DELETE,packageURI);
startActivityForResult(uninstallIntent,APP_DELFINISHED);
}
}
};
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
//TODOAuto-generatedmethodstub
super.onActivityResult(requestCode,resultCode,data);
}
OnItemLongClickListeneritemLongClickListener=newOnItemLongClickListener(){
@Override
publicbooleanonItemLongClick(AdapterView
>arg0,Viewarg1,intarg2,longarg3){
//TODOAuto-generatedmethodstub
animAllAppIcon();
returntrue;
}
};
privatevoidgetAppList(Listlist){
mPackageManager=getPackageManager();
Listpacks=mPackageManager.getInstalledPackages(0);
if(packs!
=null&&packs.size()>0){
for(PackageInfoinfo:
packs){
if((info.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)==0&&
(info.applicationInfo.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP)==0){
list.add(info);
}
}
}
}
privatevoidrefreshAppList(){
mAppList.clear();
getAppList(mAppList);
mAdapter.setData(mAppList);
mAdapter.notifyDataSetChanged();
mAppState=0;
}
privatevoidanimAllAppIcon(){
intnCount=mAppGrid.getChildCount();
mColorDrawable=mAppGrid.getSelector();
mAppGrid.setSelector(newColorDrawable(Color.TRANSPARENT));
for(inti=0;iViewv=mAppGrid.getChildAt(i);
RelativeLayoutlayout;
Animationshake;
//if(i%2==0){
shake=AnimationUtils.loadAnimation(
MainActivity.this,R.anim.icon_anim_left);
shake.reset();
shake.setFillAfter(true);
//}
//else{
//shake=AnimationUtils.loadAnimation(
//MainActivity.this,R.anim.icon_anim_right);
//shake.reset();
//shake.setFillAfter(true);
//}
v.startAnimation(shake);
layout=(RelativeLayout)v.findViewById(R.id.view_delete);
layout.setVisibility(View.VISIBLE);
}
mAppState=1;
}
privatevoidresetAllAppIcon(){
intnCount=mAppGrid.getChildCount();
mAppGrid.setSelector(mColorDrawable);
for(inti=0;iViewv=mAppGrid.getChildAt(i);
RelativeLayoutlayout;
v.clearAnimation();
layout=(RelativeLayout)v.findViewById(R.id.view_delete);
layout.setVisibility(View.INVISIBLE);
}
mAppState=0;
}
privateintcalculatorNumColumn(){
intnCol=5;
android.view.Displaydisplay=getWindowManager().getDefaultDisplay();
intwidthPIX=display.getWidth();
finalfloatscale=getResources().getDisplayMetrics().density;
nCol=(int)(widthPIX/scale/80);
returnnCol;
}
/*privateclassPicOnTouchListenerimplementsOnTouchListener{
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
if(mAppState==1){
resetAllAppIcon();
}
returntrue;
}
}*/
}
2.GridViewAdapter
publicclassGridViewAdapterextendsBaseAdapter{
ListmAppList=null;
PackageManagermPackageManager=null;
ViewmView=null;
ContextmContext=null;
publicGridViewAdapter(Listlist,Contextcontext,PackageManagermanager){
mAppList=list;
mContext=context;
mPackageManager=manager;
}
@Override
publicintgetCount(){
returnmAppList.size();
}
@Override
publicObjectgetItem(intposition){
returnmAppList.get(position);
}
@Override
publiclonggetItemId(intposition){
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
ImageViewi;
TextViewt;
if(convertView==null){
convertView=LayoutInflater.from(mContext).inflate(R.layout.app_list_item,null);
}
i=(ImageView)convertView.findViewById(R.id.img_appicon);
t=(TextView)convertView.findViewById(R.id.txt_appname);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
PackageInfoinfo=mAppList.get(position);
i.setImageDrawable(info.applicationInfo.loadIcon(mPackageManager));
t.setText(info.applicationInfo.loa