사용자가 설치 한 응용 프로그램의 listView가 있습니다. 각 목록 항목에는 끝에 응용 프로그램 이름, 패키지 이름, 아이콘 및 체크 상자가 있습니다. 확인란을 선택하면 listView 항목에서 애플리케이션 아이콘을 가져 오려면 (예 : '뉴스'의 애플리케이션을 선택하면 '뉴스'애플리케이션 아이콘이 표시됨) 비트 맵으로 바뀝니다.체크 상자의 onClick 메서드는 아이콘을 비트 맵으로 변환합니다.
이 같은 필요한 정보를로드하고 있습니다 :
/ load controls from layout resources
ImageView ivAppIcon = (ImageView) v.findViewById(R.id.ivIcon);
TextView tvAppName = (TextView) v.findViewById(R.id.tvName);
TextView tvPkgName = (TextView) v.findViewById(R.id.tvPack);
final CheckBox addCheckbox = (CheckBox) v
.findViewById(R.id.addCheckbox);
Log.d("AppInfoAdapter", "Controls from layout Resources Loaded");
// set data to display
ivAppIcon.setImageDrawable(entry.loadIcon(mPackManager));
tvAppName.setText(entry.activityInfo.loadLabel(mPackManager));
tvPkgName.setText(entry.activityInfo.packageName);
Log.d("AppInfoAdapter", "Data Set To Display");
나는 이미 한 가지 방법을 시도했다, 그러나 나는 그것이 내가 생각하는 방법을 작동하지 않는 것을 의심하고, 그래서 내가 원하는 두 번째 의견.
addCheckbox
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (addCheckbox.isChecked()) {
System.out.println("Checked");
PackageManager pm = mContext.getPackageManager();
Drawable icon = null;
try {
icon = pm
.getApplicationIcon(entry.activityInfo.packageName);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Drawable default_icon = pm.getDefaultActivityIcon();
if (icon instanceof BitmapDrawable
&& default_icon instanceof BitmapDrawable) {
BitmapDrawable icon_bd = (BitmapDrawable) icon;
Bitmap icon_b = icon_bd.getBitmap();
BitmapDrawable default_bd = (BitmapDrawable) pm
.getDefaultActivityIcon();
Bitmap default_b = default_bd.getBitmap();
if (icon_b == default_b) {
// It's the default icon
scaleDownBitmap(default_b, 100, v.getContext());
Log.d("AppInfoAdapter", "Scale Bitmap Chosen");
을하지만 그것에 대해 생각 후에, 나는이?
if (addCheckbox.isChecked()) {
System.out.println("Checked");
ImageView imgV = (ImageView) findViewById(R.id.ivIcon);
imgV.buildDrawingCache();
Bitmap default_b = imgV.getDrawingCache();
// It's the default icon
scaleDownBitmap(default_b, 100, v.getContext());
Log.d("AppInfoAdapter", "Scale Bitmap Chosen");
또는이 같은도 뭔가 같이 할 수 있습니다 :
if (addCheckbox.isChecked()) {
System.out.println("Checked");
Bitmap default_b = ((BitmapDrawable)ivAppIcon.getDrawable()).getBitmap();
// It's the default icon
scaleDownBitmap(default_b, 100, v.getContext());
Log.d("AppInfoAdapter", "Scale Bitmap Chosen");
I를 여기에 내가 현재하고있는 무슨이다 이를 수행하는 방법에 대한 두 번째 의견이 필요합니다. 도와주세요!
예, 그게 문제였습니다. 그러나, 나는 완전히 대답하려고 애를 썼다. 왜냐하면 그것은 내가 완전히하려고하는 것을 통과하는데 도움이 되었기 때문이다 (유일한 차이점은 다른 클래스의 스트림에서 비트 맵을 얻는다는 것이다). 내일까지이 내용을 테스트 할 수 없으므로 계속 업데이트 해 드리겠습니다. 다시 한번 감사드립니다. :) – user2909006