ethanhua / skeleton Goto Github PK
View Code? Open in Web Editor NEWA library provides an easy way to show skeleton loading view like Facebook and Alipay
A library provides an easy way to show skeleton loading view like Facebook and Alipay
ItemDecorations doesn't apply to the skeleton layout files, any fix?
Hi,
Is it possible to give sone view to Skeleton that we want to exclude to have the shimmer animation ?
For example, I have a card view, the bacjground is important so I can't put it transparent. I need to exlude it to skeleton.
Thx for you library 👍
Activity section this working fine. How can add this feature in fragment?
Shimmer效果会偶现卡顿、闪烁或者重影的现象
Hi,
We pushed an update to our app 2 days ago, the main change being the addition of Skeleton. It is really amazing and easy to setup, for which thanks a lot!
The only issue is that we got a new crash caught by Crashlytics, which already happened few dozen times ( we have 100k active users, around 50% updated ).
After hours spent on investigation we suspect that it's caused by ViewReplacer, either by replace() or restore() when they call removeView. Earlier versions of Android ( < 7.0 ) have a bug in ViewGroup's dispatchDraw(), which crashes app mostly when you use removeView and the removed child is null during that specific moment I guess.
Related thread on SO
And here is the relevant part of the crash log:
Attempt to read from field 'int android.view.View.mViewFlags' on a null object reference
android.view.ViewGroup.dispatchDraw (ViewGroup.java:3330)
android.view.View.updateDisplayListIfDirty (View.java:14415)
android.view.View.getDisplayList (View.java:14452)
android.view.View.draw (View.java:15257)
android.view.ViewGroup.drawChild (ViewGroup.java:3540)
....
First of all I would like to thank you fort this amazing library!
In the app I'm building, my layout has a different first item in the RecyclerView, a "header" or "promoted" first item, and the rest of them are a second layout. Is there a way to get Skeleton to mimic this layout?
Imagine the layout where it's a vertical list of articles, and the first article is double the height of the rest of them, and some elements moved around, like the title.
Thank you!
Hi , I am using skeleton for recycle view but every time I scroll and next page response received . the list is displayed from 0 position. I recycleview not maintaining the last page position.
in a viewpager if i have different shimmer layouts for each fragment, the shimmers get merged in random way when you navigate from one fragment to another.
Ex: Viewpager with 5 fragments with recyclerviews
F1 has S1 as shimmer layout and so on..
I see
S1
S2
S1
as shimmerview instead of seeing
S1
S1
S1
in F1
Hey, maybe I am just using the library wrong, but I have the issue that instead the "shimmer effect" is on each individual skeleton view, I have just a big black bar running from left to right which looks incredibly ugly..
Did you encounter this issue before and what can I do to avoid it?
Hello,
Thanks for your library it's very handful, i have issue when implement it using the following code :
Skeleton.bind(recyclerview)
.adapter(adapter)
.shimmer(true)
.angle(20)
.frozen(true)
.duration(1200)
.count(10)
.load(R.layout.account_skeleton_row)
.show()
the row in recyclerview doesn't full the screen width, can check this issue.
Thanks,
it is not showing skeleton item full width in Recyclerview with horizontal layout. it is working perfectly in vertical layout.
Is there any way to get Skeleton ot work work with viewpagers? It seems like it would not work with standard view.
Will it be necessary to write something similar to the recycler view holder in order for it to be compatible, or is there a workaround?
Im using the skeleton and when I'm binding it to the recycler view it's automatically disappear when data is in place, but when I enter to another fragment and then return to the one with the loading the skeleton returns again.
I tried to use the hide() function but it just hiding the recycler as well.
I'm using the Shimmerlayout in a viewpager....Each fragment of the viewpager has a recyclerview...
So upon scrollling inside one of my fragments, my app crashed and I get this error:
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap
Here is the method in question:
private Bitmap createBitmap(int width, int height) { try { return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); } catch (OutOfMemoryError e) { System.gc(); return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); } #}
i want to show image after downloading from network(Glide4),but skeleton seem not support to preload the adapter?anyone can help?thanks
it does not work in fragment when has empty view. view.getParent() always null.
Code for showing animation
RecyclerViewSkeletonScreen skeletonScreen = Skeleton.bind(viewHolder.listSchedule)
.adapter(scheduleListAdapter)
.load(R.layout.item_schedule)
.show();
Hiding it
skeletonScreen.hide();
Item Layout File
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/box_item_schedule"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_margin="@dimen/space_5"
android:clipToPadding="false"
app:cardCornerRadius="@dimen/space_10"
app:cardElevation="@dimen/space_5"
app:cardPreventCornerOverlap="true"
tools:cardBackgroundColor="@color/com_facebook_blue">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_schedule_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="@dimen/space_20"
android:paddingTop="@dimen/space_20"
android:paddingEnd="@dimen/space_20"
android:shadowColor="@android:color/black"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="5"
android:textAppearance="?textAppearanceListItemSecondary"
android:textColor="@android:color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@tools:sample/date/hhmmss" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_schedule_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="@dimen/space_20"
android:paddingEnd="@dimen/space_20"
android:paddingBottom="@dimen/space_20"
android:shadowColor="@android:color/black"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="5"
android:textAppearance="?textAppearanceListItem"
android:textColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="Hello How Are You?" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
fragment+view Pager 展示不了骨架屏
Hello , How to work in Fragment+ViewPager.
Hello, I found that library does not work with DiffUtill. When a new list is added, it will scroll to the first position. Сould you fix this?
You should now use 'https://github.com/team-supercharge/ShimmerLayout' instead of ('https://github.com/team-supercharge/ShimmerLayout') , because supercharge has jerks in Android 9 version and is not being updated from years, while facebook is updating its library, and doesn't has jerks.
skeletonScreen = Skeleton.bind(rootView)
.color(R.color.tlShimmerColor)
.load(R.layout.item_skeleton_view_profile)
.show();
Leads to FrameLayout
being leaked. My analysis is that this is due to this function:
private ShimmerLayout generateShimmerContainerLayout(ViewGroup parentView) {
final ShimmerLayout shimmerLayout = (ShimmerLayout) LayoutInflater.from(mActualView.getContext()).inflate(R.layout.layout_shimmer, parentView, false);
shimmerLayout.setShimmerColor(mShimmerColor);
shimmerLayout.setShimmerAngle(mShimmerAngle);
shimmerLayout.setShimmerAnimationDuration(mShimmerDuration);
View innerView = LayoutInflater.from(mActualView.getContext()).inflate(mSkeletonResID, shimmerLayout, false);
ViewGroup.LayoutParams lp = innerView.getLayoutParams();
if (lp != null) {
shimmerLayout.setLayoutParams(lp);
}
shimmerLayout.addView(innerView);
shimmerLayout.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
shimmerLayout.startShimmerAnimation();
}
@Override
public void onViewDetachedFromWindow(View v) {
shimmerLayout.stopShimmerAnimation();
}
});
shimmerLayout.startShimmerAnimation();
return shimmerLayout;
}
A new object is being inflated which internally uses the rootView but it is never destroyed explicitly.
This is my main layout
<android.support.v7.widget.RecyclerView
android:id="@+id/timeSlots"
android:layout_width="match_parent"
android:layout_height="70dp"
android:cacheColorHint="@android:color/transparent"
android:fadingEdgeLength="35dp"
android:orientation="horizontal"
android:requiresFadingEdge="horizontal"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
tools:listitem="@layout/item_timeslot" />
This is skeleton layout
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="70dp"
android:layout_height="70dp">
<View
android:background="@drawable/ic_svg_timeslot_skeleton"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.constraint.ConstraintLayout>
Then this is my Kotlin code
Skeleton.bind(skeletonView)
.adapter(skeletonView.adapter)
.load(skeletonLayout)
.shimmer(true)
.color(R.color.shimmer)
.duration(1500)
.count(5)
.frozen(true)
.show()
Somehow it not show 5 items in horizontal mode, but when I change it to the vertical mode it works perfectly.
How can I add some animation to be more fluent like a Fade In and Fade Out Transition?
I have a case where I would like to only show a partial of the row view as skeleton because it have some data available but the rest I am waiting for a api call to complete before I am able to show.
Is this possible with this lib somehow with binding to a specific view without loading the layout through skeleton?
Please migrate to AndroidX if this libary should continue to be usable, as this is a requirement for Google Play as of 1. of november do to min api 28 and firebase for that version requires AndroidX.
i don't can't can implement skeletonScreen.hide()
One word: NICE !!
But why is the min SDK set to 15 ??
From what I see the library looks compatible for devices lower than that yes ?
I use a CardView as root layout and shimmering is showing on the whole view. Already tried setting transparent background. Didn't work.
Hi, can you update build after that fix
//implementation project(':library')
这导致项目在 clone 后无法正常 build,也是排查了好一会儿才发现。
建议是改成注释远程依赖:
implementation project(':library')
// implementation 'com.ethanhua:skeleton:1.1.2'
Version: 1.1.0
AndroidRuntime: java.lang.NoSuchFieldError: No static field shimmer_color of type I in class Lcom/ethanhua/skeleton/R$color; or its superclasses (declaration of 'com.ethanhua.skeleton.R$color' appears in /data/app/io.zla.app.dev-Vy5HPDU23Z-PLz_xYaxCWw==/base.apk!classes3.dex)
AndroidRuntime: at com.ethanhua.skeleton.RecyclerViewSkeletonScreen$Builder.<init>(RecyclerViewSkeletonScreen.java:62)
AndroidRuntime: at com.ethanhua.skeleton.Skeleton.bind(Skeleton.java:13)
How can freeze the SkeltonView or set scroll or enabled false ?
2 android.graphics.LinearGradient.copy(LinearGradient.java:129)
3 android.graphics.ComposeShader.copy(ComposeShader.java:96)
4 android.graphics.Shader.mzReversalCopy(Shader.java:134)
5 com.meizu.nightmode.MzNightModeManager.beforeDrawColor(MzNightModeManager.java:830)
6 com.meizu.nightmode.MzNightModeManager.beforeDrawColor(MzNightModeManager.java:810)
7 android.view.RecordingCanvas.drawRect(RecordingCanvas.java:622)
8 io.supercharge.shimmerlayout.ShimmerLayout.drawShimmer(ShimmerLayout.java:261)
9 io.supercharge.shimmerlayout.ShimmerLayout.dispatchDrawShimmer(ShimmerLayout.java:250)
10 io.supercharge.shimmerlayout.ShimmerLayout.dispatchDraw(ShimmerLayout.java:106)
11 android.view.View.draw(View.java:19355)
12 android.view.View.updateDisplayListIfDirty(View.java:18295)
13 android.view.View.draw(View.java:19073)
14 android.view.ViewGroup.drawChild(ViewGroup.java:4236)
15 androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:4820)
如标题
i dont know why?could you please tell me why
I'm getting exception when i try to load same screen again, first time it is working, 3rd or 4th time its crashing. " java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference"
Abnormal crash!
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.unFocus(android.view.View)' on a null object reference at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5465) at android.view.ViewGroup.removeViewAt(ViewGroup.java:5428) at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1250) at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439) at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079) at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869) at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824) at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727) at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:230)
I've got such code before using your framework:
mRecyclerView.setLayoutManager(new LinearLayoutManager(rootView.getContext(), LinearLayoutManager.HORIZONTAL, false));
But if I use your framework, even when specifying count I still can see only one item, but I guess it's only because it's in Vertical mode.
I added pagination for recyclerview. After I loaded new items its forcefully scroll to top(0th) position.
Finally I found this is happening only because of Skeleton layout applied for recylerview.
I successfully doing pagination and maintain same scroll position with hiding skeleton piece code. If I add skeleton code only its not working proper.
Please fix this.
skeletonScreen = Skeleton.bind(recyclerView)
.adapter(courseLibraryAdapter)
.load(R.layout.row_course_library_skeleton)
.shimmer(true)
.angle(20)
.frozen(false)
.duration(1200)
.count(10)
.show()
fun RecyclerView.addOnScrolledToEnd(onScrolledToEnd: () -> Unit){
this.addOnScrollListener(object: RecyclerView.OnScrollListener(){
var visibleThreshold = 5
private var loading = true
private var previousTotal = 0
override fun onScrollStateChanged(recyclerView: RecyclerView,
newState: Int) {
with(layoutManager as LinearLayoutManager){
val visibleItemCount = childCount
val totalItemCount = itemCount
val firstVisibleItem = findFirstVisibleItemPosition()
if (loading && totalItemCount > previousTotal){
loading = false
previousTotal = totalItemCount
}
if(!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)){
onScrolledToEnd()
loading = true
}
}
}
})
}
recyclerView.addOnScrolledToEnd {
//What you want to do once the end is reached
page++
pbViewMore!!.visibility = View.VISIBLE
callAsync()
}
class CourseLibraryAdapter(private val context: Context, private var myCourseList: MutableList<MyLearningCourseVo>): RecyclerView.Adapter<CourseLibraryAdapter.ViewHolder>() {
inner class ViewHolder(var view: View) : RecyclerView.ViewHolder(view) {
val tvCourseName: TextView = view.findViewById(R.id.tv_course_name)
}
fun swapList(myCourseList: MutableList<MyLearningCourseVo>) {
this.myCourseList.addAll(myCourseList)
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView = LayoutInflater.from(context).inflate(R.layout.row_course_library, parent, false)
return ViewHolder(itemView)
}
override fun getItemCount(): Int {
return myCourseList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val myLearningCourseVo = myCourseList[position]
holder.tvCourseName.text = myLearningCourseVo.name
}
}
I've got a StackOverflowError from my user.
Divece info:
See log:
Fatal Exception: java.lang.StackOverflowError at java.lang.Class.getDeclaredField(Class.java) at java.lang.Class.getDeclaredField(Class.java:629) at androidx.core.graphics.TypefaceCompatBaseImpl.getUniqueKey(TypefaceCompatBaseImpl.java:85) at androidx.core.graphics.TypefaceCompatBaseImpl.getFontFamily(TypefaceCompatBaseImpl.java:211) at androidx.core.graphics.TypefaceCompat.getBestFontFromFamily(TypefaceCompat.java:173) at androidx.core.graphics.TypefaceCompat.create(TypefaceCompat.java:200) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:708) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypeface(TextView.java:1581) at androidx.appcompat.widget.AppCompatTextView.setTypeface(AppCompatTextView.java:711) at android.widget.TextView.setTypefaceFromAttrs(TextView.java:1391) at android.widget.TextView.<init>(TextView.java:1300) at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95) at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:194) at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1551) at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) at com.ethanhua.skeleton.ShimmerViewHolder.<init>(ShimmerViewHolder.java:17) at com.ethanhua.skeleton.SkeletonAdapter.onCreateViewHolder(SkeletonAdapter.java:27) at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134) at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:326) at android.view.View.measure(View.java:15811) at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760) at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:99) at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1996) at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831) at android.view.View.measure(View.java:15811) at android.widget.LinearLayout.measureVertical(LinearLayout.java:866) at android.widget.LinearLayout.onMeasure(LinearLayout.java:604) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:326) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:326) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1427) at android.widget.LinearLayout.measureVertical(LinearLayout.java:714) at android.widget.LinearLayout.onMeasure(LinearLayout.java:604) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:326) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1427) at android.widget.LinearLayout.measureVertical(LinearLayout.java:714) at android.widget.LinearLayout.onMeasure(LinearLayout.java:604) at android.view.View.measure(View.java:15811) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4952) at android.widget.FrameLayout.onMeasure(FrameLayout.java:326) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2209) at android.view.View.measure(View.java:15811) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2232) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1310) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1505) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1200) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4962) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776) at android.view.Choreographer.doCallbacks(Choreographer.java:579) at android.view.Choreographer.doFrame(Choreographer.java:548) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762) at android.os.Handler.handleCallback(Handler.java:800) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5449) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(NativeStart.java)
First of all, Thank you for contributing such fabulous library.
I am applying shimmering effect on a View
and I am facing issue in one case. Case is, when I use RootView as CoordinatorLayout
it doesn't work.
Code in My Fragment onCreateView -
ViewSkeletonScreen skeletonScreen = Skeleton.bind(shimmerLinearLayout)
.load(R.layout.layout_job_seeker_details_skeleton)
.color(R.color.white)
.show();
My Fragment xml -
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/shimmerLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.varad.myapp.fragment.MainFragment">
.... AppBarLayout ... NestedScrollView ....
</android.support.design.widget.CoordinatorLayout>
But when I include LinearLayout
under CoordinatorLayout
and assign id to LinearLayout
it works. But if I use LinearLayout
under CoordinatorLayout
the scroll effect of AppBarLayout
will not show any effect.
Updated Fragment xml -
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.varad.myapp.fragment.MainFragment">
<LinearLayout
android:id="@+id/shimmerLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
.... AppBarLayout ... NestedScrollView ....
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
Why so?
when i apply it for view which is an item of recyclerview, when i scrolled down sometimes not getting shimmer animation for that skeleton view
Do you need to configure the obfuscation file?
我的页面结构是最外层是一个TabLayoutView,含有五个Fragment页面,我需要更改其中一个Fragment加载数据前的页面为骨架屏,我使用的是骨架加载预览 View这种方式,但是骨架屏页面为空白
Hello, i finded that now ShimmerLayout id Deprecated
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.