Add animating watermark

pull/502/head
Mattia Iavarone 6 years ago
parent bff7bc4320
commit 6ba45ed1d7
  1. 23
      demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java
  2. 17
      demo/src/main/res/layout/activity_camera.xml

@ -1,5 +1,7 @@
package com.otaliastudios.cameraview.demo; package com.otaliastudios.cameraview.demo;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -7,6 +9,7 @@ import android.os.Bundle;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.bottomsheet.BottomSheetBehavior;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.interpolator.view.animation.FastOutSlowInInterpolator;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
@ -66,7 +69,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
controlPanel = findViewById(R.id.controls); controlPanel = findViewById(R.id.controls);
ViewGroup group = (ViewGroup) controlPanel.getChildAt(0); ViewGroup group = (ViewGroup) controlPanel.getChildAt(0);
View watermark = findViewById(R.id.watermark); final View watermark = findViewById(R.id.watermark);
List<Option<?>> options = Arrays.asList( List<Option<?>> options = Arrays.asList(
// Layout // Layout
@ -112,6 +115,24 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis
b.setState(BottomSheetBehavior.STATE_HIDDEN); b.setState(BottomSheetBehavior.STATE_HIDDEN);
} }
}); });
// Animate the watermark just to show we record the animation in video snapshots
ValueAnimator animator = ValueAnimator.ofFloat(1F, 0.8F);
animator.setDuration(300);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setRepeatMode(ValueAnimator.REVERSE);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
float rotation = 0;
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float scale = (float) animation.getAnimatedValue();
rotation += 2;
watermark.setScaleX(scale);
watermark.setScaleY(scale);
watermark.setRotation(rotation);
}
});
animator.start();
} }
private void message(String content, boolean important) { private void message(String content, boolean important) {

@ -32,28 +32,17 @@
app:cameraAutoFocusMarker="@string/cameraview_default_autofocus_marker"> app:cameraAutoFocusMarker="@string/cameraview_default_autofocus_marker">
<!-- Watermark --> <!-- Watermark -->
<LinearLayout <ImageView
android:id="@+id/watermark" android:id="@+id/watermark"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="bottom|end" android:layout_gravity="bottom|end"
app:layout_isOverlay="true" app:layout_isOverlay="true"
app:layout_drawOnPreview="true" app:layout_drawOnPreview="true"
app:layout_drawOnVideoSnapshot="true" app:layout_drawOnVideoSnapshot="true"
app:layout_drawOnPictureSnapshot="true" app:layout_drawOnPictureSnapshot="true"
android:gravity="center" android:src="@mipmap/cameraview"
android:padding="8dp"> android:padding="8dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/cameraview" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Watermark"
android:textColor="@android:color/white" />
</LinearLayout>
</com.otaliastudios.cameraview.CameraView> </com.otaliastudios.cameraview.CameraView>

Loading…
Cancel
Save