小编Ebo*_*ike的帖子

在BufferedImage的int []像素数组中工作

使用setRGBgetRGB方法处理BufferedImage时,我注意到两件事:

  1. setRGB的getRGB方法可在某些系统(多达大小比modifiyng中的int []数组慢两个数量级)慢得令人难以置信.

  2. 有没有保证一个的getRGB遵循setRGB会给你回传给相同的像素

最后一点从setRGB的JavaDoc基本上非常清楚,它指出:

...对于具有IndexColorModel的图像,选择具有最近颜色的索引.

看到我可以直接在BufferedImage的int []像素中工作,我可以通过这样做来访问,例如:

 int[] a = ((DataBufferInt) tmp.getRaster().getDataBuffer()).getData();
Run Code Online (Sandbox Code Playgroud)

我想知道:当直接操纵像素时,是否有任何已知的缺点/陷阱int[]

java bufferedimage pixel

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

使用ARGB_8888时,Android DrawBitMap非常慢

我发现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毫秒左右,但背景不可见,我在路径周围有一个黑框

android

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

启动Android gps服务

有没有办法通过代码打开gps服务?

android

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

OpenGL ES中的GPU分析和回调

有没有办法在OpenGL ES中添加类似于DirectX的回调?我正试图分析GPU的性能,所以我想弄清楚执行GPU的某些部分需要多长时间.

理想情况下,我"推"标记/回调,然后调用一堆GL绘制调用,然后推送另一个标记,然后找出一帧之后在这两个标记之间传递了多少毫秒.

(任何其他分析GPU性能的方法也会有所帮助.)

android profiling opengl-es opengl-es-2.0

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

如何防止某些功能被剥离?

我有一个包含一些JNICALL函数的静态库,即它们应该从JVM调用,并且永远不会被链接静态库的共享库引用.

然而,似乎函数剥离正在消灭JNICALL函数(它在arm-eabi-objdump -t中不可见).我正在通过添加一个具有调用JNICALL函数的不可能条件的虚函数来解决它,但这很脏.我知道有一个链接选项可以防止某些模块剥离它们未使用的数据,但它是什么?我如何在.mk文件中指定该选项?在arm-eabi-ld中我没有看到任何明显的东西.

顺便说一句,函数剥离不会剥离共享库本身的JNICALL函数,但它会从共享库链接的静态库中删除它们.这是什么原因?

android android-ndk

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

关于startactivity的android java.lang.VerifyError 1.6

我实现了一个包含活动组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)

android

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

为什么struct option array在使用getopt_long时需要一个addtional dummy条目

例如,选项数组是:

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)

是填充吗?

c getopt-long option

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

限制平移和缩放

嗨,我正在尝试创建一个应用程序,您可以在校园站点地图上缩放和平移.我有这个工作,但遇到了限制你可以平移和缩放多少的问题.我需要帮助设置平移和缩放边界.
任何帮助将不胜感激,

在此先感谢
以下是代码.

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)

android

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

滚动条未出现在JScrollPane中

我想制作一个窗口,其中两个按钮的高度很高,一侧有一个滚动条.问题是没有滚动条出现.这是我的代码

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)

java swing jscrollpane

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

requestPermission()不会完全重新创建活动堆栈

我有活动A启动活动B.此活动然后请求READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE.在Android 6.0上,这会打开权限对话框(一旦对话框弹出就会立即销毁活动B).但是,无论用户选择什么,系统都将返回活动A.

请求其他权限在其他地方工作正常,但我认为外部存储权限是那些,正如文档警告的那样,"需要重新启动应用程序","系统将重新创建活动堆栈".

我的问题是活动B永远不会重新创建,更不用说onRequestPermissionsResult被调用了.我原以为"重新创建活动堆栈"涉及再次启动活动B,理想情况下onRequestPermissionResult是在它上面调用它.我该怎么办呢?

android android-permissions android-6.0-marshmallow

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