OSDN Git Service

Taskbar 1.1.4
authorfarmerbb <farmerbb@gmail.com>
Fri, 5 Aug 2016 15:45:01 +0000 (09:45 -0600)
committerfarmerbb <farmerbb@gmail.com>
Fri, 5 Aug 2016 15:45:01 +0000 (09:45 -0600)
• Fix recently reported crashes

app/src/main/java/com/farmerbb/taskbar/activity/ContextMenuActivity.java
app/src/main/java/com/farmerbb/taskbar/adapter/StartMenuAdapter.java
app/src/main/java/com/farmerbb/taskbar/adapter/TaskbarAdapter.java
app/src/main/java/com/farmerbb/taskbar/service/StartMenuService.java
app/src/main/java/com/farmerbb/taskbar/service/TaskbarService.java
app/src/main/java/com/farmerbb/taskbar/util/AppEntry.java
app/src/main/res/layout/start_menu_left.xml
app/src/main/res/layout/start_menu_right.xml
app/src/main/res/layout/start_menu_vertical_left.xml
app/src/main/res/layout/start_menu_vertical_right.xml

index 779ce29..7e61771 100644 (file)
@@ -21,7 +21,6 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
-import android.graphics.drawable.BitmapDrawable;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
@@ -159,7 +158,7 @@ public class ContextMenuActivity extends PreferenceActivity implements Preferenc
                             packageName,
                             componentName,
                             appName,
-                            ((BitmapDrawable) throwaway.resolveActivityInfo(getPackageManager(), 0).loadIcon(getPackageManager())).getBitmap(),
+                            throwaway.resolveActivityInfo(getPackageManager(), 0).loadIcon(getPackageManager()),
                             true));
                 }
                 break;
index ecbf323..2a7d47b 100644 (file)
@@ -22,7 +22,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
 import android.hardware.display.DisplayManager;
 import android.os.Build;
 import android.support.v4.content.LocalBroadcastManager;
@@ -66,7 +65,7 @@ public class StartMenuAdapter extends ArrayAdapter<AppEntry> {
         textView.setText(entry.getLabel());
 
         ImageView imageView = (ImageView) convertView.findViewById(R.id.icon);
-        imageView.setImageDrawable(new BitmapDrawable(getContext().getResources(), entry.getIcon()));
+        imageView.setImageDrawable(entry.getIcon(getContext()));
 
         LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.entry);
         layout.setOnClickListener(new View.OnClickListener() {
index eb4357d..0beae0e 100644 (file)
@@ -22,7 +22,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
 import android.hardware.display.DisplayManager;
 import android.os.Build;
 import android.support.v4.content.LocalBroadcastManager;
@@ -63,7 +62,7 @@ public class TaskbarAdapter extends ArrayAdapter<AppEntry> {
         if(pref.getString("position", "bottom_left").equals("bottom_right"))
             imageView.setRotationY(180);
 
-        imageView.setImageDrawable(new BitmapDrawable(getContext().getResources(), entry.getIcon()));
+        imageView.setImageDrawable(entry.getIcon(getContext()));
 
         LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.entry);
         layout.setOnClickListener(new View.OnClickListener() {
index c8b394d..3e3d6b7 100644 (file)
@@ -32,7 +32,6 @@ import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
 import android.hardware.display.DisplayManager;
 import android.net.Uri;
 import android.os.Build;
@@ -291,7 +290,7 @@ public class StartMenuService extends Service {
                                     appInfo.activityInfo.applicationInfo.packageName,
                                     appInfo.activityInfo.name).flattenToString(),
                             appInfo.loadLabel(pm).toString(),
-                            ((BitmapDrawable) appInfo.loadIcon(pm)).getBitmap(),
+                            appInfo.loadIcon(pm),
                             false));
                 }
 
index 6d1ca9b..7401db7 100644 (file)
@@ -31,7 +31,6 @@ import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
 import android.hardware.display.DisplayManager;
 import android.os.Build;
 import android.os.Handler;
@@ -409,7 +408,7 @@ public class TaskbarService extends Service {
                         usageStatsList6.get(i).getPackageName(),
                         intent.resolveActivity(pm).flattenToString(),
                         intent.resolveActivityInfo(pm, 0).loadLabel(pm).toString(),
-                        ((BitmapDrawable) intent.resolveActivityInfo(pm, 0).loadIcon(pm)).getBitmap(),
+                        intent.resolveActivityInfo(pm, 0).loadIcon(pm),
                         false));
             }
 
index 5e211a3..2210204 100644 (file)
 
 package com.farmerbb.taskbar.util;
 
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
 
 import java.io.ByteArrayOutputStream;
 import java.io.Serializable;
@@ -25,18 +30,19 @@ public class AppEntry implements Serializable {
     private String packageName;
     private String componentName;
     private String label;
-    private transient Bitmap icon;
+    private transient Drawable icon;
     private byte[] iconByteArray;
 
-    public AppEntry(String packageName, String componentName, String label, Bitmap icon, boolean shouldCompress) {
+    public AppEntry(String packageName, String componentName, String label, Drawable icon, boolean shouldCompress) {
         this.packageName = packageName;
         this.componentName = componentName;
         this.label = label;
         this.icon = icon;
 
-        if(shouldCompress) {
+        if(shouldCompress && icon instanceof BitmapDrawable) {
+            Bitmap bitmap = ((BitmapDrawable) icon).getBitmap();
             ByteArrayOutputStream stream = new ByteArrayOutputStream();
-            icon.compress(Bitmap.CompressFormat.PNG, 0, stream);
+            bitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
             iconByteArray = stream.toByteArray();
         }
     }
@@ -53,8 +59,14 @@ public class AppEntry implements Serializable {
         return label;
     }
 
-    public Bitmap getIcon() {
-        if(icon == null) icon = BitmapFactory.decodeByteArray(iconByteArray, 0, iconByteArray.length);
+    public Drawable getIcon(Context context) {
+        if(icon == null) {
+            if(iconByteArray != null)
+                icon = new BitmapDrawable(context.getResources(), BitmapFactory.decodeByteArray(iconByteArray, 0, iconByteArray.length));
+            else try {
+                icon = context.getPackageManager().getActivityIcon(ComponentName.unflattenFromString(componentName));
+            } catch (PackageManager.NameNotFoundException e) { /* Gracefully fail */ }
+        }
         return icon;
     }
 }
\ No newline at end of file
index 4f42c00..bd7f899 100644 (file)
@@ -62,7 +62,7 @@
                     android:layout_width="@dimen/start_menu_width"
                     android:layout_height="wrap_content"
                     android:background="@android:color/white"
-                    android:queryBackground="@null"
+                    android:queryBackground="@android:color/transparent"
                     android:iconifiedByDefault="false" />
 
         </FrameLayout>
index 4f42c00..bd7f899 100644 (file)
@@ -62,7 +62,7 @@
                     android:layout_width="@dimen/start_menu_width"
                     android:layout_height="wrap_content"
                     android:background="@android:color/white"
-                    android:queryBackground="@null"
+                    android:queryBackground="@android:color/transparent"
                     android:iconifiedByDefault="false" />
 
         </FrameLayout>
index 5647dcc..382c10d 100644 (file)
@@ -64,7 +64,7 @@
                     android:layout_width="@dimen/start_menu_width"
                     android:layout_height="wrap_content"
                     android:background="@android:color/white"
-                    android:queryBackground="@null"
+                    android:queryBackground="@android:color/transparent"
                     android:iconifiedByDefault="false" />
 
         </FrameLayout>
index 9b2bf3d..9ed0513 100644 (file)
@@ -64,7 +64,7 @@
                     android:layout_width="@dimen/start_menu_width"
                     android:layout_height="wrap_content"
                     android:background="@android:color/white"
-                    android:queryBackground="@null"
+                    android:queryBackground="@android:color/transparent"
                     android:iconifiedByDefault="false" />
 
         </FrameLayout>