android 获取应用列表,获取全部应用列表

有时需对已安装的应用进行管理 , 这里我简单的写了获取应用程序列表。

代码如下:

package com.lml.applicationtest;

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.content.pm.PackageInfo;

import android.content.pm.PackageManager;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Matrix;

import android.graphics.PixelFormat;

import android.graphics.drawable.BitmapDrawable;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.TextView;

public class MainActivity extends Activity {

private ListView lv;

private List pakageinfos;

private PackageManager pm;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lv = (ListView) findViewById(R.id.list);

makeList();

}

private void makeList() {

pm = getPackageManager();

pakageinfos = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);

lv.setAdapter(new MyAdapter(this));

}

private class MyAdapter extends BaseAdapter {

private Context context;// 用于接收传递过来的Context对象

public MyAdapter(Context context) {

this.context = context;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return pakageinfos.size();

}

@Override

public Object getItem(int arg0) {

// TODO Auto-generated method stub

return arg0;

}

@Override

public long getItemId(int arg0) {

// TODO Auto-generated method stub

return arg0;

}

@Override

public View getView(int arg0, View arg1, ViewGroup arg2) {

// TODO Auto-generated method stub

PackageInfo info = pakageinfos.get(arg0);

View view = View.inflate(context, R.layout.item, null);

Drawable drawable=info.applicationInfo.loadIcon(pm);

((ImageView) view.findViewById(R.id.iv)).setImageDrawable(zoomDrawable(drawable,50,50));

((TextView) view.findViewById(R.id.tv)).setText(info.applicationInfo.loadLabel(pm));

return view;

}

}

private Bitmap drawableToBitmap(Drawable drawable)// drawable 转换成bitmap

{

int width = drawable.getIntrinsicWidth(); // 取drawable的长宽

int height = drawable.getIntrinsicHeight();

Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888

: Bitmap.Config.RGB_565; // 取drawable的颜色格式

Bitmap bitmap = Bitmap.createBitmap(width, height, config); // 建立对应bitmap

Canvas canvas = new Canvas(bitmap); // 建立对应bitmap的画布

drawable.setBounds(0, 0, width, height);

drawable.draw(canvas); // 把drawable内容画到画布中

return bitmap;

}

private Drawable zoomDrawable(Drawable drawable, int w, int h)

{

int width = drawable.getIntrinsicWidth();

int height= drawable.getIntrinsicHeight();

Bitmap oldbmp = drawableToBitmap(drawable);// drawable转换成bitmap

Matrix matrix = new Matrix();   // 创建操作图片用的Matrix对象

float scaleWidth = ((float)w / width);   // 计算缩放比例

float scaleHeight = ((float)h / height);

matrix.postScale(scaleWidth, scaleHeight);         // 设置缩放比例

Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height, matrix, true);       // 建立新的bitmap,其内容是对原bitmap的缩放后的图

return new BitmapDrawable(getResources() ,newbmp);       // 把bitmap转换成drawable并返回

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值