Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Ok, so this seems to work and I will provide the code to save Java frustration for anyone else flustered by this. It's probably not the prettiest, but so far(knock wood) I have not seen any further Out of memory errors.</p> <pre><code>import android.app.Activity; import android.content.res.Resources; import android.database.Cursor; import android.database.sqlite.SQLiteException; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.Toast; import android.widget.ViewSwitcher.ViewFactory; public class CardViewImageActivity extends Activity implements ViewFactory { private CardDBAdapter mDbHelper; private String _cardImgGuidFront; private String _cardImgGuidBack; private Boolean frontShowing = false; private Boolean hasFront = false; private Boolean hasBack = false; private Drawable front; private Drawable back; private int cardId; private ImageSwitcher iSwitcher; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cert_view_image); iSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher); iSwitcher.setFactory(this); iSwitcher.setOnClickListener(SwitcherOnClick); Resources res = getResources(); BitmapFactory.Options o = new BitmapFactory.Options(); o.inSampleSize = 2; this.cardId = Integer.parseInt(getIntent().getExtras().getString( "cardId")); //$NON-NLS-1$ getCardImageGuids(this.cardId); if(_cardImgGuidFront != null) { hasFront = true; String frontPath = Environment.getExternalStorageDirectory().toString() + "/" + _cardImgGuidFront + ".jpg"; front = new BitmapDrawable(res, BitmapFactory.decodeFile(frontPath, o)); } if(_cardImgGuidBack != null) { hasBack = true; String backPath = Environment.getExternalStorageDirectory().toString() + "/" + _cardImgGuidBack + ".jpg"; back = new BitmapDrawable(res, BitmapFactory.decodeFile(backPath, o)); } if(hasFront &amp;&amp; hasBack) Toast.makeText(this, R.string.card_view_touch, Toast.LENGTH_SHORT).show(); if(hasFront) { iSwitcher.setImageDrawable(front); frontShowing = true; } else if(hasBack) { iSwitcher.setImageDrawable(back); frontShowing = false; } else { Toast.makeText(this, R.string.card_no_image, Toast.LENGTH_SHORT).show(); } res = null; } @Override public void onPause() { super.onPause(); } @Override public void onDestroy() { front = null; back = null; super.onDestroy(); } public View makeView() { ImageView iView = new ImageView(this); iView.setScaleType(ImageView.ScaleType.FIT_CENTER); iView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); return iView; } protected OnClickListener SwitcherOnClick = new OnClickListener() { @Override public void onClick(View v) { if(frontShowing &amp;&amp; hasBack) { iSwitcher.setImageDrawable(back); frontShowing = false; } else if(!frontShowing &amp;&amp; hasFront) { iSwitcher.setImageDrawable(front); frontShowing = true; } else { } } }; private void getCardImageGuids(int cardId) { ... // Put your db logic retrieval for the img id here } } </code></pre> <p>I hope this solution (and ACTUAL code) helps someone else.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload