代码之家  ›  专栏  ›  技术社区  ›  Amrdroid

在android中创建类似google日历图像的自定义日历形状

  •  0
  • Amrdroid  · 技术社区  · 7 年前

    我想创建自定义日历形状 google calendar icon 并将其用作其他视图(如ImageView和Textview)的容器 我尝试使用XML可绘制形状,结果似乎不太好 什么是正确的创造方式?

    bg峎u日历_视图.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_通知_视图.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>
    

    背景图底部_日历.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>
    

    背景图顶部_日历.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>
    

    我的_布局.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 回复  |  直到 7 年前
        1
  •  1
  •   touhid udoy    7 年前

    我们开发了几个月的日历。

    首先我们使用线性布局来填充单元格。我们有35个细胞 每个单元格包含1个RelativeLayout和3个文本视图。

    然后我们以编程的方式将视图填充到单元格中,这很简单,但结果却是一个非常缓慢的实现。 然后我们使用RecyclerView实现cell,但它并没有得到很大的提高。

    一旦我们发现了要将复杂视图填充35次的瓶颈。

    然后我们遇到了一个 video 关于自定义视图。因此,我们决定在经过大量研究后,尝试自定义视图,瞧!解决了我们落后的问题。

    你也应该像我们一样试试。