我需要使用ndk在C++中创建Bitmaps并将它们传递给Java.我不是指复制,但实际上将它们作为参数传递或返回值或其他任何类似的东西,因为复制它们会太慢.我也真的需要在NDK部分而不是在java中创建它们.
有谁知道这样做的方法?
我有需要在1个线程中显示的对象,并且还在2.线程中不断更新.Android上的Java是否有推荐的方式来处理对像互斥体这样的对象的这种访问(锁定/解锁)?
我已经尝试了所有我能找到的东西(在stackoverflow和网上),但我不知道怎么办不能将我的对话框设置为全屏.它有一个带有textview的scrollview,当textview中的文本不多时,scrollview不是全屏.即使没有多少文字可见,我怎么能强制它全屏?
我创建这样的对话框:
final TextView box;
final Dialog info = new Dialog(cx);
final ScrollView scroll;
info.setContentView(R.layout.dialoginfo);
info.setTitle("Info");
info.setCancelable(true);
info.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN);
scroll = ((ScrollView) info.findViewById(R.id.scrollviewinfo));
scroll.setPersistentDrawingCache(ScrollView.PERSISTENT_NO_CACHE);
scroll.setScrollbarFadingEnabled(false);
box = (TextView) info.findViewById(R.id.infotext);
box.setText(text);
info.show();
Run Code Online (Sandbox Code Playgroud)
这是xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/infolayout"
>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/ImageView01"
android:layout_weight="1.0"
android:id="@+id/scrollviewinfo">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/infolayout2">
<TextView android:layout_margin="5dip" android:layout_width="fill_parent" android:layout_height="wrap_content"
android:id="@+id/infotext"
android:textSize="8sp"
android:text=""/>
</LinearLayout>
</ScrollView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 正如标题所说,我需要在Java中将int []转换为ByteBuffer.有推荐的方法吗?
我想通过JNI将ByteBuffer传递给C++.在这种情况下,对于任何特定的字节序转换,我需要注意什么?
编辑:对不起,我错误地写了ByteArray,但意味着类型ByteBuffer.
编辑:示例代码:
我剥掉了不必要的部分.我从c ++调用JNI上的Java函数来加载资源并将其作为bytebuffer传递回c ++.它适用于各种其他资源.现在我有一个"int []",并想知道是否有一种优雅的方式将其转换为bytebuffer,或者我必须采用旧式方式并将其填入for循环中.
ByteBuffer resource= null;
resource = ByteBuffer.allocateDirect((x*y+2)*4).order(ByteOrder.nativeOrder());
.
.
ByteBuffer GetResourcePNG(String text)
{
.
.
int [] pix;
map.getPixels(pix,0,x,0,0,x,y);
return resource;
}
Run Code Online (Sandbox Code Playgroud) 我尝试在1个片段着色器中访问2个纹理.
为此我有2个纹理,我用以下代码设置:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, vbuff);
glTexCoordPointer(2, GL_FLOAT, 0, tbuff);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, texture0);
glEnable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, texture1);
glEnable(GL_TEXTURE_2D);
Run Code Online (Sandbox Code Playgroud)
我尝试将它们与以下片段着色器结合使用:
uniform sampler2D tex0;
uniform sampler2D tex1;
void main()
{
vec4 texval1 = texture2D(tex0, TextureCoordOut);
vec4 texval2 = texture2D(tex1, TextureCoordOut);
gl_FragColor = 0.5*(texval1 + texval2)
}
Run Code Online (Sandbox Code Playgroud)
不知何故,这不起作用,它只显示第二个纹理.
PS:我正在开发Windows7上的着色器,但是想在Android设备上使用C++代码和Android NDK上的着色器.
编辑:我得到它的工作,我在这里发布代码,以便其他人可以从中受益:
顶点着色器
varying vec2 TextureCoordOut;
void main()
{
gl_Position = ftransform();
TextureCoordOut = vec2(gl_MultiTexCoord0);
}
Run Code Online (Sandbox Code Playgroud)
片段着色器
varying mediump vec2 TextureCoordOut;
uniform sampler2D tex0;
uniform sampler2D tex1;
void main()
{
gl_FragColor = …
Run Code Online (Sandbox Code Playgroud) 我更改了Android 2.3.4复选框的位图,并希望设置位图的大小以缩放它们.我改变了这样的复选框:
<CheckBox
android:id="@+id/cb1"
android:button="@drawable/checkbox"
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Sort: 1" />
Run Code Online (Sandbox Code Playgroud)
与匹配的xml drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/checkbox_on_background_focus_yellow"/>
<item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/checkbox_off_background_focus_yellow"/>
<item android:state_checked="false" android:drawable="@drawable/checkbox_off_background" />
<item android:state_checked="true" android:drawable="@drawable/checkbox_on_background" />
</selector>
Run Code Online (Sandbox Code Playgroud)
如何设置dip/dp值来更改复选框位图的大小?
我正在使用意外的博客,并希望在apache htaccess文件中进行重写,当在浏览器中打开/ info时它会打开/index.php?/categories/1-Info.
我试过跟随rewriterule:
RewriteRule ^info index.php?/categories/2-Info [L]
Run Code Online (Sandbox Code Playgroud)
它不起作用.当我改变替换成别的东西(如http://www.google.com)它去那里,所以模式应该工作,但它并没有告诉我,我想看到的偶然性类别.当我手动输入时,地址确实有效.
我阅读了十几个带有指南的网页,并使用"http://martinmelin.se/rewrite-rule-tester/"来验证我的重写,但我仍然无法让它工作.不幸的是,我也看不到或设置任何记录.
我如何更改重写?
编辑:
我的.htaccess文件如下所示:
# BEGIN s9y
ErrorDocument 404 /data/script/index.php
DirectoryIndex /data/script/index.php
Options -MultiViews
RewriteEngine On
RewriteBase /data/script/
RewriteRule ^info index.php?/categories/2-Info [L]
<Files *.tpl.php>
deny from all
</Files>
<Files *.tpl>
deny from all
</Files>
<Files *.sql>
deny from all
</Files>
<Files *.inc.php>
deny from all
</Files>
<Files *.db>
deny from all
</Files>
# END s9y
Run Code Online (Sandbox Code Playgroud) 正如标题已经说过的那样,我想知道是否有可能在Eclipse中使用Eclipse为类提供不同的文件名?
编辑:我只想知道Eclipse是否可行.如果你不知道答案,请抵制回应的反应.
编辑2:我在这里得到什么样的回应真是太搞笑了.我想知道的是,是否有可能有一个具有不同文件名的类(我的意思是公共类)而没有别的.我认为这是提出这些问题的论坛,但我得到的第二个反应已经是一种侮辱.这是某种禁忌问题还是发生了什么?