小编Phy*_*PDF的帖子

应用程序在加载xml布局文件的主线程中做了大量工作

我正在制作9x9数独网格,其中81个单元格中的每个单元本身都是3x3网格。一个单元格看起来像这样:

1 2 3

4 5 6

7 8 9

每个数字代表该单元格的铅笔注释。我有一个名为cell_layout.xml的文件,表示此3x3排列。

我已经能够生成网格,并且代码有效:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.solver_principal);

        TableLayout sudokuGrid = (TableLayout) findViewById(R.id.sudokuGrid);
        sudokuGrid.setShrinkAllColumns(true);
        sudokuGrid.setStretchAllColumns(true);

        TableRow.LayoutParams paramsRow = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
        TableLayout.LayoutParams paramsLayout = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT);

        for(int i = 0; i < 9; ++i)
        {
            TableRow tableRow = new TableRow(SolverActivity.this);
            tableRow.setDividerDrawable(getResources().getDrawable(R.drawable.column_divider));
            tableRow.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
            for(int j = 0; j < 9; ++j)
            {
                View cell = getLayoutInflater().inflate(R.layout.cell_layout, sudokuGrid, false);
                cell.setLayoutParams(paramsRow);
                tableRow.addView(cell);
            }

            tableRow.setLayoutParams(paramsLayout);
            sudokuGrid.addView(tableRow);
        }

    }
Run Code Online (Sandbox Code Playgroud)

上面的代码仅将所需布局放大81倍到TableLayout中。

它有效,那么您的问题是什么?

该活动创建时间过长。即使我仅用网格的一行进行测试,该方法仍需要花费很长时间才能膨胀多次所需的布局。 …

java performance android android-layout

11
推荐指数
1
解决办法
432
查看次数

无符号字符值循环 C++

我(认为我)理解不同变量类型的数学是如何工作的。例如,如果我超过了一个unsigned int变量的最大限制,它将循环回到0.

我不明白这段代码的行为unsigned char

#include<iostream>

int main() {
    unsigned char var{ 0 };
    for(int i = 0; i < 501; ++i) {
        var += 1;
        std::cout << var << '\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是输出1...9,然后是一些符号和大写字母,然后它不打印任何东西。它不会循环回值1...9等。

另一方面,如果我int在打印之前投射到:

#include<iostream>

int main() {
    unsigned char var{ 0 };
    for(int i = 0; i < 501; ++i) {
        var += 1;
        std::cout << (int)var << '\n';
    }
}
Run Code Online (Sandbox Code Playgroud)

它确实从 打印1...255,然后从0...255. …

c++ types casting char

1
推荐指数
1
解决办法
69
查看次数

标签 统计

android ×1

android-layout ×1

c++ ×1

casting ×1

char ×1

java ×1

performance ×1

types ×1