Merge pull request #1346 from reicast/lk/abandoned

Android: Update XMLParser for API 26 standards
This commit is contained in:
Abandoned Cart 2018-08-27 11:15:32 -04:00 committed by GitHub
commit 52788ea9fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 57 additions and 51 deletions

View File

@ -149,9 +149,29 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
boxart = (Element) images.getElementsByTagName("boxart").item(0); boxart = (Element) images.getElementsByTagName("boxart").item(0);
} }
if (boxart != null) { if (boxart != null) {
(new decodeBitmapIcon()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, decodeBitmapIcon icon = new decodeBitmapIcon(mContext.get());
"https://cdn.thegamesdb.net/images/thumb/" + getElementValue( icon.setListener(new decodeBitmapIcon.decodeBitmapIconListener() {
boxart).replace("original/", "")); @Override
public void onDecodeBitmapIconFinished(Bitmap gameImage) {
if (childview.get() != null && gameImage != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
((ImageView) childview.get().findViewById(
R.id.item_icon)).setImageTintList(null);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
game_icon = new BitmapDrawable(
mContext.get().getResources(), gameImage);
} else {
game_icon = new BitmapDrawable(gameImage);
}
((ImageView) childview.get().findViewById(
R.id.item_icon)).setImageDrawable(game_icon);
}
}
});
icon.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
"https://cdn.thegamesdb.net/images/thumb/"
+ getElementValue(boxart).replace("original/", ""));
} }
} }
} }
@ -160,39 +180,16 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
} }
} }
if (childview.get() != null) if (childview.get() != null) {
((TextView) childview.get().findViewById(R.id.item_name)).setText(game_name); ((TextView) childview.get().findViewById(R.id.item_name)).setText(game_name);
if (mPrefs.getBoolean(Config.pref_gamedetails, false)) { if (mPrefs.getBoolean(Config.pref_gamedetails, false)) {
childview.get().findViewById(R.id.childview).setOnLongClickListener( childview.get().findViewById(R.id.childview).setOnLongClickListener(
new OnLongClickListener() { new OnLongClickListener() {
public boolean onLongClick(View view) { public boolean onLongClick(View view) {
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext.get()); new AlertDialog.Builder(mContext.get()).setCancelable(true).setIcon(game_icon)
builder.setCancelable(true); .setTitle(mContext.get().getString(R.string.game_details, game_name))
builder.setTitle(mContext.get().getString(R.string.game_details, game_name)); .setMessage(game_details).create().show();
builder.setMessage(game_details);
builder.setIcon(game_icon);
builder.setNegativeButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setPositiveButton("Launch",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
mCallback.onGameSelected(game != null
? Uri.fromFile(game) : Uri.EMPTY);
try {
((Vibrator) mContext.get().getSystemService(
Context.VIBRATOR_SERVICE)).vibrate(250);
} catch (Exception e) {
// Vibration unavailable
}
}
});
builder.create().show();
return true; return true;
} }
}); });
@ -200,6 +197,7 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
childview.get().setTag(game_name); childview.get().setTag(game_name);
} }
}
private void initializeDefaults() { private void initializeDefaults() {
game_details = mContext.get().getString(R.string.info_unavailable); game_details = mContext.get().getString(R.string.info_unavailable);
@ -292,7 +290,14 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
return ""; return "";
} }
private class decodeBitmapIcon extends AsyncTask<String, Integer, Bitmap> { private static class decodeBitmapIcon extends AsyncTask<String, Integer, Bitmap> {
private WeakReference<Context> mContext;
private decodeBitmapIconListener listener;
decodeBitmapIcon(Context reference) {
this.mContext = new WeakReference<>(reference);
}
@Override @Override
protected Bitmap doInBackground(String... params) { protected Bitmap doInBackground(String... params) {
try { try {
@ -352,17 +357,18 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
@Override @Override
protected void onPostExecute(Bitmap gameImage) { protected void onPostExecute(Bitmap gameImage) {
if (gameImage != null) { super.onPostExecute(gameImage);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (listener != null) {
((ImageView) childview.get().findViewById(R.id.item_icon)).setImageTintList(null); listener.onDecodeBitmapIconFinished(gameImage);
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
game_icon = new BitmapDrawable(mContext.get().getResources(), gameImage);
} else {
game_icon = new BitmapDrawable(gameImage);
}
((ImageView) childview.get().findViewById(R.id.item_icon)).setImageDrawable(game_icon);
} }
void setListener(decodeBitmapIconListener listener) {
this.listener = listener;
}
public interface decodeBitmapIconListener {
void onDecodeBitmapIconFinished(Bitmap gameImage);
} }
} }
} }