1.系统应用程序界面

获取系统程序ApplicationInfo集合

private void loadApplications(boolean isLaunching) {if (isLaunching && mApplications != null) {return;}PackageManager manager = getPackageManager();Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);final List<ResolveInfo> apps = manager.queryIntentActivities(mainIntent, 0);Collections.sort(apps, new ResolveInfo.DisplayNameComparator(manager));if (apps != null) {final int count = apps.size();if (mApplications == null) {mApplications = new ArrayList<ApplicationInfo>(count);}mApplications.clear();for (int i = 0; i < count; i++) {ApplicationInfo application = new ApplicationInfo();ResolveInfo info = apps.get(i);application.title = info.loadLabel(manager);application.setActivity(new ComponentName(info.activityInfo.applicationInfo.packageName,info.activityInfo.name), Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);application.icon = info.activityInfo.loadIcon(manager);mApplications.add(application);}}}
程序列表构造器
private class ApplicationsAdapter extends ArrayAdapter<ApplicationInfo> {  private Rect mOldBounds = new Rect();  public ApplicationsAdapter(Context context, ArrayList<ApplicationInfo> apps) {   super(context, 0, apps);  }  @Override  public View getView(int position, View convertView, ViewGroup parent) {   final ApplicationInfo info = mApplications.get(position);   if (convertView == null) {    final LayoutInflater inflater = getLayoutInflater();    convertView = inflater.inflate(R.layout.application, parent, false);   }   Drawable icon = info.icon;   if (!info.filtered) {       int width = 42;// (int)       int height = 42;// (int)    final int iconWidth = icon.getIntrinsicWidth();    final int iconHeight = icon.getIntrinsicHeight();    if (icon instanceof PaintDrawable) {     PaintDrawable painter = (PaintDrawable) icon;     painter.setIntrinsicWidth(width);     painter.setIntrinsicHeight(height);    }    if (width > 0 && height > 0 && (width < iconWidth || height < iconHeight)) {     final float ratio = (float) iconWidth / iconHeight;     if (iconWidth > iconHeight) {      height = (int) (width / ratio);     } else if (iconHeight > iconWidth) {      width = (int) (height * ratio);     }     final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888       : Bitmap.Config.RGB_565;     final Bitmap thumb = Bitmap.createBitmap(width, height, c);     final Canvas canvas = new Canvas(thumb);     canvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.DITHER_FLAG, 0));     mOldBounds.set(icon.getBounds());     icon.setBounds(0, 0, width, height);     icon.draw(canvas);     icon.setBounds(mOldBounds);     icon = info.icon = new BitmapDrawable(thumb);     info.filtered = true;    }   }   final TextView textView = (TextView) convertView.findViewById(R.id.label);   textView.setTextColor(Color.BLACK);   if (color != null && color.length() == 10) {    int col_int = ByteHelper.string2color(color);    textView.setTextColor(col_int);   }else {    textView.setTextColor(Color.BLUE);   }   textView.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null);   textView.setText(info.title);   return convertView;  } }

添加构造,并设置监听
  mGrid.setAdapter(new ApplicationsAdapter(Home_activity.this, mApplications));mGrid.setSelection(0);mGrid.setOnItemClickListener(new ApplicationLauncher());
监听
private class ApplicationLauncher implements AdapterView.OnItemClickListener {public void onItemClick(AdapterView parent, View v, int position, long id) {ApplicationInfo app = (ApplicationInfo) parent.getItemAtPosition(position);startActivity(app.intent);}}

更多相关文章

  1. Android调用系统相机onActivityResult返回参数data为null
  2. android系统学习笔记十二
  3. android系统自动浮动查询框的使用
  4. Android 开发系列6 安装Cordova及示例程序
  5. Android开机自动启动程序
  6. Android 自定义拨打电话程序段
  7. android 调用系统通讯录添加联系人,并将号码传值到相应的控件内
  8. Android图形系统之Surface、SurfaceView、SurfaceHolder及Surfac

随机推荐

  1. Android 对程序异常崩溃的捕捉
  2. 【Android】定位与解决anr错误记录
  3. Android:验证EditText输入框输入的手机号
  4. android activity之间传递bean类型数据
  5. Android APP开发集成工具
  6. Android View之组合控件实例(二)
  7. 蓝牙原理Android代码实现
  8. NDK is missing a "platforms" directory
  9. 苹果MAC操作系统上搭建Android开发平台环
  10. android GPS定位,定位城市称,经纬度