小编Emm*_*ess的帖子

使用Android中的Matrix缩放和旋转位图

我试图在创建最终位图之前在单个操作中进行缩放和旋转但是preRotate,postConcat似乎不起作用.

Bitmap bmp = ... original image ...

Matrix m = new Matrix()
m.setScale(x, y);
m.preRotate(degrees, (float) width / 2, (float) height / 2);

Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
Run Code Online (Sandbox Code Playgroud)

它只适用比例而不是旋转.

graphics android

31
推荐指数
2
解决办法
9万
查看次数

在画布绘制的形状周围创建阴影?

创建一个形状需要哪些步骤,例如使用Canvas从头开始带阴影的矩形?

在用于绘制矩形的绘制中添加阴影图层不会成功.

android canvas shape shadow

18
推荐指数
3
解决办法
2万
查看次数

如何将数据类型映射到该数据类型的集合

代码:

abstract class DataContainer(public val path: String)
val preloaded: MutableMap<Class<out DataContainer>, HashSet<out DataContainer>> = hashMapOf()
Run Code Online (Sandbox Code Playgroud)

我想知道如何让Kotlin意识到第out DataContainer一种与第二种相同out DataContainer.
所以代码就像:

fun <D: DataContainer> get(clazz: Class<D>): HashSet<D> = preloaded[clazz] as HashSet<D>
Run Code Online (Sandbox Code Playgroud)

不需要as HashSet<D>(并且不容易出现错误).我是Kotlin的新手,如果我错过了某些内容,请链接文档.此外,object如果重要,此代码将在内部.

types kotlin

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

批量元数据请求文件

它基本归结为:如果我在一个目录中有4000个文件,File.isDirectory()函数需要1ms才能执行,因此该目录需要4s来计算(太慢[1]).

我还没有最完整的文件系统知识,但我认为isDirectory()可以为目录中的所有元素进行批处理(读取一大块数据,然后分离单个文件的元数据).C/C++代码是可接受的(可以使用JNI运行),但应保留为最后一个资源.

我找到了FileVisitor,但它似乎不是我问题的最佳解决方案,因为我不必访问整个文件树.我也发现了BasicFileAttributeView,但似乎它有同样的问题.是一个相关的问题,但没有提供重要解决方案的答案.

[1]:因为它不是我唯一做的事情,它最终会像17s一样.

编辑:代码:

internal fun workFrom(unit: ProcessUnit<D>) {
    launch {
        var somethingAddedToPreload = false
        val file = File(unit.first)

        ....

        //Load children folders
        file.listFiles(FileFilter {
            it.isDirectory
        })?.forEach {
            getPreloadMapMutex().withLock {
                if (getPreloadMap()[it.path] == null) {
                    val subfiles = it.list() ?: arrayOf()
                    for (filename in subfiles) {
                        addToProcess(it.path, ProcessUnit(it.path + DIVIDER + filename, unit.second))
                    }

                    getPreloadMap()[it.path] = PreloadedFolder(subfiles.size)
                    if (getPreloadMap().size > PRELOADED_MAP_MAXIMUM) cleanOldEntries()
                    getDeleteQueue().add(it.path)

                    somethingAddedToPreload = somethingAddedToPreload || subfiles.isNotEmpty()
                }
            }
        }

        ...

        if(somethingAddedToPreload) …
Run Code Online (Sandbox Code Playgroud)

filesystems android kotlin

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

可以懒惰地分配静态内存吗?

在C程序中有一个静态数组:

#define MAXN (1<<13)
void f() {
    static int X[MAXN];
    //...
}
Run Code Online (Sandbox Code Playgroud)

在实际使用每个页面之前,Linux内核是否可以选择不将地址映射到物理内存?那么X怎么可以满0,那么当每个页面被访问时,内存是否归零?这怎么不影响程序的性能?

c linux memory

6
推荐指数
2
解决办法
119
查看次数

"array [n]!='\ 0'"比"n <strlen(array)"更好吗?

为一个

char array [10];
cin.getline(array, 10);
Run Code Online (Sandbox Code Playgroud)

哪一个是最好的选择?

for(int n = 0; array[n] != '\0'; n++) {...}
Run Code Online (Sandbox Code Playgroud)

要么

for(int n = 0; n < strlen(array); n++) {...}
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

android ×3

kotlin ×2

c ×1

c++ ×1

canvas ×1

filesystems ×1

graphics ×1

linux ×1

memory ×1

shadow ×1

shape ×1

types ×1