在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. Android系统设置选项的包名
  2. Android上的磁盘加密(/data)
  3. android的clipChildren和clipToPadding 属性
  4. android中设置TextView/Button 走马灯效果
  5. Android对话框的高级设置《二》设置对话框按钮的透明度和对话框
  6. android图片等比例缩放 填充屏幕
  7. android XML总结
  8. 用Eclipse开发和调试Android应用程序(二)
  9. android-----EditText

随机推荐

  1. ubuntu10.04系统android开发环境配置
  2. 介绍本人的一个Android项目(附源代码)
  3. android快递跟踪进度条
  4. android中的数据库操作
  5. SDK下载地址
  6. Android(安卓)异步从网络上下载图片
  7. Android(安卓)SDK更新失败及其解决办法
  8. Android(安卓)创建与解析XML(六)—— 比较
  9. android页面跳转
  10. android studio 修改生成的apk 包名