Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App compat setters with base classes #135

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
language: android
sudo: required
jdk: oraclejdk8

env:
global:
- GRADLE_OPTS=-Xmx512m
- ANDROID_API_LEVEL=28
- ANDROID_BUILD_TOOLS_VERSION=28.0.3
- ANDROID_ABI=armeabi-v7a

android:
components:
- tools
- build-tools-27.0.3
- android-27
- platform-tools
- tools
- extra-android-m2repository
licenses:
- 'android-sdk-preview-license-52d11cd2'
- 'android-sdk-license-.+'
- 'google-gdk-license-.+'

before_install:
- yes | sdkmanager "platforms;android-28"

jdk:
- oraclejdk8
- yes | sdkmanager "build-tools;28.0.3"

script:
- ./gradlew assemble anvil:check --stacktrace
- ./gradlew assemble anvil:check --stacktrace
10 changes: 2 additions & 8 deletions anvil-appcompat-v7/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'
apply from: "$rootProject.projectDir/copyDeps.gradle"
Expand All @@ -21,7 +14,7 @@ android {
minSdkVersion 15
targetSdkVersion 27

missingDimensionStrategy 'api', 'sdk15'
missingDimensionStrategy 'api', 'sdk21'
}

lintOptions {
Expand Down Expand Up @@ -49,6 +42,7 @@ anvilgen {
"android.arch.lifecycle-common": "1.1.0",
]
quirks = QUIRKS
superclass = "BaseAppCompat"
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
* It contains views and their setters from the library appcompat-v7.
* Please, don't edit it manually unless for debugging.
*/
public final class AppCompatv7DSL implements Anvil.AttributeSetter {
public final class AppCompatv7DSL extends BaseAppCompat implements Anvil.AttributeSetter {
static {
Anvil.registerAttributeSetter(new AppCompatv7DSL());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package trikita.anvil.appcompat.v7;

import android.support.v7.widget.Toolbar;
import android.view.View;
import trikita.anvil.Anvil;

public class BaseAppCompat implements Anvil.AttributeSetter {

static {
Anvil.registerAttributeSetter(new BaseAppCompat());
}

@Override
public boolean set(View v, String name, Object value, Object prevValue) {
switch (name) {
case "layoutGravity":
if (v.getLayoutParams() instanceof Toolbar.LayoutParams && value instanceof Integer) {
((Toolbar.LayoutParams) v.getLayoutParams()).gravity = (int) value;
return true;
}
break;
}

return false;
}

}
7 changes: 0 additions & 7 deletions anvil-cardview-v7/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'
apply from: "$rootProject.projectDir/copyDeps.gradle"
Expand Down
8 changes: 1 addition & 7 deletions anvil-design/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'
apply from: "$rootProject.projectDir/copyDeps.gradle"
Expand Down Expand Up @@ -52,6 +45,7 @@ anvilgen {
"viewmodel": "1.1.0"
]
quirks = QUIRKS
superclass = "BaseDesign"
}

dependencies {
Expand Down
76 changes: 76 additions & 0 deletions anvil-design/src/main/java/trikita/anvil/design/BaseDesign.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package trikita.anvil.design;

import android.animation.ObjectAnimator;
import android.animation.StateListAnimator;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.CoordinatorLayout;
import android.view.View;

import trikita.anvil.Anvil;

import static trikita.anvil.BaseDSL.attr;

public class BaseDesign implements Anvil.AttributeSetter {

static {
Anvil.registerAttributeSetter(new BaseDesign());
}

public static Void collapseMode(int collapseMode) {
return attr("collapseMode", collapseMode);
}

public static Void scrollFlags(int collapseMode) {
return attr("scrollFlags", collapseMode);
}

public static Void behavior(CoordinatorLayout.Behavior behavior) {
return attr("behavior", behavior);
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public static Void appBarElevation(float elevation) {
return attr("appBarElevation", elevation);
}

@Override
public boolean set(View v, String name, Object value, Object prevValue) {
switch (name) {

case "collapseMode":
if (v.getLayoutParams() instanceof CollapsingToolbarLayout.LayoutParams && value instanceof Integer) {
((CollapsingToolbarLayout.LayoutParams) v.getLayoutParams()).setCollapseMode((int) value);
return true;
}
break;
case "scrollFlags":
if (v.getLayoutParams() instanceof AppBarLayout.LayoutParams && value instanceof Integer) {
((AppBarLayout.LayoutParams) v.getLayoutParams()).setScrollFlags((int) value);
return true;
}
break;
case "behavior":
if (v.getLayoutParams() instanceof CoordinatorLayout.LayoutParams && (value == null || value instanceof CoordinatorLayout.Behavior)) {
((CoordinatorLayout.LayoutParams) v.getLayoutParams()).setBehavior((CoordinatorLayout.Behavior) value);
return true;
}
break;
case "appBarElevation":
if (v instanceof AppBarLayout && (value == null || value instanceof Float)) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
StateListAnimator stateListAnimator = new StateListAnimator();
stateListAnimator.addState(new int[0], ObjectAnimator.ofFloat(v, "elevation", (Float) value));
v.setStateListAnimator(stateListAnimator);
}
return true;
}
break;
}

return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
* It contains views and their setters from the library design.
* Please, don't edit it manually unless for debugging.
*/
public final class DesignDSL implements Anvil.AttributeSetter {
public final class DesignDSL extends BaseDesign implements Anvil.AttributeSetter {
static {
Anvil.registerAttributeSetter(new DesignDSL());
}
Expand Down
7 changes: 0 additions & 7 deletions anvil-gridlayout-v7/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'
apply from: "$rootProject.projectDir/copyDeps.gradle"
Expand Down
7 changes: 0 additions & 7 deletions anvil-recyclerview-v7/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'
apply from: "$rootProject.projectDir/copyDeps.gradle"
Expand Down
9 changes: 1 addition & 8 deletions anvil-support-v4/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'
apply from: "$rootProject.projectDir/copyDeps.gradle"
Expand All @@ -21,7 +14,7 @@ android {
minSdkVersion 15
targetSdkVersion 27

missingDimensionStrategy 'api', 'sdk15'
missingDimensionStrategy 'api', 'sdk21'
}

lintOptions {
Expand Down
7 changes: 0 additions & 7 deletions anvil/build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$agp_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}
}

apply plugin: 'com.android.library'
apply plugin: 'trikita.anvilgen'

Expand Down
17 changes: 17 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
buildscript {
dependencies {
classpath "com.android.tools.build:gradle:3.3.2"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
}

repositories {
google()
jcenter()
}
}

subprojects {
ext {
mockito_version = '2.23.0'
Expand All @@ -6,6 +18,11 @@ subprojects {
}

buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31"
classpath "com.android.tools.build:gradle:$agp_version"
}

repositories {
google()
jcenter()
Expand Down
1 change: 1 addition & 0 deletions sample/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
40 changes: 40 additions & 0 deletions sample/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
compileSdkVersion 27

defaultConfig {
applicationId "trikita.anvil.sample"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"

missingDimensionStrategy 'api', 'sdk21'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}

}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.31"
implementation "com.android.support:appcompat-v7:27.1.1"
implementation project(":anvil")
implementation project(":anvil-support-v4")
implementation project(":anvil-appcompat-v7")


testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
21 changes: 21 additions & 0 deletions sample/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
21 changes: 21 additions & 0 deletions sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="trikita.anvil.sample">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
Loading