使用setRGB和getRGB方法处理BufferedImage时,我注意到两件事:
的setRGB和的getRGB方法可在某些系统(多达大小比modifiyng中的int []数组慢两个数量级)慢得令人难以置信.
有没有保证一个的getRGB遵循setRGB会给你回传给相同的像素
最后一点从setRGB的JavaDoc基本上非常清楚,它指出:
...对于具有IndexColorModel的图像,选择具有最近颜色的索引.
看到我可以直接在BufferedImage的int []像素中工作,我可以通过这样做来访问,例如:
int[] a = ((DataBufferInt) tmp.getRaster().getDataBuffer()).getData();
Run Code Online (Sandbox Code Playgroud)
我想知道:当直接操纵像素时,是否有任何已知的缺点/陷阱int[]?
我发现DrawBitMap需要50-60毫秒才能绘制三个位图,一个是占据整个屏幕的矩形,一个是圆形,另一个是路径.我的位图是通过在空白位图上使用Canvas.drawPath,drawRect和drawCircle创建的,其中Bitmap.Config为ARGB_8888.我正在使用ARGB_8888使背景可见以获得分层效果.我很震惊地发现时间大约为50ms,因为我认为drawBitmap是一个非常简单的操作.有人可以指导我是否有任何根本性的错误.以下是我的代码
创建空白位图
Rectangle = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
Circle = Bitmap.createBitmap(70,70,Bitmap.Config.ARGB_8888);
Leaf1 = Bitmap.createBitmap(20,30,Bitmap.Config.ARGB_8888);
Run Code Online (Sandbox Code Playgroud)
在适当的BitMap上绘制形状
Canvas c = new Canvas(Rectangle);
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(0xff6e8b3e);
c.drawRect(0,0,320,480,p);
Canvas c = new Canvas(Circle);
Paint p = new Paint();
CirclePath = new Path();
p.setAntiAlias(true);
p.setColor(0xffcd661d);
System.out.println("x = "+x+" y = "+y);
CirclePath.addCircle(50,50,10,Path.Direction.CW);
c.drawPath(CirclePath,p);
Canvas c = new Canvas(Leaf1);
Paint paint = new Paint();
Path path = new Path();
paint.setAntiAlias(true);
path.moveTo((float)184.37,(float)219.15);
path.cubicTo((float)188.32,(float)219.15,(float)192.88,(float)220.44,(float)195.62,(float)223.54);
path.cubicTo((float)197.84,(float)226.05,(float)203.2,(float)229.84,(float)198.18,(float)245.98);
Run Code Online (Sandbox Code Playgroud)
在OnDraw中绘制BitMap
canvas.drawBitmap(Rectangle,0,0,p);
canvas.translate(x,y); // For animation effect
canvas.drawBitmap(Circle,0,0,p);
canvas.drawBitmap(Leaf1,0,0,p);
Run Code Online (Sandbox Code Playgroud)
现在,当我记录这三个drawBitMap所花费的时间时,我发现它需要大约50ms.代码中是否存在大的时间错误.将Bitmap.Config更改为RGB_565会将时间缩短到8毫秒左右,但背景不可见,我在路径周围有一个黑框
有没有办法在OpenGL ES中添加类似于DirectX的回调?我正试图分析GPU的性能,所以我想弄清楚执行GPU的某些部分需要多长时间.
理想情况下,我"推"标记/回调,然后调用一堆GL绘制调用,然后推送另一个标记,然后找出一帧之后在这两个标记之间传递了多少毫秒.
(任何其他分析GPU性能的方法也会有所帮助.)
我有一个包含一些JNICALL函数的静态库,即它们应该从JVM调用,并且永远不会被链接静态库的共享库引用.
然而,似乎函数剥离正在消灭JNICALL函数(它在arm-eabi-objdump -t中不可见).我正在通过添加一个具有调用JNICALL函数的不可能条件的虚函数来解决它,但这很脏.我知道有一个链接选项可以防止某些模块剥离它们未使用的数据,但它是什么?我如何在.mk文件中指定该选项?在arm-eabi-ld中我没有看到任何明显的东西.
顺便说一句,函数剥离不会剥离共享库本身的JNICALL函数,但它会从共享库链接的静态库中删除它们.这是什么原因?
我实现了一个包含活动组mainActivity的项目.此主要活动包含3个其他活动组.
当我尝试启动myaccountactivity这是一个活动组时,它适用于api超过1.6,但如果我试图在1.6上运行它我会得到以下的错误
11-23 12:22:15.005: ERROR/AndroidRuntime(412): java.lang.VerifyError: com.myproject.android.MyAccountActivity
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at java.lang.Class.newInstanceImpl(Native Method)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at java.lang.Class.newInstance(Class.java:1472)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.Instrumentation.newActivity(Instrumentation.java:1097)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2242)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at com.myproject.android.myproject.showMyAccountAtivity(myproject.java:396)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at com.myproject.android.myproject.onActivityResult(myproject.java:456)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.Activity.dispatchActivityResult(Activity.java:3625)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.ActivityGroup.dispatchActivityResult(ActivityGroup.java:123)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.ActivityThread.deliverResults(ActivityThread.java:3220)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3266)
11-23 12:22:15.005: ERROR/AndroidRuntime(412): at android.app.ActivityThread.access$2600(ActivityThread.java:116)
11-23 12:22:15.005: …Run Code Online (Sandbox Code Playgroud) 例如,选项数组是:
static struct option const long_options[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{0, 0, 0, 0}
};
Run Code Online (Sandbox Code Playgroud)
是填充吗?
嗨,我正在尝试创建一个应用程序,您可以在校园站点地图上缩放和平移.我有这个工作,但遇到了限制你可以平移和缩放多少的问题.我需要帮助设置平移和缩放边界.
任何帮助将不胜感激,
在此先感谢
以下是代码.
package com.scott;
import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;
public class Touch extends Activity implements OnTouchListener,OnClickListener {
private static final String TAG = "Touch";
Matrix matrix = new Matrix();
Matrix savedMatrix = new Matrix();
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
int mode = NONE;
PointF start = …Run Code Online (Sandbox Code Playgroud) 我想制作一个窗口,其中两个按钮的高度很高,一侧有一个滚动条.问题是没有滚动条出现.这是我的代码
public class Window {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//namestanje teme
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame frame = new JFrame("frame");
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); …Run Code Online (Sandbox Code Playgroud) 我有活动A启动活动B.此活动然后请求READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE.在Android 6.0上,这会打开权限对话框(一旦对话框弹出就会立即销毁活动B).但是,无论用户选择什么,系统都将返回活动A.
请求其他权限在其他地方工作正常,但我认为外部存储权限是那些,正如文档警告的那样,"需要重新启动应用程序","系统将重新创建活动堆栈".
我的问题是活动B永远不会重新创建,更不用说onRequestPermissionsResult被调用了.我原以为"重新创建活动堆栈"涉及再次启动活动B,理想情况下onRequestPermissionResult是在它上面调用它.我该怎么办呢?
android ×7
java ×2
android-ndk ×1
c ×1
getopt-long ×1
jscrollpane ×1
opengl-es ×1
option ×1
pixel ×1
profiling ×1
swing ×1