From 6cb54a73a4142947705bf93af4c5b996b466c0e6 Mon Sep 17 00:00:00 2001 From: Hossain Khan Date: Sat, 6 Apr 2019 09:16:19 -0400 Subject: [PATCH 1/4] [ADDED] [#50] Virtual guideline barrier example. Fixes #50 --- app/src/main/AndroidManifest.xml | 7 +- .../demo/browse/LayoutBrowseActivity.kt | 4 + .../demo/dagger/ActivityBindingModule.kt | 5 ++ .../android/demo/data/LayoutDataStore.kt | 9 ++- .../LayoutGuidelineBarrierActivity.kt | 56 +++++++++++++ .../layout/preview_virtual_helper_barrier.xml | 80 +++++++++++++++++++ app/src/main/res/values/strings.xml | 11 +++ 7 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutGuidelineBarrierActivity.kt create mode 100644 app/src/main/res/layout/preview_virtual_helper_barrier.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 16b049f..ab10cfb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,5 +1,6 @@ + android:theme="@style/AppTheme" + tools:ignore="AllowBackup,GoogleAppIndexingWarning"> @@ -26,6 +28,9 @@ + \ No newline at end of file diff --git a/app/src/main/java/com/hossainkhan/android/demo/browse/LayoutBrowseActivity.kt b/app/src/main/java/com/hossainkhan/android/demo/browse/LayoutBrowseActivity.kt index bb05836..8f49b69 100644 --- a/app/src/main/java/com/hossainkhan/android/demo/browse/LayoutBrowseActivity.kt +++ b/app/src/main/java/com/hossainkhan/android/demo/browse/LayoutBrowseActivity.kt @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.hossainkhan.android.demo.R import com.hossainkhan.android.demo.layoutpreview.LayoutChainStyleActivity +import com.hossainkhan.android.demo.layoutpreview.LayoutGuidelineBarrierActivity import com.hossainkhan.android.demo.layoutpreview.LayoutPreviewBaseActivity import com.hossainkhan.android.demo.layoutpreview.LayoutVisibilityGoneActivity import com.hossainkhan.android.demo.viewmodel.LayoutPreviewViewModelFactory @@ -84,6 +85,9 @@ class LayoutBrowseActivity : AppCompatActivity() { R.layout.preview_chain_style_main -> { startActivity(LayoutChainStyleActivity.createStartIntent(this)) } + R.layout.preview_virtual_helper_barrier -> { + startActivity(LayoutGuidelineBarrierActivity.createStartIntent(this)) + } else -> { startActivity(LayoutPreviewBaseActivity.createStartIntent(this, layoutResId)) } diff --git a/app/src/main/java/com/hossainkhan/android/demo/dagger/ActivityBindingModule.kt b/app/src/main/java/com/hossainkhan/android/demo/dagger/ActivityBindingModule.kt index cb45f6f..dea9c6a 100644 --- a/app/src/main/java/com/hossainkhan/android/demo/dagger/ActivityBindingModule.kt +++ b/app/src/main/java/com/hossainkhan/android/demo/dagger/ActivityBindingModule.kt @@ -17,6 +17,7 @@ package com.hossainkhan.android.demo.dagger import com.hossainkhan.android.demo.layoutpreview.LayoutChainStyleActivity +import com.hossainkhan.android.demo.layoutpreview.LayoutGuidelineBarrierActivity import com.hossainkhan.android.demo.layoutpreview.LayoutPreviewBaseActivity import com.hossainkhan.android.demo.layoutpreview.LayoutVisibilityGoneActivity import dagger.Module @@ -57,4 +58,8 @@ abstract class ActivityBindingModule { @ActivityScope @ContributesAndroidInjector abstract fun layoutChainActivity(): LayoutChainStyleActivity + + @ActivityScope + @ContributesAndroidInjector + abstract fun layoutGuidelineBarrierActivity(): LayoutGuidelineBarrierActivity } \ No newline at end of file diff --git a/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt b/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt index 600ac10..4af8b17 100644 --- a/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt +++ b/app/src/main/java/com/hossainkhan/android/demo/data/LayoutDataStore.kt @@ -124,7 +124,14 @@ class LayoutDataStore @Inject constructor( title = "Virtual Helper: Guideline", description = "The Guideline object allows you to create Horizontal and Vertical guidelines which " + "are positioned relative to the ConstraintLayout container." + - "Widgets can then be positioned by constraining them to such guidelines. ") + "Widgets can then be positioned by constraining them to such guidelines. "), + + LayoutInformation( + layoutResourceId = R.layout.preview_virtual_helper_barrier, + thumbnailResourceId = R.drawable.thumb_virtual_helper_guideline, + title = "Virtual Helper: Barrier", + description = "A Barrier references multiple widgets as input, and creates a virtual guideline " + + "based on the most extreme widget on the specified side.") /* diff --git a/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutGuidelineBarrierActivity.kt b/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutGuidelineBarrierActivity.kt new file mode 100644 index 0000000..ff5b97f --- /dev/null +++ b/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutGuidelineBarrierActivity.kt @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2019 Hossain Khan + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hossainkhan.android.demo.layoutpreview + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.widget.Button +import android.widget.TextView +import com.hossainkhan.android.demo.R + +class LayoutGuidelineBarrierActivity : LayoutPreviewBaseActivity() { + + companion object { + /** + * Creates an intent with required information to start this activity. + * + * @param context Activity context. + */ + fun createStartIntent(context: Context): Intent { + val intent = Intent(context, LayoutGuidelineBarrierActivity::class.java) + intent.putExtra(BUNDLE_KEY_LAYOUT_RESID, R.layout.preview_virtual_helper_barrier) + return intent + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // Setup additional view that is only available in this screen. + val toggleButton = findViewById