Уменьшено пространство между нижними элементами. Использование эффектов карусели в диспетчере пользовательского макета вJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Уменьшено пространство между нижними элементами. Использование эффектов карусели в диспетчере пользовательского макета в

Сообщение Anonymous »


Я использую менеджер пользовательских макетов ArcLayoutManager, создал собственный адаптер с просмотром изображений и программно настраиваю макеты в основном действии. Я использовал функцию заполнения в arclayout для обработки изогнутой формы элементов, но моя проблема в том, что мои последние нижние элементы занимают слишком много места, поэтому я хочу уменьшить его.

LinearLayout LinearLayout = новый LinearLayout(this); LinearLayout.setLayoutParams(новый ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); LinearLayout.setOrientation(LinearLayout.HORIZONTAL); Растровое изображение = BitmapFactory.decodeResource(getResources(), R.drawable.background_carouesel); BitmapDrawable bitmapDrawable = новый BitmapDrawable (getResources (), растровое изображение); bitmapDrawable.setGravity(Gravity.CENTER); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { линейныйLayout.setBackground(bitmapDrawable); } еще { линейныйLayout.setBackgroundDrawable(bitmapDrawable); } //linearLayout.setBackgroundResource(R.drawable.background_carouesel); setContentView (linearLayout); // Создаем RecyclerView RecyclerView recyclerView = новый RecyclerView (это); LinearLayout.LayoutParams recyclerViewParams = новый LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); recyclerView.setLayoutParams(recyclerViewParams); ArcLayoutManager arcLayoutManager = новый ArcLayoutManager (это, 0); recyclerView.setLayoutManager(arcLayoutManager); Адаптер CarouselViewAdapter = новый CarouselViewAdapter (список); recyclerView.setAdapter(адаптер); recyclerView.setHasFixedSize(истина); линейныйLayout.addView(recyclerView); Это мой функциональный код:

private int prevDy = 0; Private void fill (RecyclerView.Recycler recycler, RecyclerView.State state) { detachAndScrapAttachedViews (переработчик); int centerX = getWidth()/2; int topMargin = (int) pxFromDp(context, 60f); int itemSpacing = (int) pxFromDp(context, 50f); int viewWidth = (int) pxFromDp(context, 200f); int viewHeight = (int) pxFromDp(context, 230f); int itemCount = getItemCount(); intvisibleItemCount = Math.min(itemCount, 7); float totalWidth =visibleItemCount * viewWidth + (visibleItemCount - 1) * itemSpacing; int dy = ComputeVerticalScrollOffset (состояние); // Вычисляем смещение вертикальной прокрутки логическая прокруткаUp = dy > prevDy; предыдущая = dy; for (int itemIndex = 0; itemIndex < itemCount; itemIndex++) { Просмотр представления = recycler.getViewForPosition(itemIndex); addView (просмотр); float itemSpacingAdjusted = (getWidth() - totalWidth) / (visibleItemCount - 1); int left = (int) (itemIndex * (viewWidth + itemSpacingAdjusted)) - горизонтальное смещение + (itemIndex > 0? itemIndex * itemSpacing: 0); int вправо = влево + viewWidth; int MidX = (int) ((лево + право)/2.1f); Pair top = ComputeYComponent(midX, viewHeight); int дно = top.first + viewHeight; двойная альфа = топ.секунда; float distanceFromCenter = Math.abs(midX - centerX); // Скорректирован коэффициент масштабирования, чтобы дать больше места для центральных элементов масштаб с плавающей запятой = 1,2f - 0,5f * Math.min(1f, distanceFromCenter / (float) centerX); // Скорректировано масштабирование последнего элемента, чтобы он занимал меньше места если (itemIndex == itemCount - 1) { масштаб = 1,2f - 0,1f * Math.min(1f, distanceFromCenter / (float) centerX); } если (прокрутка вверх) { view.setRotation((float) (alpha * (180 / Math.PI)) - 90f); } еще { view.setRotation(0f); // Нет вращения при прокрутке вниз } view.setScaleX(масштаб); view.setScaleY(масштаб); MeasureChildWithMargins (представление, viewWidth, viewHeight); макетDecoratedWithMargins (вид, слева, сверху.первый + topMargin, справа, снизу); } for (RecyclerView.ViewHolder viewHolder: recycler.getScrapList()) { recycler.recycleView(viewHolder.itemView); } } Я использую эту ссылку: https://medium.com/mindvalley-technolog ... a1626b1b98
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»