Skip to content
This repository was archived by the owner on Aug 22, 2024. It is now read-only.
Merged
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
7 changes: 6 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.hossainkhan.android.demo">

<application
Expand All @@ -9,7 +10,8 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:theme="@style/AppTheme"
tools:ignore="AllowBackup,GoogleAppIndexingWarning">
<activity android:name=".browse.LayoutBrowseActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand All @@ -26,6 +28,9 @@
<activity
android:name=".layoutpreview.LayoutChainStyleActivity"
android:parentActivityName=".browse.LayoutBrowseActivity" />
<activity
android:name=".layoutpreview.LayoutGuidelineBarrierActivity"
android:parentActivityName=".browse.LayoutBrowseActivity" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -57,4 +58,8 @@ abstract class ActivityBindingModule {
@ActivityScope
@ContributesAndroidInjector
abstract fun layoutChainActivity(): LayoutChainStyleActivity

@ActivityScope
@ContributesAndroidInjector
abstract fun layoutGuidelineBarrierActivity(): LayoutGuidelineBarrierActivity
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.")


/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

/**
Expand All @@ -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
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Button>(R.id.toggle_label_text_size)
val textLabel = findViewById<TextView>(R.id.text_label)

toggleButton.setOnClickListener {
if (textLabel.text == getString(R.string.barrier_label_text_small)) {
textLabel.setText(R.string.barrier_label_text_long)
} else {
textLabel.setText(R.string.barrier_label_text_small)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,19 @@ open class LayoutPreviewBaseActivity : AppCompatActivity() {
intent.putExtra(BUNDLE_KEY_LAYOUT_RESID, layoutResourceId)
return intent
}

/**
* Creates an intent with required information to start child activity with specific interactive demo.
*
* @param context Activity context.
* @param clazz Activity class that has interactive demo.
* @param layoutResourceId The layout resource ID to load into the view.
*/
fun <T> createStartIntent(context: Context, clazz: Class<T>, @LayoutRes layoutResourceId: Int): Intent {
val intent = Intent(context, clazz)
intent.putExtra(BUNDLE_KEY_LAYOUT_RESID, layoutResourceId)
return intent
}
}

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,17 @@

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.Button
import com.hossainkhan.android.demo.R

/**
* Activity showcasing how visibility GONE affects constraints.
*
* See https://developer.android.com/reference/android/support/constraint/ConstraintLayout#VisibilityBehavior
*/
class LayoutVisibilityGoneActivity : 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, LayoutVisibilityGoneActivity::class.java)
intent.putExtra(BUNDLE_KEY_LAYOUT_RESID, R.layout.preview_visibility_gone)
return intent
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

Expand Down
Loading