Last active
August 29, 2015 14:15
-
-
Save frogermcs/e2d00a89cef336779bf1 to your computer and use it in GitHub Desktop.
InstaMaterial source files (photo capture)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="io.github.froger.instamaterial"> | |
<!--...--> | |
<uses-permission android:name="android.permission.CAMERA" /> | |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |
<uses-feature | |
android:name="android.hardware.camera" | |
android:required="true" /> | |
<uses-feature | |
android:name="android.hardware.camera.front" | |
android:required="false" /> | |
<uses-feature | |
android:name="android.hardware.camera.autofocus" | |
android:required="false" /> | |
<application | |
android:name=".InstaMaterialApplication" | |
android:icon="@drawable/ic_launcher" | |
android:label="@string/app_name" | |
android:theme="@style/AppTheme"> | |
<!--...--> | |
</application> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="io.github.froger.instamaterial"> | |
<!--...--> | |
<activity | |
android:name=".ui.activity.TakePhotoActivity" | |
android:screenOrientation="portrait" | |
android:theme="@style/AppTheme.TransparentActivity.FullScreen" /> | |
<!--...--> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<!--btn_capture.xml--> | |
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | |
<item> | |
<shape android:shape="oval"> | |
<solid android:color="#458dca" /> | |
</shape> | |
</item> | |
<item | |
android:bottom="16dp" | |
android:left="16dp" | |
android:right="16dp" | |
android:top="16dp"> | |
<shape android:shape="oval"> | |
<solid android:color="#529bd8" /> | |
</shape> | |
</item> | |
<item> | |
<shape android:shape="oval"> | |
<stroke | |
android:width="2dp" | |
android:color="#ffffff" | |
android:dashWidth="0dp" /> | |
</shape> | |
</item> | |
</layer-list> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<!--btn_capture_options.xml--> | |
<shape xmlns:android="http://schemas.android.com/apk/res/android" | |
android:shape="oval"> | |
<stroke | |
android:width="1dp" | |
android:color="#ffffff" | |
android:dashWidth="0dp" /> | |
</shape> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyCameraHost extends SimpleCameraHost { | |
private Camera.Size previewSize; | |
public MyCameraHost(Context ctxt) { | |
super(ctxt); | |
} | |
@Override | |
public boolean useFullBleedPreview() { | |
return true; | |
} | |
@Override | |
public Camera.Size getPictureSize(PictureTransaction xact, Camera.Parameters parameters) { | |
return previewSize; | |
} | |
@Override | |
public Camera.Parameters adjustPreviewParameters(Camera.Parameters parameters) { | |
Camera.Parameters parameters1 = super.adjustPreviewParameters(parameters); | |
previewSize = parameters1.getPreviewSize(); | |
return parameters1; | |
} | |
@Override | |
public void saveImage(PictureTransaction xact, final Bitmap bitmap) { | |
runOnUiThread(new Runnable() { | |
@Override | |
public void run() { | |
showTakenPicture(bitmap); | |
} | |
}); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<!-- styles.xml--> | |
<resources> | |
<!--...--> | |
<style name="AppTheme.TransparentActivity.FullScreen"> | |
<item name="android:windowFullscreen">true</item> | |
</style> | |
<!--...--> | |
</resources> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TakePhotoActivity extends BaseActivity implements RevealBackgroundView.OnStateChangeListener { | |
@InjectView(R.id.vUpperPanel) | |
ViewSwitcher vUpperPanel; | |
@InjectView(R.id.vLowerPanel) | |
ViewSwitcher vLowerPanel; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
//... | |
vUpperPanel.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { | |
@Override | |
public boolean onPreDraw() { | |
vUpperPanel.getViewTreeObserver().removeOnPreDrawListener(this); | |
vUpperPanel.setTranslationY(-vUpperPanel.getHeight()); | |
vLowerPanel.setTranslationY(vLowerPanel.getHeight()); | |
return true; | |
} | |
}); | |
} | |
@Override | |
public void onStateChange(int state) { | |
if (RevealBackgroundView.STATE_FINISHED == state) { | |
vTakePhotoRoot.setVisibility(View.VISIBLE); | |
startIntroAnimation(); | |
} else { | |
vTakePhotoRoot.setVisibility(View.INVISIBLE); | |
} | |
} | |
private void startIntroAnimation() { | |
vUpperPanel.animate().translationY(0).setDuration(400).setInterpolator(DECELERATE_INTERPOLATOR); | |
vLowerPanel.animate().translationY(0).setDuration(400).setInterpolator(DECELERATE_INTERPOLATOR).start(); | |
} | |
//... | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TakePhotoActivity extends BaseActivity implements RevealBackgroundView.OnStateChangeListener, | |
CameraHostProvider { | |
//... | |
private void showTakenPicture(Bitmap bitmap) { | |
vUpperPanel.showNext(); | |
vLowerPanel.showNext(); | |
ivTakenPhoto.setImageBitmap(bitmap); | |
updateState(STATE_SETUP_PHOTO); | |
} | |
@Override | |
public void onBackPressed() { | |
if (currentState == STATE_SETUP_PHOTO) { | |
btnTakePhoto.setEnabled(true); | |
vUpperPanel.showNext(); | |
vLowerPanel.showNext(); | |
updateState(STATE_TAKE_PHOTO); | |
} else { | |
super.onBackPressed(); | |
} | |
} | |
private void updateState(int state) { | |
currentState = state; | |
if (currentState == STATE_TAKE_PHOTO) { | |
vUpperPanel.setInAnimation(this, R.anim.slide_in_from_right); | |
vLowerPanel.setInAnimation(this, R.anim.slide_in_from_right); | |
vUpperPanel.setOutAnimation(this, R.anim.slide_out_to_left); | |
vLowerPanel.setOutAnimation(this, R.anim.slide_out_to_left); | |
new Handler().postDelayed(new Runnable() { | |
@Override | |
public void run() { | |
ivTakenPhoto.setVisibility(View.GONE); | |
} | |
}, 400); | |
} else if (currentState == STATE_SETUP_PHOTO) { | |
vUpperPanel.setInAnimation(this, R.anim.slide_in_from_left); | |
vLowerPanel.setInAnimation(this, R.anim.slide_in_from_left); | |
vUpperPanel.setOutAnimation(this, R.anim.slide_out_to_right); | |
vLowerPanel.setOutAnimation(this, R.anim.slide_out_to_right); | |
ivTakenPhoto.setVisibility(View.VISIBLE); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TakePhotoActivity extends BaseActivity implements RevealBackgroundView.OnStateChangeListener, | |
CameraHostProvider { | |
//... | |
@OnClick(R.id.btnTakePhoto) | |
public void onTakePhotoClick() { | |
btnTakePhoto.setEnabled(false); | |
cameraView.takePicture(true, false); | |
animateShutter(); | |
} | |
private void animateShutter() { | |
vShutter.setVisibility(View.VISIBLE); | |
vShutter.setAlpha(0.f); | |
ObjectAnimator alphaInAnim = ObjectAnimator.ofFloat(vShutter, "alpha", 0f, 0.8f); | |
alphaInAnim.setDuration(100); | |
alphaInAnim.setStartDelay(100); | |
alphaInAnim.setInterpolator(ACCELERATE_INTERPOLATOR); | |
ObjectAnimator alphaOutAnim = ObjectAnimator.ofFloat(vShutter, "alpha", 0.8f, 0f); | |
alphaOutAnim.setDuration(200); | |
alphaOutAnim.setInterpolator(DECELERATE_INTERPOLATOR); | |
AnimatorSet animatorSet = new AnimatorSet(); | |
animatorSet.playSequentially(alphaInAnim, alphaOutAnim); | |
animatorSet.addListener(new AnimatorListenerAdapter() { | |
@Override | |
public void onAnimationEnd(Animator animation) { | |
vShutter.setVisibility(View.GONE); | |
} | |
}); | |
animatorSet.start(); | |
} | |
//... | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment