Java 如何在TileView中获取像素颜色
我已导入一个外部库以从此库中实现TileView: 我已经阅读了所有的文档,但是我没有找到一种方法来获得接触点像素的颜色 这是我代码的一部分,但我认为这无助于解决问题Java 如何在TileView中获取像素颜色,java,android,Java,Android,我已导入一个外部库以从此库中实现TileView: 我已经阅读了所有的文档,但是我没有找到一种方法来获得接触点像素的颜色 这是我代码的一部分,但我认为这无助于解决问题 public class GetDamages extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
public class GetDamages extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TileView tileView = new TileView(getApplicationContext());
tileView.setSize(1855, 2880);
tileView.setScaleLimits(0, 2);
tileView.setShouldRenderWhilePanning(true);
tileView.addDetailLevel(0.125f, "tiles/auto/125/%d_%d.jpg");
tileView.addDetailLevel(0.250f, "tiles/auto/250/%d_%d.jpg");
tileView.addDetailLevel(0.500f, "tiles/auto/500/%d_%d.jpg");
tileView.addDetailLevel(1.000f, "tiles/auto/1000/%d_%d.jpg");
//Setup OnTouchListener
tileView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int eventAction = motionEvent.getAction();
switch (eventAction) {
case MotionEvent.ACTION_DOWN:
double x = tileView.getCoordinateTranslater().translateAndScaleAbsoluteToRelativeX(tileView.getScrollX() + motionEvent.getX(), tileView.getScale());
double y = tileView.getCoordinateTranslater().translateAndScaleAbsoluteToRelativeY(tileView.getScrollY() + motionEvent.getY(), tileView.getScale());
//HERE I NEED TO GET THE PIXEL COLOR
//addPin(tileView, x, y);
break;
}
return false;
}
});
tileView.defineBounds(0, 0, 1, 1);
tileView.setMarkerAnchorPoints(-0.5f, -1.0f);
tileView.setScale(0.5f);
setContentView(tileView);
}
//Add marker in the map
private void addPin(TileView tileView, double x, double y) {
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.push_pin);
tileView.addMarker(imageView, x, y, -0.5f, -1.0f);
}
}
我已经尝试过不同的解决方案,但是
因为TileView没有getDrawable()
此解决方案始终返回相同的负整数Try tileview.tilemap这只是一个想法,但它看起来像是试图从视图中引用地图的一部分,而不是地图本身 顺便说一句,如果你正在制作一个游戏,我建议你使用libgdx。它有一个内置的平铺地图加载器和一个完整的游戏框架。它也是多平台的
是的,你是在用这个做地图吗?因为您可能只想使用平铺贴图加载程序 但无论如何,看起来平铺贴图画布与位图渲染有关,你看过吗
可能的重复我已经尝试过这个解决方案,但没有解决我的问题,因为TileView没有getDrawable(),我是说TileView Library for Android:-/我已经阅读了所有文档,我尝试过不同的解决方案,但没有任何效果。再次检查我的问题
final Bitmap bitmap = ((BitmapDrawable)tileView.getDrawable()).getBitmap();
tileView.getTileCanvasViewGroup().setDrawingCacheEnabled(true);
Bitmap hotspots = Bitmap.createBitmap(tileView.getTileCanvasViewGroup().getDrawingCache());
int touchColor;
if (hotspots == null) {
touchColor = 0;
} else { tileView.getTileCanvasViewGroup().setDrawingCacheEnabled(false);
touchColor = hotspots.getPixel((int)x, (int)y);
}
Log.wtf("Debug", "Pixel Color " + touchColor);