在main.xml 中:

        <GridView xmlns:android="http://schemas.android.com/apk/res/android"          android:id="@+id/gridview"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          android:numColumns="auto_fit"          android:verticalSpacing="15dp"          android:horizontalSpacing="12dp"          android:columnWidth="95dp"          android:stretchMode="columnWidth"          android:gravity="center"          />  

然后在item.xml给item布局

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"          android:orientation="vertical"            android:layout_width="fill_parent"          android:layout_height="fill_parent"           android:gravity="center" >        <ImageView          android:id="@+id/apps_image"                  android:layout_width="48dip"               android:layout_height="48dip"                 android:icon="@drawable/ic_launcher" />            <TextView                  android:id="@+id/apps_textview"               android:layout_width="wrap_content"               android:layout_height="wrap_content"                  android:maxLines="1"                  android:maxEms="5"                android:text="good" />    </LinearLayout>  

在Activity中显示

public class UnloadingActivity extends Activity {// 用来记录应用程序的信息List<AppsItemInfo> list;private GridView gridview;private PackageManager pManager;private String uninstallPackage; //int state;//int mNum;//final static int PROGRESS_DIALOG = 0;//ProgressThread progressThread;//ProgressDialog progressDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setContentView(R.layout.main);// 取得gridviewgridview = (GridView) findViewById(R.id.gridview);// 获取图片、应用名、包名pManager = UnloadingActivity.this.getPackageManager();List<PackageInfo> appList = getAllApps(UnloadingActivity.this);list = new ArrayList<AppsItemInfo>();for (int i = 0; i < appList.size(); i++) {PackageInfo pinfo = appList.get(i);AppsItemInfo shareItem = new AppsItemInfo();// 设置图片shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));// 设置应用程序名字shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());// 设置应用程序的包名shareItem.setPackageName(pinfo.applicationInfo.packageName);list.add(shareItem);}// 设置gridview的Adaptergridview.setAdapter(new baseAdapter());// 点击应用图标时,做出响应 gridview.setOnItemClickListener(new ClickListener());}public static List<PackageInfo> getAllApps(Context context) {List<PackageInfo> apps = new ArrayList<PackageInfo>();PackageManager pManager = context.getPackageManager();// 获取手机内所有应用List<PackageInfo> packlist = pManager.getInstalledPackages(0);for (int i = 0; i < packlist.size(); i++) {PackageInfo pak = (PackageInfo) packlist.get(i);// 判断是否为非系统预装的应用程序// 这里还可以添加系统自带的,这里就先不添加了,如果有需要可以自己添加// if()里的值如果<=0则为自己装的程序,否则为系统工程自带if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {// 添加自己已经安装的应用程序apps.add(pak);}}return apps;}private class baseAdapter extends BaseAdapter {LayoutInflater inflater = LayoutInflater.from(UnloadingActivity.this);@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}public final class ViewHolder {private ImageView icon;private TextView label;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder;if (convertView == null) {// 使用View的对象itemView与R.layout.item关联convertView = inflater.inflate(R.layout.item, null);holder = new ViewHolder();holder.icon = (ImageView) convertView.findViewById(R.id.apps_image);holder.label = (TextView) convertView.findViewById(R.id.apps_textview);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.icon.setImageDrawable(list.get(position).getIcon());holder.label.setText(list.get(position).getLabel().toString());return convertView;}}// 当用户点击应用程序图标时,将对这个类做出响应 private class ClickListener implements OnItemClickListener {   @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {  AppsItemInfo app = list.get(position);   uninstallPackage = app.packageName;   AppUtils.uninstallApk(UnloadingActivity.this, uninstallPackage);   }   }// 自定义一个 AppsItemInfo 类,用来存储应用程序的相关信息private class AppsItemInfo {private Drawable icon; // 存放图片private String label; // 存放应用程序名private String packageName; // 存放应用程序包名public Drawable getIcon() {return icon;}public void setIcon(Drawable icon) {this.icon = icon;}public String getLabel() {return label;}public void setLabel(String label) {this.label = label;}public String getPackageName() {return packageName;}public void setPackageName(String packageName) {this.packageName = packageName;}}}

更多相关文章

  1. 2013.04.10——— android 图片缓存之三createBitmap
  2. android 识别图片上的二维码
  3. android图片等比例缩放 填充屏幕
  4. android 使用xml制作背景图片(shape的用法)
  5. 用Eclipse开发和调试Android应用程序(二)
  6. 修改android桌面图标默认大小
  7. 2010.11.27———android 展示网络上的图片和播放视频
  8. Android加载图片导致内存溢出(Out of Memory异常)
  9. Android圆角图片

随机推荐

  1. Android实现系统下拉栏的消息提示——Not
  2. 插件化一(android)
  3. android中listview的setAdapter()和getAd
  4. Android 之 Activity和Intent用法介绍
  5. michael / afinal
  6. android休眠
  7. Android中ImageView.ScaleType中文释义
  8. android:largeHeap属性
  9. Android动画开发——Animation动画效果 .
  10. Android 使用View类绘图