Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 滚动文本延迟_Android_Xml_Android Layout_Android Studio - Fatal编程技术网

Android 滚动文本延迟

Android 滚动文本延迟,android,xml,android-layout,android-studio,Android,Xml,Android Layout,Android Studio,我在我的移动应用程序中使用了一些滚动文本视图,但我最近注意到文本开始滚动时有一些延迟。你知道为什么会这样吗?我有两个不同的片段使用相同的代码,但是滚动文本视图在另一个上没有“滞后”。我试图找出问题所在,但找不到。欢迎任何帮助 layout.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

我在我的移动应用程序中使用了一些
滚动
文本视图
,但我最近注意到
文本
开始滚动时有一些延迟。你知道为什么会这样吗?我有两个不同的
片段
使用相同的代码,但是
滚动
文本视图
在另一个上没有“滞后”。我试图找出问题所在,但找不到。欢迎任何帮助

layout.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/card_view_bg"
    tools:layout_editor_absoluteY="25dp">

<ImageView
    android:id="@+id/cardArtImageView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_weight="1"
    android:adjustViewBounds="true"
    android:scaleType="fitCenter"
    app:layout_constraintBottom_toTopOf="@+id/cardDetailsImageView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<!--
<ImageView
    android:id="@+id/cardDetailsImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:adjustViewBounds="true"
    android:cropToPadding="false"
    android:scaleType="fitXY"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:srcCompat="@drawable/card_details_box" /> -->

<!-- Implement scrolling text
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
 -->

<!-- passive skill desc
<TextView
    android:id="@+id/passiveSkillDesc"
    android:layout_width="395dp"
    android:layout_height="33dp"
    android:fontFamily="monospace"
    android:textAlignment="center"
    android:textColor="@android:color/black"
    android:textSize="13sp"
    android:textStyle="italic"
    android:visibility="invisible"
    tools:layout_editor_absoluteX="8dp"
    tools:layout_editor_absoluteY="602dp" />
    -->

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="225dp"
    android:background="@drawable/card_details_closed">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/HP"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="37dp"
            android:layout_weight="1"
            android:text="0000"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:textStyle="bold"
            tools:text="0000" />

        <TextView
            android:id="@+id/ATT"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginStart="78dp"
            android:layout_toEndOf="@+id/HP"
            android:layout_weight="1"
            android:text="0000"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:textStyle="bold"
            tools:text="0000" />

        <TextView
            android:id="@+id/DEF"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="46dp"
            android:layout_weight="1"
            android:text="0000"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:textStyle="bold"
            tools:text="0000" />

    </RelativeLayout>

    <TextView
        android:id="@+id/leaderSkillDesc"
        android:layout_width="250dp"
        android:layout_height="15dp"
        android:layout_above="@+id/superAttackTitle"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="14dp"
        android:layout_marginEnd="35dp"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:fontFamily="monospace"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:textAlignment="viewStart"
        android:textColor="@color/white"
        android:textSize="13sp"
        android:textStyle="italic"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintVertical_bias="0.626" />

    <TextView
        android:id="@+id/superAttackTitle"
        android:layout_width="250dp"
        android:layout_height="15dp"
        android:layout_above="@+id/superAttackDesc"
        android:layout_alignStart="@+id/superAttackDesc"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:fontFamily="monospace"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:textAlignment="viewStart"
        android:textColor="@android:color/holo_blue_light"
        android:textSize="12sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@+id/superAttackDesc"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/superAttackDesc"
        android:layout_width="255dp"
        android:layout_height="15dp"
        android:layout_alignEnd="@+id/leaderSkillDesc"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="73dp"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:fontFamily="monospace"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:textAlignment="viewStart"
        android:textColor="@android:color/white"
        android:textSize="13sp"
        android:textStyle="italic"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</RelativeLayout>

<!-- passive skill title
<TextView
    android:id="@+id/passiveSkillTitle"
    android:layout_width="189dp"
    android:layout_height="30dp"
    android:fontFamily="monospace"
    android:textAlignment="viewStart"
    android:textColor="@color/cardDetailsTextColor"
    android:textSize="12sp"
    android:visibility="invisible"
    tools:layout_editor_absoluteX="207dp"
    tools:layout_editor_absoluteY="543dp" />
    -->

</LinearLayout>

更新
当我把我的手机分辨率调到4K(s8)时,这个延迟实际上也发生在第二个片段中

您必须通过将字符串转换为html字符串来高效地加载大文本

    private void someMethod(){
yourTextView.setText(Html.fromHTML(escape(someText)));
yourTextView.setMovementMethod(new ScrollingMovementMethod());}

    public static String escape(String s) {
        StringBuilder builder = new StringBuilder();
        boolean previousWasASpace = false;
        for( char c : s.toCharArray() ) {
            if( c == ' ' ) {
                if( previousWasASpace ) {
                    builder.append("&nbsp;");
                    previousWasASpace = false;
                    continue;
                }
                previousWasASpace = true;
            } else {
                previousWasASpace = false;
            }
            switch(c) {
                case '<': builder.append("&lt;"); break;
                case '>': builder.append("&gt;"); break;
                case '&': builder.append("&amp;"); break;
                case '"': builder.append("&quot;"); break;
                case '\n': builder.append("<br>"); break;
                // We need Tab support here, because we print StackTraces as HTML
                case '\t': builder.append("&nbsp; &nbsp; &nbsp;"); break;  
                default:
                    if( c < 128 ) {
                        builder.append(c);
                    } else {
                        builder.append("&#").append((int)c).append(";");
                    }    
            }
        }
        return builder.toString();
    }
private void someMethod(){
yourTextView.setText(Html.fromHTML(escape(someText));
yourTextView.setMovementMethod(新的ScrollingMovementMethod());}
公共静态字符串转义(字符串s){
StringBuilder=新的StringBuilder();
布尔值previousWasASpace=false;
for(char c:s.toCharArray()){
如果(c=''){
如果(以前的wasaspace){
生成器。追加(“”);
previousWasASpace=false;
继续;
}
previousWasASpace=true;
}否则{
previousWasASpace=false;
}
开关(c){
大小写“”:builder.append(“”);break;
大小写“&”:builder.append(“&;”);break;
大小写“”:builder.append(“”);break;
大小写“\n”:builder.append(
”);break; //这里我们需要选项卡支持,因为我们将StackTraces打印为HTML 大小写“\t”:builder.append(“”);break; 违约: if(c<128){ 附加(c); }否则{ append((int)c.append(;); } } } 返回builder.toString(); }
Seconly,你得把你的亲戚们当作



最后,如果您正在记录文本,请删除所有要记录的调用。您可能会遇到问题

android:layout_weight="1"
如上所述,设置权重对性能不利

嵌套权重对性能不利,因为:

布局权重要求小部件测量两次。当具有非零权重的线性布局嵌套在另一个布局中时 使用非零权重进行线性布局,然后计算测量次数 指数增长


然而,从那时起事情发生了变化,谷歌引入了一种新的布局:
ConstraintLayout
。我强烈建议您改用它:

将片段代码发布到它是相同的代码,但不同的XML布局文件?是的,但只是因为我在同一活动中使用不同的文本片段初始化文本视图?您好,我将尝试使用lint和布局检查器(+删除权重属性)改进我的布局。约束布局在这个项目上对我不起作用,当然也有,但我之前没有提到它,因为它最近被弃用了。没问题,你的答案是正确的。删除权重属性后,性能大大提高!非常感谢
android:layout_weight="1"