package com.vinaysshenoy.okulusdemo.fragments; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.vinaysshenoy.okulus.OkulusImageView; import com.vinaysshenoy.okulusdemo.R; import com.vinaysshenoy.okulusdemo.utils.RawBitmapManager; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by vinay.shenoy on 24/07/14. */ public class ComparisonFragment extends Fragment { private OkulusImageView mOkulusImageView; private ImageView mNormalImageView; private ExecutorService mPool; private Handler mHandler = new Handler(Looper.getMainLooper()); private boolean mPaused; @Override public View onCreateView(final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) { mPool = Executors.newSingleThreadExecutor(); final View content = inflater.inflate(R.layout.fragment_comparison, container, false); mOkulusImageView = (OkulusImageView) content.findViewById(R.id.image_okulus); mNormalImageView = (ImageView) content.findViewById(R.id.image_normal); return content; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); loadBitmaps(); } private void loadBitmaps() { mPool.submit(new LoadBitmapRunnable(mOkulusImageView, R.raw.img_6, 128, 128)); mPool.submit(new LoadBitmapRunnable(mNormalImageView, R.raw.img_6, 128, 128)); } @Override public void onPause() { super.onPause(); mPool.shutdownNow(); mPaused = true; } @Override public void onResume() { super.onResume(); mPaused = false; } private class LoadBitmapRunnable implements Runnable { private int mResourceId; private int mTargetWidth, mTargetHeight; private ImageView mImageView; public LoadBitmapRunnable(ImageView imageView, int resourceId, int targetWidth, int targetheight) { mImageView = imageView; mResourceId = resourceId; mTargetWidth = targetWidth; mTargetHeight = targetheight; } @Override public void run() { final Bitmap bitmap = RawBitmapManager.INSTANCE.getBitmap( mImageView.getContext(), mResourceId, mTargetWidth, mTargetHeight); if (!mPaused && bitmap != null) { mHandler.post(new Runnable() { @Override public void run() { mImageView.setImageBitmap(bitmap); } }); } } } }