From dab2486c0886299ab12caaa08f6fff422fd938b2 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 4 May 2018 21:27:49 +0200 Subject: [PATCH 01/14] updated dependency versions. (cherry picked from commit d4bae90) --- app/build.gradle | 23 +++++++++++++---------- build.gradle | 11 ++++++----- fabbutton/build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bcda2c7..debc727 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ repositories { android { compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion '27.0.3' + buildToolsVersion "$rootProject.ext.buildToolsVersion" defaultConfig { applicationId "org.bookdash.android" @@ -177,22 +177,22 @@ dependencies { implementation 'com.google.code.gson:gson:2.8.2' implementation 'com.github.castorflex.smoothprogressbar:library-circular:1.2.0' - implementation('com.crashlytics.sdk.android:crashlytics:2.5.3@aar') { - transitive = true + implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') { + transitive = true; } implementation('za.co.riggaroo:materialhelptutorial:1.6.0') { exclude module: 'support-v4' } - implementation("com.google.firebase:firebase-invites:${rootProject.ext.googlePlayServicesVersion}") { + implementation("com.google.firebase:firebase-invites:15.0.0") { exclude module: 'support-v4' } - implementation("com.google.firebase:firebase-core:${rootProject.ext.googlePlayServicesVersion}") { + implementation("com.google.firebase:firebase-core:15.0.2") { exclude module: 'support-v4' } - implementation "com.google.firebase:firebase-database:${rootProject.ext.googlePlayServicesVersion}" - implementation "com.google.firebase:firebase-messaging:${rootProject.ext.googlePlayServicesVersion}" - implementation("com.google.firebase:firebase-config:${rootProject.ext.googlePlayServicesVersion}") { + implementation "com.google.firebase:firebase-database:15.0.1" + implementation "com.google.firebase:firebase-messaging:15.0.2" + implementation("com.google.firebase:firebase-config:15.0.2") { exclude module: 'support-v4' } implementation("com.google.firebase:firebase-storage:${rootProject.ext.googlePlayServicesVersion}") { @@ -206,11 +206,14 @@ dependencies { implementation 'io.reactivex:rxandroid:1.2.1' implementation 'io.reactivex:rxjava:1.2.5' implementation 'com.jakewharton.threetenabp:threetenabp:1.0.5' - implementation 'com.jakewharton.timber:timber:4.6.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta5' + implementation 'com.jakewharton.timber:timber:4.7.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.0' implementation "android.arch.lifecycle:extensions:1.1.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } + + + apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/build.gradle b/build.gradle index f35c3cf..c95441d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.21' + ext.kotlin_version = '1.2.30' repositories { jcenter() google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0-alpha03' - classpath 'com.google.gms:google-services:3.1.1' + classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.google.gms:google-services:3.2.1' classpath 'com.github.triplet.gradle:play-publisher:1.2.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.firebase:firebase-plugins:1.1.5' @@ -27,8 +27,8 @@ ext { versionName = "2.7.0" compileSdkVersion = 27 buildToolsVersion = "27.0.3" - supportLibraryVersion = '27.0.2' - googlePlayServicesVersion = '11.8.0' + supportLibraryVersion = '27.1.1' + googlePlayServicesVersion = '15.0.2' guavaVersion = '18.0' glideVersion = '3.7.0' junitVersion = '4.12' @@ -38,4 +38,5 @@ ext { runnerVersion = '0.5' rulesVersion = '0.5' espressoVersion = '2.2.2' + } \ No newline at end of file diff --git a/fabbutton/build.gradle b/fabbutton/build.gradle index 47ca51f..54a5225 100644 --- a/fabbutton/build.gradle +++ b/fabbutton/build.gradle @@ -30,7 +30,7 @@ android { buildToolsVersion '27.0.3' defaultConfig { - minSdkVersion 14 + minSdkVersion 16 targetSdkVersion 27 versionCode 10 versionName version @@ -44,5 +44,5 @@ android { } dependencies { - implementation 'com.android.support:design:27.0.2' + implementation 'com.android.support:design:27.1.1' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bd203c4..06b84ad 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Feb 17 21:49:02 SAST 2018 +#Fri May 04 20:56:39 SAST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip From 036d6d312f0f4a9dcecd9b4b34a473204d20f828 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Sun, 6 May 2018 19:37:33 +0200 Subject: [PATCH 02/14] Enabled multidex. --- app/build.gradle | 7 ++++--- .../bookdash/android/BookDashApplication.java | 17 +++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index debc727..216a9bd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,6 +34,7 @@ android { testInstrumentationRunner "org.bookdash.android.presentation.CustomTestRunner" resConfigs "en" vectorDrawables.useSupportLibrary = true + multiDexEnabled true } dataBinding { @@ -119,7 +120,7 @@ android { } } dependencies { - + implementation 'com.android.support:multidex:1.0.2' testImplementation "junit:junit:$rootProject.ext.junitVersion" testImplementation "org.mockito:mockito-all:$rootProject.ext.mockitoVersion" testImplementation "org.hamcrest:hamcrest-all:$rootProject.ext.hamcrestVersion" @@ -201,14 +202,14 @@ dependencies { implementation('com.firebaseui:firebase-ui-storage:0.6.1') { exclude module: 'support-v4' } - implementation "com.google.firebase:firebase-perf:${rootProject.ext.googlePlayServicesVersion}" + implementation "com.google.firebase:firebase-perf:15.1.0" implementation 'io.reactivex:rxandroid:1.2.1' implementation 'io.reactivex:rxjava:1.2.5' implementation 'com.jakewharton.threetenabp:threetenabp:1.0.5' implementation 'com.jakewharton.timber:timber:4.7.0' implementation 'com.android.support.constraint:constraint-layout:1.1.0' - implementation "android.arch.lifecycle:extensions:1.1.0" + implementation "android.arch.lifecycle:extensions:1.1.1" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } diff --git a/app/src/main/java/org/bookdash/android/BookDashApplication.java b/app/src/main/java/org/bookdash/android/BookDashApplication.java index 9752d7a..22bd8d3 100644 --- a/app/src/main/java/org/bookdash/android/BookDashApplication.java +++ b/app/src/main/java/org/bookdash/android/BookDashApplication.java @@ -1,17 +1,15 @@ package org.bookdash.android; -import android.app.Application; import android.content.Context; - +import android.support.multidex.MultiDex; +import android.support.multidex.MultiDexApplication; import com.crashlytics.android.Crashlytics; import com.crashlytics.android.core.CrashlyticsCore; import com.google.firebase.analytics.FirebaseAnalytics; import com.google.firebase.iid.FirebaseInstanceId; import com.jakewharton.threetenabp.AndroidThreeTen; - -import org.bookdash.android.config.CrashlyticsTree; - import io.fabric.sdk.android.Fabric; +import org.bookdash.android.config.CrashlyticsTree; import rx.Subscriber; import timber.log.Timber; @@ -20,7 +18,7 @@ * @author Rebecca Franks * @since 2015/07/16 8:54 AM */ -public class BookDashApplication extends Application { +public class BookDashApplication extends MultiDexApplication { public static boolean isTablet = false; public static String FILES_DIR; private FirebaseAnalytics firebaseAnalytics; @@ -29,9 +27,16 @@ public static BookDashApplication get(Context context) { return (BookDashApplication) context.getApplicationContext(); } + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } + @Override public void onCreate() { super.onCreate(); + AndroidThreeTen.init(this); Crashlytics crashlyticsKit = new Crashlytics.Builder() .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build(); From 8b0a2ff9f6189b0d14eb6e8b10c0e6e9134d2c79 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Sun, 6 May 2018 20:12:01 +0200 Subject: [PATCH 03/14] Updated Glide and made padding on all cardviews 8dp --- app/build.gradle | 10 +- app/src/main/AndroidManifest.xml | 3 - .../bookdash/android/config/MyGlideModule.kt | 26 +++ .../bookinfo/BookInfoActivity.java | 65 ++++-- .../bookinfo/ContributorAdapter.java | 7 +- .../downloads/DownloadsAdapter.java | 7 +- .../presentation/listbooks/BookAdapter.java | 9 +- .../utils/GlideLoadingModule.java | 23 --- .../layout-land/activity_book_information.xml | 190 +++++++++--------- app/src/main/res/layout/activity_about.xml | 179 +++++++++-------- .../res/layout/activity_book_information.xml | 146 +++++++------- app/src/main/res/layout/list_item_book.xml | 87 ++++---- 12 files changed, 388 insertions(+), 364 deletions(-) create mode 100644 app/src/main/java/org/bookdash/android/config/MyGlideModule.kt delete mode 100644 app/src/main/java/org/bookdash/android/presentation/utils/GlideLoadingModule.java diff --git a/app/build.gradle b/app/build.gradle index 216a9bd..44bf23f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -174,7 +174,8 @@ dependencies { implementation "com.android.support:percent:$rootProject.ext.supportLibraryVersion" implementation "com.android.support:preference-v7:$rootProject.ext.supportLibraryVersion" implementation "com.android.support:preference-v14:$rootProject.ext.supportLibraryVersion" - implementation 'com.github.bumptech.glide:glide:3.8.0' + implementation 'com.github.bumptech.glide:glide:4.7.1' + kapt 'com.github.bumptech.glide:compiler:4.7.1' implementation 'com.google.code.gson:gson:2.8.2' implementation 'com.github.castorflex.smoothprogressbar:library-circular:1.2.0' @@ -191,6 +192,7 @@ dependencies { implementation("com.google.firebase:firebase-core:15.0.2") { exclude module: 'support-v4' } + implementation "com.google.firebase:firebase-auth:15.1.0" implementation "com.google.firebase:firebase-database:15.0.1" implementation "com.google.firebase:firebase-messaging:15.0.2" implementation("com.google.firebase:firebase-config:15.0.2") { @@ -199,9 +201,7 @@ dependencies { implementation("com.google.firebase:firebase-storage:${rootProject.ext.googlePlayServicesVersion}") { exclude module: 'support-v4' } - implementation('com.firebaseui:firebase-ui-storage:0.6.1') { - exclude module: 'support-v4' - } + implementation 'com.firebaseui:firebase-ui-storage:3.3.1' implementation "com.google.firebase:firebase-perf:15.1.0" implementation 'io.reactivex:rxandroid:1.2.1' @@ -216,5 +216,5 @@ dependencies { - +apply plugin: 'kotlin-kapt' apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 955aec2..b981bfa 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,9 +26,6 @@ android:label="@string/app_name" android:largeHeap="true" android:theme="@style/AppTheme"> - () { - @Override - public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { - onImageLoaded(resource); - extractPaletteColors(resource); - } - }); + GlideApp.with(this).load(url) + .transition(DrawableTransitionOptions.withCrossFade()) + .into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Drawable resource, @Nullable com.bumptech.glide.request.transition.Transition transition) { + + Bitmap bitmap = drawableToBitmap(resource); + onImageLoaded(bitmap); + extractPaletteColors(bitmap); + } + }); } + public static Bitmap drawableToBitmap (Drawable drawable) { + Bitmap bitmap = null; + + if (drawable instanceof BitmapDrawable) { + BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; + if(bitmapDrawable.getBitmap() != null) { + return bitmapDrawable.getBitmap(); + } + } + if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) { + bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel + } else { + bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + return bitmap; + } private void onImageLoaded(Bitmap bitmap) { imageViewBook.setImageBitmap(bitmap); diff --git a/app/src/main/java/org/bookdash/android/presentation/bookinfo/ContributorAdapter.java b/app/src/main/java/org/bookdash/android/presentation/bookinfo/ContributorAdapter.java index bca1f3f..06c4138 100644 --- a/app/src/main/java/org/bookdash/android/presentation/bookinfo/ContributorAdapter.java +++ b/app/src/main/java/org/bookdash/android/presentation/bookinfo/ContributorAdapter.java @@ -5,11 +5,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - -import com.bumptech.glide.Glide; -import com.firebase.ui.storage.images.FirebaseImageLoader; - import org.bookdash.android.R; +import org.bookdash.android.config.GlideApp; import org.bookdash.android.domain.model.firebase.FireContributor; import java.util.List; @@ -35,7 +32,7 @@ public void onBindViewHolder(ContributorViewHolder holder, int position) { holder.textViewContributor.setText(item.getName()); holder.textViewRole.setText(item.getActualRolesFormatted()); - Glide.with(context).using(new FirebaseImageLoader()).load(item.getFirebaseAvatar()) + GlideApp.with(context).load(item.getFirebaseAvatar()) .placeholder(R.drawable.placeholder_avatar).error(R.drawable.placeholder_avatar) .into(holder.imageViewContributorAvatar); diff --git a/app/src/main/java/org/bookdash/android/presentation/downloads/DownloadsAdapter.java b/app/src/main/java/org/bookdash/android/presentation/downloads/DownloadsAdapter.java index 0450f0e..67cf151 100644 --- a/app/src/main/java/org/bookdash/android/presentation/downloads/DownloadsAdapter.java +++ b/app/src/main/java/org/bookdash/android/presentation/downloads/DownloadsAdapter.java @@ -5,11 +5,8 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - -import com.bumptech.glide.Glide; -import com.firebase.ui.storage.images.FirebaseImageLoader; - import org.bookdash.android.R; +import org.bookdash.android.config.GlideApp; import org.bookdash.android.domain.model.firebase.FireBookDetails; import java.util.List; @@ -40,7 +37,7 @@ public DownloadsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public void onBindViewHolder(DownloadsViewHolder holder, int position) { FireBookDetails book = bookList.get(position); holder.downloadTitleTextView.setText(book.getBookTitle()); - Glide.with(context).using(new FirebaseImageLoader()).load(book.getFirebaseBookCoverUrl()).into(holder.downloadImageTextView); + GlideApp.with(context).load(book.getFirebaseBookCoverUrl()).into(holder.downloadImageTextView); holder.downloadActionButtonView.setOnClickListener(deleteClickListener); holder.book = book; holder.downloadActionButtonView.setTag(holder); diff --git a/app/src/main/java/org/bookdash/android/presentation/listbooks/BookAdapter.java b/app/src/main/java/org/bookdash/android/presentation/listbooks/BookAdapter.java index de4158e..173ff70 100644 --- a/app/src/main/java/org/bookdash/android/presentation/listbooks/BookAdapter.java +++ b/app/src/main/java/org/bookdash/android/presentation/listbooks/BookAdapter.java @@ -6,11 +6,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - -import com.bumptech.glide.Glide; -import com.firebase.ui.storage.images.FirebaseImageLoader; - +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import org.bookdash.android.R; +import org.bookdash.android.config.GlideApp; import org.bookdash.android.domain.model.firebase.FireBookDetails; import java.util.List; @@ -42,7 +40,8 @@ public void onBindViewHolder(BookViewHolder holder, int position) { FireBookDetails bookDetail = bookDetails.get(position); holder.bookTitle.setText(bookDetail.getBookTitle()); Log.d("BookAdapter", "Book url:" + bookDetail.getBookCoverPageUrl()); - Glide.with(context).using(new FirebaseImageLoader()).load(bookDetail.getFirebaseBookCoverUrl()) + GlideApp.with(context).load(bookDetail.getFirebaseBookCoverUrl()) + .transition(DrawableTransitionOptions.withCrossFade()) .placeholder(R.drawable.bookdash_placeholder).error(R.drawable.bookdash_placeholder) .into(holder.bookCover); holder.bookDetail = bookDetail; diff --git a/app/src/main/java/org/bookdash/android/presentation/utils/GlideLoadingModule.java b/app/src/main/java/org/bookdash/android/presentation/utils/GlideLoadingModule.java deleted file mode 100644 index b2ee80b..0000000 --- a/app/src/main/java/org/bookdash/android/presentation/utils/GlideLoadingModule.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.bookdash.android.presentation.utils; - -import android.content.Context; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.GlideBuilder; -import com.bumptech.glide.load.DecodeFormat; -import com.bumptech.glide.module.GlideModule; - - -public class GlideLoadingModule implements GlideModule { - @Override - public void applyOptions(Context context, GlideBuilder builder) { - builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); - } - - @Override - public void registerComponents(Context context, Glide glide) { - // glide.register(Model.class, Data.class, new MyModelLoader()); - } - - -} diff --git a/app/src/main/res/layout-land/activity_book_information.xml b/app/src/main/res/layout-land/activity_book_information.xml index 59fbe95..fbd14a9 100644 --- a/app/src/main/res/layout-land/activity_book_information.xml +++ b/app/src/main/res/layout-land/activity_book_information.xml @@ -137,129 +137,131 @@ android:paddingRight="@dimen/activity_horizontal_margin"> - - + android:layout_marginBottom="4dp" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:layout_marginTop="16dp" + android:visibility="gone" + app:cardCornerRadius="8dp"> + + + android:scaleType="centerCrop" + android:transitionName="@string/transition_book"/> + android:id="@+id/rel_top_title_section" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_toEndOf="@+id/image_view_book_cover" + android:layout_toRightOf="@+id/image_view_book_cover" + android:minHeight="56dp"> + android:id="@+id/textView_book_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentTop="true" + android:layout_centerVertical="true" + android:layout_marginBottom="8dp" + android:layout_marginLeft="8dp" + android:layout_marginTop="8dp" + android:fontFamily="sans-serif" + android:text="@{bookInfo.bookTitle}" + android:textColor="@color/text_color_primary_dark" + android:textSize="24sp"/> + android:id="@+id/text_view_date_book_created" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_below="@id/textView_book_title" + android:layout_centerVertical="true" + android:layout_marginBottom="8dp" + android:layout_marginLeft="8dp" + android:layout_marginTop="8dp" + android:fontFamily="sans-serif" + android:gravity="center_vertical" + android:text="@{bookInfo.getCreatedDateFormatted()}" + android:textColor="@color/text_secondary_dark" + android:textSize="14sp"/> + android:id="@+id/view_divider" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_below="@id/rel_top_title_section" + android:layout_toEndOf="@+id/image_view_book_cover" + android:layout_toRightOf="@+id/image_view_book_cover" + android:background="@color/divider_gray"/> + android:id="@+id/textView2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@+id/view_divider" + android:layout_marginBottom="24dp" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:layout_marginTop="32dp" + android:layout_toEndOf="@+id/image_view_book_cover" + android:layout_toRightOf="@+id/image_view_book_cover" + android:fontFamily="sans-serif" + android:text="@{bookInfo.bookDescription}" + android:textColor="@color/text_color_primary_dark" + android:textSize="18sp"/> - - + android:layout_marginBottom="16dp" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:layout_marginTop="8dp" + android:paddingTop="4dp" + android:visibility="gone" + app:cardCornerRadius="8dp"> - - - + + + + diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 345ecb1..3d1068f 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -48,34 +48,35 @@ android:paddingTop="@dimen/activity_vertical_margin"> + android:layout_marginTop="4dp" + android:padding="16dp" + app:cardCornerRadius="8dp"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/text_view_about" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="24dp" + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:layout_marginTop="16dp" + android:breakStrategy="high_quality" + android:hyphenationFrequency="full" + android:text="@string/heading_about" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textIsSelectable="true" + android:textSize="16sp"> @@ -83,31 +84,32 @@ + android:layout_marginTop="4dp" + android:padding="16dp" + app:cardCornerRadius="8dp"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="8dp"> + android:id="@+id/imageViewLogo" + android:layout_width="wrap_content" + android:layout_height="200dp" + android:layout_gravity="center" + android:layout_marginBottom="8dp" + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp" + android:layout_marginTop="8dp" + app:srcCompat="@drawable/bookdash_logo"/> @@ -115,60 +117,61 @@ - - + android:layout_marginBottom="4dp" + android:layout_marginLeft="@dimen/activity_horizontal_margin" + android:layout_marginRight="@dimen/activity_horizontal_margin" - + + + android:orientation="vertical"> - android:layout_marginLeft="16dp" - android:layout_marginRight="16dp" - android:breakStrategy="high_quality" - android:fontFamily="sans-serif" - android:hyphenationFrequency="normal" - android:text="@string/why_bookdash" - android:textIsSelectable="true" - android:textSize="16sp"/> +