2013-03-04 1 views
0

이 보풀 경고 오류가 발생합니다 : highscores.xml has more than 80 views bad for performance. 이것은 15 행 3 열이있는 최고 점수 표입니다. 이것은 내 애플 리케이션의 라이트 버전이고 내 유료 버전은 30 행을 보유 할 예정이다.나쁜 성능에 대한 보풀 경고 - 80+ 조회

제 질문은이 코드를 어떻게 최적화 할 수 있습니까? 더 좋은 방법이 있어야합니다.

highscores.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/relativelayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="*" 
    android:orientation="vertical" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="5dp" 
    android:paddingBottom="65dp" 
    android:background="@drawable/scroll" > 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:textStyle="bold" 
     android:textSize="18sp" 
     android:paddingBottom="10dp" 
     android:paddingTop="65dp" /> 

    <LinearLayout 
     android:id="@+id/linearlayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:paddingTop="5dp" > 

     <Button 
      android:id="@+id/homeBtn" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:textSize="14sp" /> 

     <Button 
      android:id="@+id/clearHS" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:textSize="14sp" /> 
    </LinearLayout> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp" 
     android:paddingTop="8dp" 
     android:paddingBottom="8dp" 
     android:background="@drawable/scrollviewborder" 
     android:layout_below="@id/title" 
     android:layout_above="@id/linearlayout" 
     android:fillViewport="true" 
     android:scrollbars="none" > 

     <TableLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r1s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r1c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r1b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r2s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r2c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r2b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r3s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r3c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r3b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r4s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r4c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r4b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r5s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r5c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r5b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r6s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r6c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r6b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r7s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r7c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r7b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r8s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r8c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r8b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r9s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r9c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r9b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r10s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r10c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r10b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r11s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r11c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r11b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r12s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r12c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r12b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r13s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r13c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r13b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r14s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r14c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r14b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="1dp"  
       android:background="#C2BEBF" /> 

      <TableRow 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 

       <TextView 
        android:id="@+id/r15s" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="25" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <TextView 
        android:id="@+id/r15c" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" 
        android:layout_weight="75" 
        android:gravity="center" 
        android:textSize="14sp" /> 

       <Button 
        android:id="@+id/r15b" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:textSize="14sp" /> 
      </TableRow> 
     </TableLayout> 
    </ScrollView> 
</RelativeLayout> 

답변

5

ScrollView의 내부 대신 TableLayoutListView를 사용합니다. 사용 가능한 화면 크기에 따라 실제로 필요한만큼의 행만 가질 수있을뿐만 아니라 목록 항목을 클릭하면 버튼이 수행해야하는 모든 작업을 수행 할 수 있습니다. 당신은 단지 TableLayout을 만들기로 꽤 많은 경우

+0

"'''ListView'''''을 살펴볼 것입니다. 각 행의 단추는 여전히 각 행에 고유해야하므로 각 행에 있어야합니다. "''ListView''''는 아직 갈 길입니다. 맞나요? – Matt

+1

@Matt : "각 행의 버튼은 각 행마다 고유해야하기 때문에 각 행의 버튼이 여전히 필요합니다."- IMHO, 일반적으로 고려 된 디자인이 좋은 앱은별로 없습니다. – CommonsWare

1

, 당신은 대신 (이것은 당신이 당신의 소원에 따라 테이블 행을 변경할 수 있습니다 & Lint 경고를 방지합니다) 당신의 layout.xml 모든 것을 만드는 프로그래밍 방식 TableRow를 추가 할 수 있습니다. 어떻게 할 수 있는지에 대한 미리보기가 있습니다.

TableLayout table = new TableLayout(this); 

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
     ViewGroup.LayoutParams.FILL_PARENT, 
     ViewGroup.LayoutParams.FILL_PARENT); 
table.setLayoutParams(lp); 
table.setStretchAllColumns(true); 

TableLayout.LayoutParams rowLp = new TableLayout.LayoutParams(
     ViewGroup.LayoutParams.FILL_PARENT, 
     ViewGroup.LayoutParams.FILL_PARENT, 
     1.0f); 
TableRow.LayoutParams cellLp = new TableRow.LayoutParams(
     ViewGroup.LayoutParams.FILL_PARENT, 
     ViewGroup.LayoutParams.FILL_PARENT, 
     1.0f); 
for (int r = 0; r < 2; ++r) 
{ 
    TableRow row = new TableRow(this); 
    for (int c = 0; c < 2; ++c) 
    { 
     Button btn = new Button(this); 
     btn.setText("A"); 
     row.addView(btn, cellLp); 
    } 
    table.addView(row, rowLp); 
} 
setContentView(table); 
1

앱의 라이트/유료 버전을 생각하기에 앞서 몇 가지 앱을 만들어 관련 프로세스와 언어를 배우는 것이 좋습니다.

앱에 돈을 청구하고 개발자가 ListView를 사용하는 방법을 묻는 경우가 거의 나를 울기 원합니다. 이것은 경험이 부족한 많은 프로그래머들이 돈을 먼저 벌기 위해 아이디어를 내고 그 다음에 두 번째 프로그램하는 법을 배우기 때문에 더 이상 개발을하지 않는 이유입니다.

또한 1dp 크기의 모든 추가 View 요소에 대해 궁금합니다. 레이아웃을 사용하여 paddingTop = 1dp 또는 marginTop = 1dp를 정의하고 전체 요소를 제거 할 수 있습니다.

또한 layout_weight를 사용하기 전에 무엇을하는지 알아야합니다. 형제가 없을 때 각 레이아웃을 layout_weight = 1로 설정할 필요가 없습니다.

또한 모든 뷰에서 중력 = 중심을 사용하면 좋지 않습니다. layout_gravity 또는 중력 태그를 부모 레이아웃에서 사용하여 어린이의 중력에 영향을 줄 수 있습니다.

XML이 WYSIWYG에 의해 생성 된 것으로 보입니다. 백엔드 언어에 대한 진정한 이해가 없습니다. 우리는 모두 여기에서 묻는 것으로 배웁니다. 그러나 저자에게 공개 된 자유 소프트웨어의 양을 감안할 때 초보자가 소프트웨어에 돈을 지불하겠습니까?

관련 문제