package org.telegram.ui.Cells; import android.content.Context; import android.database.DataSetObserver; import android.os.Parcelable; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import org.telegram.messenger.AndroidUtilities; import org.telegram.messenger.FileLog; import org.telegram.ui.ActionBar.Theme; import org.telegram.ui.Components.BottomPagesView; import org.telegram.ui.Components.LayoutHelper; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; public class ArchiveHintCell extends FrameLayout { private BottomPagesView bottomPages; private ViewPager viewPager; public ArchiveHintCell(Context context) { super(context); viewPager = new ViewPager(context) { @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (getParent() != null) { getParent().requestDisallowInterceptTouchEvent(true); } return super.onInterceptTouchEvent(ev); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); requestLayout(); } }; AndroidUtilities.setViewPagerEdgeEffectColor(viewPager, Theme.getColor(Theme.key_actionBarDefaultArchived)); viewPager.setAdapter(new Adapter()); viewPager.setPageMargin(0); viewPager.setOffscreenPageLimit(1); addView(viewPager, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT)); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { bottomPages.setPageOffset(position, positionOffset); } @Override public void onPageSelected(int i) { FileLog.d("test1"); } @Override public void onPageScrollStateChanged(int i) { FileLog.d("test1"); } }); bottomPages = new BottomPagesView(context, viewPager, 3); bottomPages.setColor(Theme.key_chats_unreadCounterMuted, Theme.key_chats_actionBackground); addView(bottomPages, LayoutHelper.createFrame(33, 5, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0, 0, 19)); } @Override public void invalidate() { super.invalidate(); bottomPages.invalidate(); } public ViewPager getViewPager() { return viewPager; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(204), MeasureSpec.EXACTLY)); } private class Adapter extends PagerAdapter { @Override public int getCount() { return 3; } @Override public Object instantiateItem(ViewGroup container, int position) { ArchiveHintInnerCell innerCell = new ArchiveHintInnerCell(container.getContext(), position); if (innerCell.getParent() != null) { ViewGroup parent = (ViewGroup) innerCell.getParent(); parent.removeView(innerCell); } container.addView(innerCell, 0); return innerCell; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); bottomPages.setCurrentPage(position); } @Override public boolean isViewFromObject(View view, Object object) { return view.equals(object); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void unregisterDataSetObserver(DataSetObserver observer) { if (observer != null) { super.unregisterDataSetObserver(observer); } } } }