小编dar*_*ame的帖子

从微调器下拉列表中删除边距

我有一个如下图所示的微调器;

在此输入图像描述

如何消除微调器及其下拉列表左侧x上的间隙 - 最好是一个适用于API8的解决方案,因为我试图尽可能降低我的应用程序要求.

我曾经假设这将是在spinners风格的layout_margin,但在阅读这个问题后,似乎这是不可能的.

在我的主题中我有;

<style name="AppTheme" parent="AppBaseTheme">        
        <item name="android:dropDownListViewStyle">@style/DropDownStyle</item>
    <item name="android:dropDownSelector">@style/DropDownStyle</item>                
</style>


<style name="DropDownTopStyle">

   <item name="android:clickable">true</item>
   <item name="android:background">@drawable/dropdowntop</item>

</style>

<style name="DropDownStyle">

   <item name="android:layout_width">fill_parent</item>
   <item name="android:layout_height">fill_parent</item> 
   <item name="android:layout_marginLeft">0dp</item> 
   <item name="android:layout_margin">0dp</item> 

   <item name="android:clickable">true</item>
   <item name="android:background">@drawable/dropdownback</item>
   <item name="android:popupBackground">@drawable/dropdownback</item>
   <item name="android:cacheColorHint">#FFF000</item>    
  </style>
Run Code Online (Sandbox Code Playgroud)

谢谢,托马斯

额外; 我可以看到可能有一种方法可以自己在代码中弹出一个弹出窗口 - 如果有必要,我可以以某种方式进入适配器弹出视图吗?(这是它显示的列表).尝试从头开始重新创建整个适配器行为似乎是一种可怕的方式 - 但如果我可以进入该视图并禁用正常的弹出行为,那么我可以创建自己的弹出窗口,而不会产生恼人的偏移.

android spinner android-layout android-spinner

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

试图将libgdx编译为html,但它无法清除资产

无法将我的libgdx项目编译为html.

看着日志,我认为问题是;

Copying resources from ../android/assets to war/
C:\TomsProjects\MeshExplorerV2\html\..\android\assets
C:\TomsProjects\MeshExplorerV2\html\assets
    [ERROR] Generator     'com.badlogic.gdx.backends.gwt.preloader.PreloaderBundleGenerator' threw an exception while     rebinding 'com.badlogic.gdx.backends.gwt.preloader.PreloaderBundle'
java.lang.RuntimeException: Couldn't clean target path 'war\assets'
Run Code Online (Sandbox Code Playgroud)

现在它让我感到有点奇怪的是第二行; 因为没有html\assets文件夹.assets文件夹位于html\war\assets中,就像最后一行抱怨的那样.

但是,在html中创建一个空资源文件夹,并手动删除html\war\assets的内容后,我仍然得到相同的错误.

还有一个没有任何资产文件夹的"html\webapp"目录.不确定是否应该有一个.

我尝试过从eclipse中清理/重建,以及随机尝试Gradle >> Refresh All.

另外,Java版本运行得很好.

任何指针,谢谢:)

html gwt libgdx

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

用"|"拆分不在方括号之间

我需要拆分一个字符串,但忽略方括号之间的东西.你可以想象这类似于忽略引号内的东西.

我遇到了报价的解决方案;

(\|)(?=(?:[^"]|"[^"]*")*$)

所以;

one|two"ignore|ignore"|three

将会;

one
two"ignore|ignore"
three
Run Code Online (Sandbox Code Playgroud)

但是,我正在努力调整这个以忽略[]而不是".部分原因是它有两个角色,而不是一个.部分归结为[]需要被转义,部分归结为我非常糟糕regexs.

我的目标是获得;

所以;

one|two[ignore|ignore]|three

分裂为;

 one
 two[ignore|ignore]
 three
Run Code Online (Sandbox Code Playgroud)

我试着弄清楚自己,但我陷入了混乱; (\|)(?=(?:[^\[|\]]|\|][^\[|\]]*\[|\])*$) 我现在到处都看到括号和线条.

救命!

javascript regex

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

在 glsl 着色器中合成两个 alpha 纹理

我希望在一个着色器中组合两个纹理,就像您对 Photoshop 之类的程序所期望的那样。也就是说,一种纹理叠加在另一种纹理之上,就好像分层一样。两个纹理都将具有 Alpha,并且结果输出也应具有正确的组合 Alpha。

所以目标是; 复合图像插图

然而,尽管用谷歌搜索公式,我无法得到正确的颜色。使用此处的参考:(https://microsoft.github.io/Win2D/html/PremultipliedAlpha.htm)例如产生;

在此输入图像描述

(注意灰色 50% 叠加的差异)

着色器代码在 libgdx 中设置以使用它作为混合;

  context.setBlending(true,GL20.GL_SRC_ALPHA ,GL20.GL_ONE_MINUS_SRC_ALPHA);         
Run Code Online (Sandbox Code Playgroud)

我相当确定错误出在我的片段着色器混合中(请参见上图中的代码),因为如果我将输入纹理 (A) 直接传递给 gl_FragColor,那么我会得到 A 的像素完美颜色匹配,包括其 alpha。
例如;

gl_FragColor = 反向漫反射;

工作正常。

=====

编辑

根据建议,我尝试使用预乘阿尔法代替。

context.setBlending(true,GL20.GL_ONE, GL20.GL_ONE_MINUS_SRC_ALPHA); 
Run Code Online (Sandbox Code Playgroud)

然而,即使着色器刚刚设置为输出 A,这也会产生错误的效果

backdiffuse = texture2D(u_backSample2D, vTexCoord);     
backdiffuse=backdiffuse*backdiffuse.a; //convert to premultiply     
gl_FragColor =  backdiffuse; 
Run Code Online (Sandbox Code Playgroud)

我是否将 libgdxs 混合设置错误?这显然太亮了。

在此输入图像描述


解决方案(感谢接受的答案);

 backdiffuse.rgb *= backdiffuse.a; //premultiply source 
 v_backBackColor.rgb *= v_backBackColor.a; //premultiply source 

finalCol.rgb = backdiffuse.rgb + (v_backBackColor.rgb * (1 - backdiffuse.a));       
finalCol.a = backdiffuse.a + (v_backBackColor.a * (1.0 - …
Run Code Online (Sandbox Code Playgroud)

opengl-es fragment-shader libgdx

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

是否可以从数组中更改变量值

这对我来说是一个令人困惑的问题,但我会尽我所能.

所以:

ArrayList<Object> fieldList = new ArrayList<Object>(); 
Run Code Online (Sandbox Code Playgroud)

然后我将许多不同的变量转储到这个数组:

fieldList.add(objectsURL);   //string 

 fieldList.add(X);  //int 

 fieldList.add(Y); //int 

 ... 
Run Code Online (Sandbox Code Playgroud)

如果我更改了变量,那么数组中的值也会发生变化 - 确认数组存储对内存的引用,而不是自己赋值.

但是,如果我然后从数组中检索数据然后设置...

Object object = ((String)this.fieldList.get(0)); 
Run Code Online (Sandbox Code Playgroud)

然后设置对象

object = "meeep!" 
Run Code Online (Sandbox Code Playgroud)

objectsURL未设置为"meep!" 但它保留了原始价值.

我假设这是因为"对象"不再引用原始变量,而是指向内存中的新不可变字符串.

我认为所有预期的Java行为......但是,我将如何设置实际的原始变量?这可能在java?

所以,换句话说.鉴于只能访问"fieldList",是否可以更改"objectsURL"的值?

因此,如果:

String objectsURL = "www.google.com"
fieldList.add(objectsURL); 
Run Code Online (Sandbox Code Playgroud)

有没有办法只使用fieldList的引用将objectsURL设置为"www.stackoverflow.com"?我不想改变fieldList包含"objectsURL"的事实,我想改变变量"objectsURL"实际包含的字符串.


如果没有,是否有另一种方法来实现同样的目的?

我希望我的问题能很好地解释这个问题.

我的用例是尝试为一堆我的对象创建一个序列化/反序列化系统.我希望将所有字段放入一个我可以检索读取和写入的arraylist ....因此避免硬编码字段[0] = blah和blah = field [0]的长列表然后继续每次我在另一个之前添加新字段时需要重新编号的常数痛苦.

(我不能使用Javas内置序列化,因为我使用的是GWT,这只是客户端.)

谢谢,

java arrays variables gwt immutability

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

LibGDX将特定着色器分配给ModelInstance

我最近一直在学习在libgdx中实现自己的着色器.到目前为止,我使用自定义着色器提供程序执行此操作,该提供程序根据对象的userdata值在几个着色器之间进行选择;

public class MyShaderProvider extends DefaultShaderProvider {
    public final DefaultShader.Config config;
    final static String logstag = "ME.MyShaderProvider";
    //known shaders
    static public enum shadertypes {
        prettynoise,
        invert,
        standardlibgdx, 
        noise,
        distancefield,
        conceptbeam
    }

    public MyShaderProvider (final DefaultShader.Config config) {
        this.config = (config == null) ? new DefaultShader.Config() : config;
    }

    public MyShaderProvider (final String vertexShader, final String fragmentShader) {
        this(new DefaultShader.Config(vertexShader, fragmentShader));


    }

    public MyShaderProvider (final FileHandle vertexShader, final FileHandle fragmentShader) {
        this(vertexShader.readString(), fragmentShader.readString());
    }

    public MyShaderProvider () {
        this(null);
    }

    public …
Run Code Online (Sandbox Code Playgroud)

shader libgdx

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