Skip to content

Commit 9cfc465

Browse files
add Activity transition sample
1 parent 57580ac commit 9cfc465

File tree

17 files changed

+238
-7
lines changed

17 files changed

+238
-7
lines changed

Tutorial2-1AnimatedVectorDrawables/src/main/java/com/smarttoolfactory/tutorial2_1animatedvectordrawables/Activity1_1Basics.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Activity1_1Basics : AppCompatActivity() {
2121
setContentView(R.layout.activity1_1basics)
2222
title = getString(R.string.activity1_1)
2323

24-
val dataList = getVectorDrawableItemList()
24+
val dataList:List<Any> = getVectorDrawableItemList()
2525

2626
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
2727

Tutorial2-1AnimatedVectorDrawables/src/main/java/com/smarttoolfactory/tutorial2_1animatedvectordrawables/adapter/itemdecoration/GridSpacingItemDecoration.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class GridSpacingItemDecoration(
3636
return
3737
}
3838

39+
// After scroll check for the closest header above this position
3940
if (headerPositions.isEmpty()) {
4041
headerPosition = -1
4142
} else {

Tutorial3-1Transitions/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
<category android:name="android.intent.category.LAUNCHER" />
1717
</intent-filter>
1818
</activity>
19+
<activity android:name=".chapter1_basics.Activity1_1Basics" />
20+
<activity android:name=".chapter1_basics.Activity1_1DetailPage" />
1921
</application>
2022

2123
</manifest>

Tutorial3-1Transitions/src/main/java/com/smarttoolfactory/tutorial3_1transitions/MainActivity.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
1010
import com.smarttoolfactory.tutorial3_1transitions.adapter.BaseAdapter
1111
import com.smarttoolfactory.tutorial3_1transitions.adapter.ChapterSelectionAdapter
1212
import com.smarttoolfactory.tutorial3_1transitions.adapter.model.ActivityClassModel
13+
import com.smarttoolfactory.tutorial3_1transitions.chapter1_basics.Activity1_1Basics
1314
import com.smarttoolfactory.tutorial3_1transitions.databinding.ActivityMainBinding
1415
import java.util.ArrayList
1516

@@ -55,12 +56,12 @@ class MainActivity : AppCompatActivity(), BaseAdapter.OnRecyclerViewItemClickLis
5556
private fun addChapters() {
5657

5758
// Add Activities to list to be displayed on RecyclerView
58-
// activityClassModels.add(
59-
// ActivityClassModel(
60-
// Activity1_1Basics::class.java,
61-
// getString(R.string.activity1_1)
62-
// )
63-
// )
59+
activityClassModels.add(
60+
ActivityClassModel(
61+
Activity1_1Basics::class.java,
62+
getString(R.string.activity1_1)
63+
)
64+
)
6465

6566

6667
}

Tutorial3-1Transitions/src/main/java/com/smarttoolfactory/tutorial3_1transitions/adapter/ChapterSelectionAdapter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.smarttoolfactory.tutorial3_1transitions.adapter
22

3+
import com.smarttoolfactory.tutorial3_1transitions.R
34
import com.smarttoolfactory.tutorial3_1transitions.adapter.model.ActivityClassModel
45

56

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.smarttoolfactory.tutorial3_1transitions.adapter.model
2+
3+
import android.os.Parcelable
4+
import kotlinx.android.parcel.Parcelize
5+
6+
@Parcelize
7+
data class Post(
8+
val id: Int,
9+
val userId: Int,
10+
val title: String,
11+
val body: String
12+
) : Parcelable
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.smarttoolfactory.tutorial3_1transitions.chapter1_basics
2+
3+
import android.app.ActivityOptions
4+
import android.content.Intent
5+
import android.os.Bundle
6+
import androidx.appcompat.app.AppCompatActivity
7+
import androidx.core.view.ViewCompat
8+
import com.smarttoolfactory.tutorial3_1transitions.R
9+
import kotlinx.android.synthetic.main.activity1_1basics.*
10+
11+
class Activity1_1Basics : AppCompatActivity() {
12+
13+
override fun onCreate(savedInstanceState: Bundle?) {
14+
super.onCreate(savedInstanceState)
15+
setContentView(R.layout.activity1_1basics)
16+
title = getString(R.string.activity1_1)
17+
18+
val imageRes = R.drawable.avatar_1_raster
19+
ivAvatar.setImageResource(imageRes)
20+
21+
cardView.setOnClickListener {
22+
val intent = Intent(this, Activity1_1DetailPage::class.java)
23+
intent.putExtra("imageRes", imageRes)
24+
25+
// create the transition animation - the images in the layouts
26+
// of both activities are defined with android:transitionName="robot"
27+
val options = ActivityOptions
28+
.makeSceneTransitionAnimation(
29+
this,
30+
ivAvatar,
31+
ViewCompat.getTransitionName(ivAvatar)
32+
)
33+
// start the new activity
34+
startActivity(intent, options.toBundle())
35+
}
36+
37+
}
38+
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.smarttoolfactory.tutorial3_1transitions.chapter1_basics
2+
3+
import android.os.Bundle
4+
import android.transition.Fade
5+
import android.transition.Transition
6+
import android.view.View
7+
import androidx.appcompat.app.AppCompatActivity
8+
import com.smarttoolfactory.tutorial3_1transitions.R
9+
import kotlinx.android.synthetic.main.activity1_1details.*
10+
11+
12+
class Activity1_1DetailPage : AppCompatActivity() {
13+
14+
override fun onCreate(savedInstanceState: Bundle?) {
15+
super.onCreate(savedInstanceState)
16+
setContentView(R.layout.activity1_1details)
17+
val imageRes = intent.getIntExtra("imageRes", -1)
18+
if (imageRes != -1) {
19+
ivImage.setImageResource(imageRes)
20+
}
21+
22+
23+
// 🔥 Prevents status bar blinking issue
24+
val fade: Transition = Fade()
25+
val decor = window.decorView
26+
27+
val view = decor.findViewById<View>(R.id.action_bar_container)
28+
fade.excludeTarget(view, true)
29+
fade.excludeTarget(android.R.id.statusBarBackground, true)
30+
fade.excludeTarget(android.R.id.navigationBarBackground, true)
31+
window.enterTransition = fade
32+
window.exitTransition = fade
33+
34+
}
35+
}
Loading
Loading

0 commit comments

Comments
 (0)