Skip to content

Commit ab50b0b

Browse files
committed
adding some animations
1 parent 0e07117 commit ab50b0b

File tree

5 files changed

+42
-21
lines changed

5 files changed

+42
-21
lines changed

app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ class MainActivity : SimpleActivity() {
247247
conversations_list.adapter = this
248248
}
249249

250+
conversations_list.scheduleLayoutAnimation()
250251
conversations_fastscroller.setViews(conversations_list) {
251252
val listItem = (conversations_list.adapter as? ConversationsAdapter)?.conversations?.getOrNull(it)
252253
conversations_fastscroller.updateBubbleText(listItem?.title ?: "")

app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/NewConversationActivity.kt

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -138,24 +138,31 @@ class NewConversationActivity : SimpleActivity() {
138138
no_contacts_placeholder.text = getString(placeholderText)
139139
}
140140

141-
ContactsAdapter(this, contacts, contacts_list, null) {
142-
hideKeyboard()
143-
val contact = it as SimpleContact
144-
val phoneNumbers = contact.phoneNumbers
145-
if (phoneNumbers.size > 1) {
146-
val items = ArrayList<RadioItem>()
147-
phoneNumbers.forEachIndexed { index, phoneNumber ->
148-
items.add(RadioItem(index, phoneNumber, phoneNumber))
149-
}
141+
val currAdapter = contacts_list.adapter
142+
if (currAdapter == null) {
143+
ContactsAdapter(this, contacts, contacts_list, null) {
144+
hideKeyboard()
145+
val contact = it as SimpleContact
146+
val phoneNumbers = contact.phoneNumbers
147+
if (phoneNumbers.size > 1) {
148+
val items = ArrayList<RadioItem>()
149+
phoneNumbers.forEachIndexed { index, phoneNumber ->
150+
items.add(RadioItem(index, phoneNumber, phoneNumber))
151+
}
150152

151-
RadioGroupDialog(this, items) {
152-
launchThreadActivity(it as String, contact.name)
153+
RadioGroupDialog(this, items) {
154+
launchThreadActivity(it as String, contact.name)
155+
}
156+
} else {
157+
launchThreadActivity(phoneNumbers.first(), contact.name)
153158
}
154-
} else {
155-
launchThreadActivity(phoneNumbers.first(), contact.name)
159+
}.apply {
160+
contacts_list.adapter = this
156161
}
157-
}.apply {
158-
contacts_list.adapter = this
162+
163+
contacts_list.scheduleLayoutAnimation()
164+
} else {
165+
(currAdapter as ContactsAdapter).updateContacts(contacts)
159166
}
160167

161168
setupLetterFastscroller(contacts)

app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ContactsAdapter.kt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ import com.simplemobiletools.smsmessenger.R
1717
import com.simplemobiletools.smsmessenger.activities.SimpleActivity
1818
import java.util.*
1919

20-
class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleContact>, recyclerView: MyRecyclerView, fastScroller: FastScroller?,
21-
itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
20+
class ContactsAdapter(
21+
activity: SimpleActivity, var contacts: ArrayList<SimpleContact>, recyclerView: MyRecyclerView, fastScroller: FastScroller?,
22+
itemClick: (Any) -> Unit
23+
) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
2224
private var fontSize = activity.getTextSize()
2325

2426
override fun getActionMenuId() = 0
@@ -51,10 +53,12 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
5153

5254
override fun getItemCount() = contacts.size
5355

54-
override fun onViewRecycled(holder: ViewHolder) {
55-
super.onViewRecycled(holder)
56-
if (!activity.isDestroyed && !activity.isFinishing) {
57-
Glide.with(activity).clear(holder.itemView.findViewById<ImageView>(R.id.item_contact_image))
56+
fun updateContacts(newContacts: ArrayList<SimpleContact>) {
57+
val oldHashCode = contacts.hashCode()
58+
val newHashCode = newContacts.hashCode()
59+
if (newHashCode != oldHashCode) {
60+
contacts = newContacts
61+
notifyDataSetChanged()
5862
}
5963
}
6064

@@ -75,4 +79,11 @@ class ContactsAdapter(activity: SimpleActivity, var contacts: ArrayList<SimpleCo
7579
SimpleContactsHelper(context).loadContactImage(contact.photoUri, findViewById(R.id.item_contact_image), contact.name)
7680
}
7781
}
82+
83+
override fun onViewRecycled(holder: ViewHolder) {
84+
super.onViewRecycled(holder)
85+
if (!activity.isDestroyed && !activity.isFinishing) {
86+
Glide.with(activity).clear(holder.itemView.findViewById<ImageView>(R.id.item_contact_image))
87+
}
88+
}
7889
}

app/src/main/res/layout/activity_main.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
android:layout_width="match_parent"
4444
android:layout_height="match_parent"
4545
android:clipToPadding="false"
46+
android:layoutAnimation="@anim/layout_animation"
4647
android:overScrollMode="ifContentScrolls"
4748
android:scrollbars="none"
4849
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />

app/src/main/res/layout/activity_new_conversation.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
android:layout_height="match_parent"
102102
android:layout_below="@+id/suggestions_scrollview"
103103
android:clipToPadding="false"
104+
android:layoutAnimation="@anim/layout_animation"
104105
android:overScrollMode="ifContentScrolls"
105106
android:scrollbars="none"
106107
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />

0 commit comments

Comments
 (0)