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..4dd9436 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 @@ -79,10 +80,16 @@ class LayoutBrowseActivity : AppCompatActivity() { when (layoutResId) { R.layout.preview_visibility_gone -> { - startActivity(LayoutVisibilityGoneActivity.createStartIntent(this)) + startActivity(LayoutPreviewBaseActivity.createStartIntent(this, + LayoutVisibilityGoneActivity::class.java, R.layout.preview_visibility_gone)) } R.layout.preview_chain_style_main -> { - startActivity(LayoutChainStyleActivity.createStartIntent(this)) + startActivity(LayoutPreviewBaseActivity.createStartIntent(this, + LayoutChainStyleActivity::class.java, R.layout.preview_chain_style_main)) + } + R.layout.preview_virtual_helper_barrier -> { + startActivity(LayoutPreviewBaseActivity.createStartIntent(this, + LayoutGuidelineBarrierActivity::class.java, R.layout.preview_virtual_helper_barrier)) } 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..16528f1 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,18 @@ 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. "), + + /* + * https://developer.android.com/training/constraint-layout/index.html#constrain-to-a-barrier + * https://constraintlayout.com/basics/barriers.html + */ + LayoutInformation( + layoutResourceId = R.layout.preview_virtual_helper_barrier, + thumbnailResourceId = R.drawable.thumb_virtual_helper_barrier, + 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/LayoutChainStyleActivity.kt b/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutChainStyleActivity.kt index d2c1c0b..0fd943b 100644 --- a/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutChainStyleActivity.kt +++ b/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutChainStyleActivity.kt @@ -16,20 +16,16 @@ package com.hossainkhan.android.demo.layoutpreview -import android.content.Context -import android.content.Intent import android.os.Bundle +import android.view.View +import android.widget.RadioButton +import android.widget.TextView import androidx.annotation.StringRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet -import androidx.constraintlayout.widget.ConstraintSet.CHAIN_PACKED -import androidx.constraintlayout.widget.ConstraintSet.CHAIN_SPREAD -import androidx.constraintlayout.widget.ConstraintSet.CHAIN_SPREAD_INSIDE +import androidx.constraintlayout.widget.ConstraintSet.* import androidx.transition.TransitionManager -import android.view.View import com.hossainkhan.android.demo.R -import android.widget.RadioButton -import android.widget.TextView import timber.log.Timber /** @@ -39,19 +35,6 @@ import timber.log.Timber */ class LayoutChainStyleActivity : 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, LayoutChainStyleActivity::class.java) - intent.putExtra(BUNDLE_KEY_LAYOUT_RESID, R.layout.preview_chain_style_main) - return intent - } - } - private lateinit var constraintLayout: ConstraintLayout private lateinit var guideTextView: TextView /** 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..2ce5d44 --- /dev/null +++ b/app/src/main/java/com/hossainkhan/android/demo/layoutpreview/LayoutGuidelineBarrierActivity.kt @@ -0,0 +1,46 @@ +/* + * 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.os.Bundle +import android.widget.Button +import android.widget.TextView +import com.hossainkhan.android.demo.R + +/** + * Activity showcasing how virtual guideline barrier changes when a view length changes within the barrier. + * + * See https://developer.android.com/reference/android/support/constraint/Barrier + */ +class LayoutGuidelineBarrierActivity : LayoutPreviewBaseActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // Setup additional view that is only available in this screen. + val toggleButton = findViewById