Change background animation in IntroActivity from Video to GIF.

The video background animation was giving errors on Android Lollipop and wasn't displaying correctly. Searching on the internet I found that the encoding of the video could be the problem but tested with many different encoding profiles (H.264 high, main, baseline) and none of them solved the issue so I finally gave up and converted the video back to a GIF and used that one.
This commit is contained in:
Severiano Jaramillo 2018-10-25 11:51:53 -05:00
parent 4ba6299822
commit 36d97e8166
6 changed files with 68 additions and 78 deletions

View file

@ -11,6 +11,11 @@ kapt {
} }
} }
repositories {
mavenCentral()
maven { url 'https://maven.google.com' }
}
android { android {
compileSdkVersion 27 compileSdkVersion 27
defaultConfig { defaultConfig {
@ -65,9 +70,6 @@ dependencies {
//testCompile 'com.android.support.test:runner:1.0.1' //testCompile 'com.android.support.test:runner:1.0.1'
implementation 'com.afollestad.material-dialogs:core:0.9.6.0' implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.github.bumptech.glide:glide:4.7.1'
// Glide v4 uses this new annotation processor -- see https://bumptech.github.io/glide/doc/generatedapi.html
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
implementation 'com.android.support:support-v4:27.1.1' implementation 'com.android.support:support-v4:27.1.1'
implementation 'com.android.support:design:27.1.1' implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1' implementation 'com.android.support:cardview-v7:27.1.1'
@ -119,5 +121,9 @@ dependencies {
kapt "android.arch.lifecycle:compiler:1.1.1" kapt "android.arch.lifecycle:compiler:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.0" kapt "android.arch.persistence.room:compiler:1.1.0"
// Glide dependencies
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
debugImplementation 'com.amitshekhar.android:debug-db:1.0.4' debugImplementation 'com.amitshekhar.android:debug-db:1.0.4'
} }

View file

@ -23,3 +23,10 @@
# If you keep the line number information, uncomment this to # If you keep the line number information, uncomment this to
# hide the original source file name. # hide the original source file name.
#-renamesourcefileattribute SourceFile #-renamesourcefileattribute SourceFile
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}

View file

@ -2,15 +2,15 @@ package cy.agorise.crystalwallet.activities;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent; import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.thekhaeng.pushdownanim.PushDownAnim; import com.thekhaeng.pushdownanim.PushDownAnim;
import butterknife.BindView; import butterknife.BindView;
@ -22,19 +22,19 @@ import cy.agorise.crystalwallet.viewmodels.AccountSeedListViewModel;
public class IntroActivity extends CustomActivity { public class IntroActivity extends CustomActivity {
@BindView(R.id.surface_view) @BindView(R.id.ivAnimation)
public SurfaceView mSurfaceView; ImageView ivAnimation;
@BindView(R.id.btnCreateAccount) @BindView(R.id.btnCreateAccount)
public Button btnCreateAccount; Button btnCreateAccount;
@BindView(R.id.btnImportAccount) @BindView(R.id.btnImportAccount)
public Button btnImportAccount; Button btnImportAccount;
/* /*
* For the window animation * For the window animation
* */ * */
private MediaPlayer mediaPlayer; // private MediaPlayer mediaPlayer;
@ -46,8 +46,13 @@ public class IntroActivity extends CustomActivity {
ButterKnife.bind(this); ButterKnife.bind(this);
Glide.with(this)
.load(R.drawable.appbar_background)
.apply(new RequestOptions().centerCrop())
.into(ivAnimation);
/* /*
* Integration of library with button efects * Integration of library with button effects
* */ * */
PushDownAnim.setPushDownAnimTo(btnCreateAccount) PushDownAnim.setPushDownAnimTo(btnCreateAccount)
.setOnClickListener( new View.OnClickListener(){ .setOnClickListener( new View.OnClickListener(){
@ -64,53 +69,23 @@ public class IntroActivity extends CustomActivity {
} }
} ); } );
// Appbar animation //Checks if the user has any seed created
mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { AccountSeedListViewModel accountSeedListViewModel = ViewModelProviders.of(this).get(AccountSeedListViewModel.class);
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
//Log.d(TAG,"surfaceCreated");
mediaPlayer = MediaPlayer.create(IntroActivity.this, R.raw.appbar_background);
mediaPlayer.setDisplay(mSurfaceView.getHolder());
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
@Override if (accountSeedListViewModel.accountSeedsCount() == 0) {
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { //If the user doesn't have any seeds created, then
//Log.d(TAG,"surfaceChanged"); //send the user to create/import an account
} //Intent intent = new Intent(this, AccountSeedsManagementActivity.class);
//Intent intent = new Intent(this, ImportSeedActivity.class);
@Override //Intent intent = new Intent(this, CreateSeedActivity.class);
public void surfaceDestroyed(SurfaceHolder surfaceHolder) { //startActivity(intent);
//Log.d(TAG,"surfaceDestroyed"); } else {
//Log.d(TAG,"surfaceDestroyed"); //Intent intent = new Intent(this, CreateSeedActivity.class);
mediaPlayer.stop(); Intent intent = new Intent(this, BoardActivity.class);
mediaPlayer.release(); //Intent intent = new Intent(this, PocketRequestActivity.class);
} startActivity(intent);
}); finish();
}
//this.getApplication().registerActivityLifecycleCallbacks(CrystalSecurityMonitor.getInstance(this));
//Checks if the user has any seed created
AccountSeedListViewModel accountSeedListViewModel = ViewModelProviders.of(this).get(AccountSeedListViewModel.class);
if (accountSeedListViewModel.accountSeedsCount() == 0) {
//If the user doesn't have any seeds created, then
//send the user to create/import an account
//Intent intent = new Intent(this, AccountSeedsManagementActivity.class);
//Intent intent = new Intent(this, ImportSeedActivity.class);
//Intent intent = new Intent(this, CreateSeedActivity.class);
//startActivity(intent);
} else {
//Intent intent = new Intent(this, CreateSeedActivity.class);
Intent intent = new Intent(this, BoardActivity.class);
//Intent intent = new Intent(this, PocketRequestActivity.class);
startActivity(intent);
finish();
}
/*CrystalDatabase db = CrystalDatabase.getAppDatabase(getApplicationContext()); /*CrystalDatabase db = CrystalDatabase.getAppDatabase(getApplicationContext());
List<AccountSeed> seeds = RandomSeedGenerator.generateSeeds(2); List<AccountSeed> seeds = RandomSeedGenerator.generateSeeds(2);
@ -154,17 +129,6 @@ public class IntroActivity extends CustomActivity {
startActivity(intent); startActivity(intent);
} }
@Override
protected void onDestroy() {
super.onDestroy();
//Release the media player
if(mediaPlayer!=null){
mediaPlayer.release();
mediaPlayer = null;
}
}
@OnClick(R.id.btnImportAccount) @OnClick(R.id.btnImportAccount)
public void importAccount() { public void importAccount() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

View file

@ -0,0 +1,13 @@
package cy.agorise.crystalwallet.util;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
/**
* This function is used to generate a local Glide API accessible by a GlideApp call
* which makes it easier to use more advanced Glide methods.
* {more information - https://bumptech.github.io/glide/doc/generatedapi.html}
*/
@GlideModule
public class MyAppGlideModule extends AppGlideModule {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View file

@ -9,8 +9,8 @@
android:background="@color/colorPrimary" android:background="@color/colorPrimary"
tools:context="cy.agorise.crystalwallet.activities.IntroActivity"> tools:context="cy.agorise.crystalwallet.activities.IntroActivity">
<SurfaceView <ImageView
android:id="@+id/surface_view" android:id="@+id/ivAnimation"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintDimensionRatio="2:1.2" app:layout_constraintDimensionRatio="2:1.2"
@ -22,10 +22,10 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/colorPrimaryTransparent" android:background="@color/colorPrimaryTransparent"
app:layout_constraintTop_toTopOf="@id/surface_view" app:layout_constraintTop_toTopOf="@id/ivAnimation"
app:layout_constraintStart_toStartOf="@id/surface_view" app:layout_constraintStart_toStartOf="@id/ivAnimation"
app:layout_constraintEnd_toEndOf="@id/surface_view" app:layout_constraintEnd_toEndOf="@id/ivAnimation"
app:layout_constraintBottom_toBottomOf="@id/surface_view"/> app:layout_constraintBottom_toBottomOf="@id/ivAnimation"/>
<ImageView <ImageView
android:id="@+id/ivLogo" android:id="@+id/ivLogo"
@ -34,8 +34,8 @@
android:contentDescription="@string/crystal_logo" android:contentDescription="@string/crystal_logo"
android:src="@drawable/crystal_logo" android:src="@drawable/crystal_logo"
tools:layout_editor_absoluteY="114dp" tools:layout_editor_absoluteY="114dp"
app:layout_constraintTop_toTopOf="@id/surface_view" app:layout_constraintTop_toTopOf="@id/ivAnimation"
app:layout_constraintBottom_toBottomOf="@id/surface_view"/> app:layout_constraintBottom_toBottomOf="@id/ivAnimation"/>
<TextView <TextView
android:id="@+id/tvNewUser" android:id="@+id/tvNewUser"
@ -48,7 +48,7 @@
app:layout_constraintBottom_toTopOf="@+id/btnCreateAccount" app:layout_constraintBottom_toTopOf="@+id/btnCreateAccount"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="0.4" app:layout_constraintVertical_bias="0.4"
app:layout_constraintTop_toBottomOf="@id/surface_view" app:layout_constraintTop_toBottomOf="@id/ivAnimation"
app:layout_constraintVertical_chainStyle="packed" /> app:layout_constraintVertical_chainStyle="packed" />
<Button <Button