小编Ten*_*r04的帖子

OpenGL ES 1.1:如何在不失去亮度的情况下改变纹理颜色?

我有粒子,我希望能够改变代码的颜色,所以可以使用任何颜色.所以我只有一个基本上具有亮度的纹理.

我一直在用glColor4f(1f, 0f, 0f, 1f);这种颜色.

我尝试过的每一个blendfunc都接近工作,就像下面的最后一张图片一样.我仍然希望保留亮度,就像在中间的图片中一样.(如果颜色图层位于纹理图层的顶部,则类似于Photoshop中的叠加或柔光滤镜.)

没有可编程着色器的任何想法如何做到这一点?此外,由于这些是粒子,我不想在它后面有一个黑盒子,我想把它添加到场景中.

替代文字

iphone android opengl-es

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

锁定屏幕不会导致onStop()被调用

我的应用程序使用GPS,因此我在onStop()中删除了GPS更新,因此它不会耗尽电池.但是,我注意到,如果我的应用程序在锁定屏幕打开时打开,我测试手机上的电池电量耗尽.

所以为了测试它,我在我的活动的onStop()方法中添加了一个Log.i(...).当我按下HTC Incredible上的关闭按钮(关闭屏幕)时,onStop()不会被调用.

有没有办法监听锁屏,或屏幕关闭,因为它不会像它应该调用onStop()?

谢谢.

android

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

你如何让Eclipse自动建议方法?

我刚刚完全删除了Eclipse和Android SDK,并从Android SDK包中重新安装了它们.(我这样做是因为随着时间的推移已经积累了很多膨胀,我无法让SDK Manager识别新版本的ADT.)

Eclipse曾经弹出一个类的所有可用方法的列表,如果我输入类的名称然后是一个点,并在我继续键入时开始过滤列表.自重新安装以来,此功能无效.我怎么能打开它?

我已经在SDK Manager中安装了API 17的源代码和文档.

eclipse android

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

Android 库中的属性名称是否需要前缀?

我已经阅读(并通过测试确认)资源值名称(字符串、可绘制对象、维度等)应该在开头(通常是库的名称)有一个前缀以避免名称冲突,因为使用该库的项目和声明具有匹配名称的资源将覆盖库的资源。

我不清楚的是attra 中的属性名称是否<declare-styleable>也应该加前缀。由于它们被包裹在 中<declare-styleable>,它们是否可以防止被覆盖?在 Java 代码中,它们的资源名称自动以 的名称作为前缀<declare-styleable>,但在 XML 文件中使用时,它们不是。

我猜他们的用法是上下文敏感的。在我的自定义首选项代码中,当我context.obtainStyledAttributes()使用特定的样式调用时,只有在那时 XML 属性才被解释为特定类型。如果我声明了一个名为"min"type的 Preference styleable 属性float并在我的项目中使用它,那么"min"在 v7.preference 库的 SeekBarPreference styleable 类型中是否有一个命名的属性并不重要int,因为 SeekBar 在调用时不使用我的 styleable obtainStyledAttributes()

因此,如果我的假设是正确的,那么编译器就没有理由按名称合并属性。但是自定义属性样式在 Android 中是一个复杂的野兽,我不确定我是否在测试中遗漏了什么。为了便于使用/记录,最好省略我库的属性名称中的前缀。

如果<declare-styleable>是为样式定义属性,那么我认为它仍然可以避免冲突,因为样式不会合并。它们仅从自己的属性中相互引用。如果我理解正确的话——它们对我来说有点令人费解。

在相关说明中,是否有任何理由为视图 ID 加上前缀?我在想是的,因为我的库视图存在于项目的视图结构中,并且库的用户调用findViewById()与我的 ID 匹配的 ID,我可以设想这样的场景:搜索首先显示我的视图并将它们绊倒。但是谷歌自己的 appcompat 库没有采取这样的预防措施,所以我不确定。

xml android

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

这是什么语法,声明站点的变量/属性名称周围有括号?

val (_,time) = time { Thread.sleep(1000) }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我看到左侧 (LHS) 有一个 val,因此它声明了一个变量。LHS 还有某种函数语法,它看起来不像 lambda 声明。什么是(_,time)?Don\xe2\x80\x99t 你必须给 LHS 上的时间一个类型吗?我非常了解 RHS:它是一个接受 lambda 作为参数的函数,名为 \xe2\x80\x98time\xe2\x80\x99。原始代码

\n

kotlin

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

减少OpenGL ES 1.1中纹理的内存使用

我在OpenGL ES中的场景需要几个大分辨率纹理,但它们是灰度的,因为我只是将它们用于蒙版.我需要减少我的记忆力.

我尝试使用Bitmap.Config.ALPHA_8和RGB_565加载这些纹理.ALPHA_8似乎实际上增加了内存使用.

是否有某种方法可以将纹理加载到OpenGL中并使其每像素使用少于16位?

glCompressedTexImage2D看起来很有希望,但据我所知,不同的手机提供不同的纹理压缩方法.此外,我不知道压缩是否实际上减少了运行时的内存使用.解决方案是以ATITC和PVRTC格式存储我的纹理吗?如果是这样,我如何检测设备支持哪种格式?

谢谢!

android opengl-es

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

确定修饰的类型是否可为空

假设我有一个需要一个类类型和布尔值的委托类。如果此委托所使用的属性的类型为可为空,则我具有特定的功能。为了简单起见,假设根据Boolean参数,它会为null引发错误。

class Sample<T: Any> (val type: KClass<T>,
                      val allowNulls: Boolean){
    private var value: T?

    operator fun getValue(thisRef: Any, property: KProperty<*>): T? {
        return if (allowNulls)
            value
        else
            value?: throw Exception("Value is null!")
    }

    operator fun setValue(thisRef: Any, property: KProperty<*>, value: T?) {
        this.value = value
    }
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个简化函数,以轻松生成此类的实例,该实例自动确定类型是否应为可为空。同样,这对于对于可为空的属性表现不同的委托很有用。例如,这将用于允许不同的行为,具体取决于委派的属性是否可为空:

val nullableString by sample<String?>()
val nonnullString by sample<String>()
val nullableString2: String? by sample()
val nonnullString2: String by sample()
Run Code Online (Sandbox Code Playgroud)

我如何确定该类型化是否可为空?我看不到访问此信息的方法:

inline fun <reified T: Any> sample(): Sample<T>{
    return Sample(T::class, /** T is nullable …
Run Code Online (Sandbox Code Playgroud)

kotlin

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

如何设计一个Flow,它是另一个Flow的每最新5个数据的平均值?

有一个Flow每100ms就会发出一次数据,我希望得到该Flow的每最新5个数据的平均值,并将平均值转换为Double值到另一个Flow中。

如何设计流程?

代码A

   fun soundDbFlow(period: Long = 100) = flow {
        while (true) {
            var data = getAmplitude()
            emit(data)
            delay(period)
        }
    }
    .get_Average_Per5_LatestData {...} //How can I do? or is there other way?
    .map { soundDb(it) }

    private fun getAmplitude(): Int {
        var result = 0
        mRecorder?.let {
            result = it.maxAmplitude
        }
        return result
    }    
        
    private fun soundDb(input:Int, referenceAmp: Double = 1.0): Double {
        return 20 * Math.log10(input / referenceAmp)
    }
Run Code Online (Sandbox Code Playgroud)

新增内容:

致plplmax:谢谢!

我假设代码 B 会发出 1,2,3,4,5,6,7,8,9,10.....

你保证代码C会(1+2+3+4+5)/5先计算,然后 …

kotlin kotlin-flow

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

在 Gradle 中调试 Github Packages 存储库连接

我在 Github 上建立了一个私人项目,其中有一些 Maven 包。我可以在 Github 网站上浏览到它们。

按照此处的说明,我已设置 build.gradle 来声明存储库,如下所示:

repositories {
    mavenLocal()
    maven {
        url = "https://maven.pkg.github.com/myAccountName/myRepo"
        credentials {
            username = System.getenv("GITHUB_USERNAME")
            password = System.getenv("GITHUB_PACKAGES_TOKEN")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经使用我在具有权限的 Github 设置中创建的用户名和访问令牌设置了系统环境变量read:packages

我声明依赖关系的方式与之前将其安装到mavenLocal(). 但我从本地 Maven 存储库中删除了它,以便我可以测试它。

无法解决依赖关系。但 Gradle 发出的所有警告是:

无法解析“:android@debug/compileClasspath”的依赖关系:无法解析myGroup:myArtifact:1.0

没有记录有关 Maven 存储库之一无效的警告,但我认为这可能是问题,因为当包位于本地 Maven 存储库中时,它工作正常。可能是我指定的内容不正确,或者凭据不起作用。

我还尝试直接输入字符串用户名和令牌,而不是使用环境变量。该令牌是全新的且未过期。

如何确定与 Github Packages Maven 存储库的连接出了什么问题?有什么办法可以获得更有用的日志吗?或者您是否发现我的身份验证方式有问题?

java github gradle maven github-packages

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

构建时在resources中创建一个文件

这是针对 JVM 应用程序的。

我正在创建一个属性文件,其中包含要在应用程序运行时使用的版本。我在基础项目中编写了这个任务build.gradle.kts

allprojects {
    //...

    tasks.register("createVersionPropertiesFile") {
        group = "build"
        doLast {
            val resourcesDir = File("$buildDir/resources/main").apply { mkdirs() }
            val resource = File(resourcesDir, "version.properties")
            resource.writeText("version=${project.version}")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我独立运行此任务,它会按我的预期创建文件。

为了在构建期间运行任务,我将其放入应用程序模块中build.gradle.kts

tasks.processResources {
    dependsOn += tasks["createVersionPropertiesFile"]
}
Run Code Online (Sandbox Code Playgroud)

然而,在构建过程中,资源目录实际上被删除而不是创建(或者如果是的话,它会在构建完成之前再次被删除)。因此,应用程序运行时找不到资源。

如何设置此任务在构建过程的适当阶段运行?

我知道另一种策略是在源代码的实际资源目录中创建资源文件,但我不想用这个自动生成的文件弄脏签入的源代码。我希望它只是构建的一部分。

jvm gradle gradle-kotlin-dsl

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