当前位置: 首页 > 知识库问答 >
问题:

Android CalendarView减慢布局

左丘耀
2023-03-14

这让我快发疯了。我的Android应用程序中有一个片段,它是使用相对论工具来布局的。问题是,由于某些原因,渲染需要很长时间,仅在屏幕上加载大约4个元素大约需要5秒钟。

其中一个元素是CalendarView,当我删除它时,它会恢复到适当的速度(即:即时)。我想这个问题与我要求Android系统布局的方式有关,一定没有太大意义,或者效率低下。

以下是XML文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">

<TextView
     android:id="@+id/title"
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:textStyle="bold"
     android:text="TODAY"
     android:textAppearance="?android:attr/textAppearanceLarge" 

     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_toLeftOf="@+id/time" />

<TextView
     android:id="@id/time"
     android:gravity="right"
     android:textStyle="bold"
     android:layout_width="100dp"
     android:layout_height="wrap_content"
     android:text="11:32"
     android:textAppearance="?android:attr/textAppearanceLarge"

     android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/date_info"
    android:layout_margin="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Wednesday, 15th August 2012"
    android:textAppearance="?android:attr/textAppearanceMedium"

    android:layout_below="@id/title"
    android:layout_alignParentLeft="true" />

<CalendarView        
    android:id="@+id/calendar_view"
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:background="@drawable/white_back_black_border"

    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true" />
</RelativeLayout>

我尝试了很多不同的布局选项,但删除日历似乎是唯一能起作用的。

任何见解都将不胜感激。谢啦

共有3个答案

裴永年
2023-03-14

似乎直接在RelativeLayout中的CalendarView真的没有那么好用。使用FrameLayout的以下解决方案在emulator中的加载速度更快:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp" >

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/time"
        android:text="TODAY"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textStyle="bold" />

    <TextView
        android:id="@id/time"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="right"
        android:text="11:32"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/date_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/title"
        android:layout_margin="20dp"
        android:text="Wednesday, 15th August 2012"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <FrameLayout
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >

        <CalendarView
            android:id="@+id/calendar_view"
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:background="@drawable/white_back_black_border" />
    </FrameLayout>
</RelativeLayout>
宦翔飞
2023-03-14

我花了几个小时才找到答案,但还不知道为什么。这里有件奇怪的事,也许它能帮你找到答案。

的getView在周适配器有一个参数父从未使用。

   public View getView(int position, View convertView, ViewGroup parent) {
       WeekView weekView = null;
        if (convertView != null) {
            weekView = (WeekView) convertView;
        } else {
            weekView = new WeekView(mContext);
            android.widget.AbsListView.LayoutParams params =
                new android.widget.AbsListView.LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
            weekView.setLayoutParams(params);
            weekView.setClickable(true);
            weekView.setOnTouchListener(this);
        }

        int selectedWeekDay = (mSelectedWeek == position) ? mSelectedDate.get(
                Calendar.DAY_OF_WEEK) : -1;
        weekView.init(position, selectedWeekDay, mFocusedMonth);

        return weekView;
    }

期待答案。

陈铭晨
2023-03-14

我也遇到过这个问题,包括相对布局和线性布局。它似乎与布局无关。

这里有一个例子可以看到错误,只是一个简单的布局,根本没有代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".FechaHoraActivity" >

    <TimePicker
        android:id="@+id/timePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp" />

    <CalendarView
        android:id="@+id/calendarView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

现在只需将线性布局高度更改为:

android:layout_height="match_parent"

有了这个改变,问题就消失了,至少在我的三星Galaxy标签2中是这样

所以它似乎与“空间”更相关,但我仍然不确定为什么会出现这个问题。我还没有在谷歌搜索“calendarview slow”上找到任何其他有趣的结果。。。

让我们看看是否能找到一个小赏金的答案

 类似资料:
  • 我的iOS应用程序随机崩溃。当internet连接速度慢时,就会发生这种情况。我办公室网速太快了。 为了在模拟器上进行测试,我安装了这里提到的网络链接调理器:安装苹果的网络链接调理器工具 现在的问题是,我选择了一个较慢的连接配置文件,但我仍然拥有模拟器中正常(快速)的互联网速度。 我还创建了自己的配置文件,并将下载带宽设置为5Kbps,但仍然没用。 我有:Mackbook retina,OSX 1

  • 我正在使用DrawerLayout作为左幻灯片菜单。当我使用图像作为背景时,我的应用程序变得很慢。另一方面,当我使用颜色作为背景时,它会变得平滑。 我的代码是 这里我的背景图像是我不知道如何克服这个问题并实现平滑的滑动。 我的背景图片。

  • 问题内容: MySQL文档说: 假设B树索引,表的大小会减慢日志N的索引插入速度。 这是否意味着对于每个新行的插入,插入速度将降低log N倍,其中N是行数?即使我只在一个查询中插入所有行?即: 其中n为〜70,000 我目前在一个表格中约有147万行,其结构如下: 当我以上述方式插入事务时,提交时间约为275秒。我该如何优化这一点,因为每天都会添加新数据,并且插入时间只会继续变慢。 此外,除了查

  • 我在我的网站上包括了Qtip2,并使用了以下代码段,而这些文件托管在我自己的服务器上,如下所述: 虽然与网站托管在同一服务器上,但脚本从Qtip2的CDN加载以下附加文件: https://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/jquery.qtip.min.map 我找不到这方面的任何信息。你知道如何避免(如果没有必要)或在我自己的服务器上替换和托

  • 我正在使用编年史地图来临时存储/查找大量的KV对(实际上是数十亿)。我不需要持久性或复制,我使用的是内存映射文件,而不是纯堆外内存。平均密钥长度为8字节。 对于较小的数据集--多达2亿个条目--我得到的吞吐量约为每秒100万个条目,即创建条目需要大约200秒,这是惊人的,但到了4亿个条目时,地图已经显著放缓,创建它们需要1500秒。 我已经在Mac OSX/16GB四核/500GB SSD和Pro

  • 问题内容: 简而言之,场景:一个拥有超过1600万条记录[2GB大小]的表。当使用ORDER BY * primary_key *时,SELECT的LIMIT偏移量越高,查询速度就越慢 所以 花费不到 那只订购30条记录,并且无论如何都相同。因此,这不是ORDER BY的开销。 现在,当获取最新的30行时,大约需要180秒。如何优化该简单查询? 问题答案: 通常,较高的偏移量会使查询速度变慢,因为