Spherical/app/src/main/java/de/trac/spherical/SphereFragment.java

83 lines
2.4 KiB
Java

package de.trac.spherical;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.view.GestureDetectorCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import butterknife.BindView;
import butterknife.ButterKnife;
import de.trac.spherical.rendering.PhotoSphereSurfaceView;
/**
* Fragment containing a PhotoSphereSurfaceView which displays the image projected on a sphere.
*/
public class SphereFragment extends ImageFragment implements View.OnTouchListener {
private static final String TAG = "SphericalSFrag";
@BindView(R.id.container_sphere)
FrameLayout frameLayout;
private PhotoSphereSurfaceView surfaceView;
private Bitmap bitmap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sphere, parent, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
setHasOptionsMenu(true);
surfaceView = new PhotoSphereSurfaceView(getContext());
// Initialize renderer and setup surface view.
frameLayout.addView(surfaceView);
surfaceView.setOnTouchListener(this);
updateBitmap(bitmap);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
MainActivity activity = ((MainActivity)getActivity());
if (activity != null) {
return activity.getGestureDetector().onTouchEvent(event);
}
return false;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_sphere, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
@Override
public void updateBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
if (surfaceView != null && bitmap != null) {
surfaceView.setBitmap(bitmap);
}
}
public PhotoSphereSurfaceView getSurfaceView() {
return surfaceView;
}
}