создать собственную форму календаря, как изображение календаря Google в Android - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу создать собственную форму календаря, такую ​​как значок календаря Google и использовать ее в качестве контейнера других представлений, таких как ImageView и Textview.создать его программно, но я не могу знать, как поставить другие представления в пользовательском представлении, как правильно создать это?

bg_calendar_view.xml

<!-- Gray shadow. -->
<item>
    <shape>
        <solid android:color="#dadada" />
        <corners android:radius="15dp" />
    </shape>
</item>

<!-- White foreground.  -->
<item
    android:top="3dp"
    android:left="2dp"
    android:bottom="1dp"
    >
    <shape>
        <solid android:color="@android:color/white" />
        <corners android:radius="15dp" />
    </shape>
</item>

bg_notification_view.xml

<!-- Gray shadow. -->
<item>
    <shape>
        <solid android:color="#dadada" />
        <corners android:radius="15dp" />
    </shape>
</item>

<!-- White foreground.  -->
<item
    android:bottom="3dp"
    android:top="1dp"
    android:left="2dp">
    <shape>
        <solid android:color="@android:color/white" />
        <corners android:radius="15dp" />
    </shape>
</item>

bg_bottom_calendar.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:bottom="4dp"
    android:right="25dp"
    android:left="25dp"
    android:drawable="@drawable/bg_notification_view">

</item>
<item
    android:left="15dp"
    android:bottom="20dp"
    android:right="15dp"


    android:drawable="@drawable/bg_notification_view">


</item>
<item
    android:bottom="40dp"
    android:drawable="@drawable/bg_notification_view">

</item>

bg_top_calendar.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:bottom="4dp"
    android:right="25dp"
    android:left="25dp"
    android:drawable="@drawable/bg_calendar_view">

</item>
<item
    android:right="15dp"
    android:left="15dp"
    android:top="20dp"
    android:drawable="@drawable/bg_calendar_view">

</item>
<item
    android:top="40dp"
    android:drawable="@drawable/bg_calendar_view_blue">

</item>

my_layout.xml

<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:padding="16dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:background="@drawable/bg_top_calendar"
    android:padding="40dp"
    android:gravity="center"
    android:orientation="vertical"
    >
    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/notification"
        android:layout_gravity="center"
        android:layout_marginBottom="8dp"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="you Have 31 Notification"
        android:textColor="@color/white"
        android:textSize="18sp"/>

</LinearLayout>
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:background="@drawable/bg_bottom_calendar"
    android:paddingBottom="40dp"
    android:paddingStart="4dp"
    android:paddingEnd="4dp"
    android:paddingTop="4dp"
    >

</FrameLayout>

1 Ответ

0 голосов
/ 02 декабря 2018

Мы разработали календарь на несколько месяцев.

Сначала мы использовали линейный макет для заполнения ячеек.У нас было 35 ячеек и каждая ячейка содержала 1 RelativeLayout и 3 TextViews.

Затем мы программно заполняли представления в ячейки, что было легко, но оказалось очень медленной реализацией.Затем мы использовали RecyclerView для реализации ячеек, но он не увеличился слишком быстро.

Как только мы обнаружим, что нашим узким местом является заполнение сложных представлений 35 раз.

Затем мы натолкнулись на видео о пользовательских видах.Поэтому мы решили попробовать пользовательские виды после долгих исследований, и вуаля!Это решило наши проблемы с запаздыванием, как талисман.

Вы тоже должны попробовать, как мы.

...