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

@ -138,7 +138,7 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
xmlParser.execute(game_name);
} else {
game_name = getValue(root, "GameTitle") + " ["
+ FilenameUtils.getExtension(game.getName())
+ FilenameUtils.getExtension(game.getName())
.toUpperCase(Locale.getDefault()) + "]";
game_details = getValue(root, "Overview");
Element images = (Element) root.getElementsByTagName("Images").item(0);
@ -149,9 +149,29 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
boxart = (Element) images.getElementsByTagName("boxart").item(0);
}
if (boxart != null) {
(new decodeBitmapIcon()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
"https://cdn.thegamesdb.net/images/thumb/" + getElementValue(
boxart).replace("original/", ""));
decodeBitmapIcon icon = new decodeBitmapIcon(mContext.get());
icon.setListener(new decodeBitmapIcon.decodeBitmapIconListener() {
@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,45 +180,23 @@ 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);
if (mPrefs.getBoolean(Config.pref_gamedetails, false)) {
childview.get().findViewById(R.id.childview).setOnLongClickListener(
new OnLongClickListener() {
public boolean onLongClick(View view) {
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext.get());
builder.setCancelable(true);
builder.setTitle(mContext.get().getString(R.string.game_details, game_name));
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;
}
});
}
if (mPrefs.getBoolean(Config.pref_gamedetails, false)) {
childview.get().findViewById(R.id.childview).setOnLongClickListener(
new OnLongClickListener() {
public boolean onLongClick(View view) {
new AlertDialog.Builder(mContext.get()).setCancelable(true).setIcon(game_icon)
.setTitle(mContext.get().getString(R.string.game_details, game_name))
.setMessage(game_details).create().show();
return true;
}
});
}
childview.get().setTag(game_name);
childview.get().setTag(game_name);
}
}
private void initializeDefaults() {
@ -292,7 +290,14 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
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
protected Bitmap doInBackground(String... params) {
try {
@ -352,17 +357,18 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
@Override
protected void onPostExecute(Bitmap gameImage) {
if (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);
super.onPostExecute(gameImage);
if (listener != null) {
listener.onDecodeBitmapIconFinished(gameImage);
}
}
void setListener(decodeBitmapIconListener listener) {
this.listener = listener;
}
public interface decodeBitmapIconListener {
void onDecodeBitmapIconFinished(Bitmap gameImage);
}
}
}