`
v5browser
  • 浏览: 1134459 次
社区版块
存档分类
最新评论

android的快捷方式——应用程序界面

 
阅读更多

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);
}
}
分享到:
评论

相关推荐

    《Android应用开发揭秘》附带光盘代码.

     1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android开发环境搭建  2.1 Android开发准备工作  2.2 开发包及其工具的安装和  配置  2.2.1 安装JDK和...

    《Android应用开发揭秘》源码

     1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android开发环境搭建  2.1 Android开发准备工作  2.2 开发包及其工具的安装和配置  2.2.1 安装JDK和配置...

    Android高级编程--源代码

    作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并...

    Android应用开发揭秘pdf高清版

    1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 Android开发准备工作 2.2 开发包及其工具的安装和 配置 2.2.1 安装JDK和配置Java开发 环境 ...

    android开发揭秘PDF

    1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 Android开发准备工作 2.2 开发包及其工具的安装和 配置 2.2.1 安装JDK和配置Java开发 环境 ...

    《Android高级编程》

    《Android高级编程》首先简要介绍Android软件栈,接着陈述为手机创建稳定可靠、赏心悦目的应用程序的基本原理。通过学习,您可以打下牢固的理论根基,了解使用当前Android 1.0 SDK编写定制移动程序所需的知识,还能...

    灵巧锁屏——安卓系统

    还在羡慕Sense 3.0那...本程序具有丰富的设置选项:字体设置,字体颜色,字体大小,背景设置,快捷方式设置等,一定能很好的满足您的各种需求。 本程序将持续更新,希望您随时将使用建议发给我。 ainanoha@163.com ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

    YYjia安卓应用市场网站系统最新官方版

    经过专业开发团队长时间的积累升华,一款服务于站长的贴心助手——应用+(www.yyjia.com)成功面世。它能够协助站长在极短的时间里快速搭建APP网站的基础架构,让更多没有移动互联网技术的人们也能参与到移动互联网的...

    YYjia IOS应用市场网站系统最新官方版

    经过专业开发团队长时间的积累升华,一款服务于站长的贴心助手——应用+(www.yyjia.com)成功面世。它能够协助站长在极短的时间里快速搭建APP网站的基础架构,让更多没有移动互联网技术的人们也能参与到移动互联网的...

    应用+安卓数据管理系统 v1.4 正式版

    经过专业开发团队长时间的积累升华,一款服务于站长的贴心助手——应用+(www.yyjia.com)成功面世。它能够协助站长在极短的时间里快速搭建APP网站的基础架构,让更多没有移动互联网技术的人们也能参与到移动互联网的...

    java安卓开发外卖订餐系统课程设计.doc

    2 2.1 产品的状况 2 2.2 产品的功能 2 2.3 用户类和特性 3 2.4 开发环境 3 2.5 目标平台 3 3 外部接口需求 4 3.1 用户界面 4 3.2 硬件接口 4 3.3 软件接口 4 4 系统功能需求 4 5 其它非功能需求 5 5.1 性能需求 5 ...

Global site tag (gtag.js) - Google Analytics