我正在尝试实现一个MapView,其中最上面是一个SurfaceView,它们都单独工作得很好,但是当我将它们都放在FrameLayout中时,我无法获得
getHolder().getSurface().isValid()
如真的。
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentRight="true" >
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0Xja4jU2XxeYRsWmblq0ccK2EweYe469rQRgWFg"
android:clickable="true"
android:enabled="true" >
</com.google.android.maps.MapView>
<com.example.tricorder.BallSurfaceView
android:id="@+id/nixx"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="124dp"
android:src="@drawable/ballz" />
</FrameLayout>
</RelativeLayout>
SurfaceView代码:
公共类BallSurfaceView扩展SurfaceView实现Runnable {
float x, y, sensorX, sensorY, a, b, centerX, centerY;
int color = 0;
SurfaceHolder ourHolder;
Thread ourThread = null;
boolean isRunning = false;
public BallSurfaceView(Context context) {
super(context);
ourHolder = getHolder();
x = y = sensorY = sensorX = 0;
}
public BallSurfaceView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
ourHolder = getHolder();
x = y = sensorY = sensorX = 0;
// TODO Auto-generated constructor stub
}
public BallSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
ourHolder = getHolder();
x = y = sensorY = sensorX = 0;
// TODO Auto-generated constructor stub
}
public void pause() {
isRunning = false;
while (true) {
try {
ourThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
ourThread = null;
}
public void resume() {
isRunning = true;
ourThread = new Thread(this);
ourThread.start();
}
public void run() {
// TODO Auto-generated method stub
while (isRunning) {
Surface sc = ourHolder.getSurface();
if (!sc.isValid())
continue;
Canvas canvas = ourHolder.lockCanvas();
//if (color == 0)
//canvas.drawRGB(0, 0, 0);
// else if (color == 1)
//canvas.drawRGB(127, 127, 127);
//else
//canvas.drawRGB(255, 255, 255);
centerX = canvas.getWidth() / 2;
centerY = canvas.getHeight() / 2;
x += sensorX;
y += sensorY;
a = centerX + x;
b = centerY + y;
if (x > (1.5 * centerX)) {
x = (float) (1.5 * centerX);
}
if (x <= (0.2 * centerX)) {
x = (float) (0.2 * centerX);
}
if (y > (1.5 * centerX)) {
y = (float) (1.5 * centerX);
}
if (y <= (0.2 * centerX)) {
y = (float) (0.2 * centerX);
}
// if (a > canvas.getWidth())
// a = canvas.getWidth();
// if (b > canvas.getHeight())
// b = canvas.getHeight();
// if (a < 0)
// a = 0;
// if (b < 0)
// b = 0;
canvas.drawBitmap(GraphicActivity.ball, x, y, null);
ourHolder.unlockCanvasAndPost(canvas);
}
}
}
在MapActivity中创建:
受保护的void onCreate(Bundle saved instancestate){
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mMag = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
mAcc = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
ball = BitmapFactory.decodeResource(getResources(), R.drawable.ballz);
ourSurfaceView = new BallSurfaceView(this);
ourSurfaceView.resume();
//ourSurfaceView = (BallSurfaceView) findViewById(R.id.nixx);
setContentView(R.layout.activity_graphic);
mapView = (MapView) findViewById(R.id.mapView);
List mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.ballz);
CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(
drawable, this);
GeoPoint point = new GeoPoint(37985339, 23716735);
OverlayItem overlayitem = new OverlayItem(point, "Hello",
"I'm in Athens, Greece!");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
MapController mapController = mapView.getController();
mapController.animateTo(point);
mapController.setZoom(6);
}
我总是达到
如果(!sc.isValid())
并将sc.isValid()设置为false。
没关系,我让它工作了。问题是我没有将XML中的表面视图链接到表面视图实例,如下所示:
our surface view =(BallSurfaceView)findViewById(r . id . nixx);
然后,我不需要创建我们的SurfaceView的“新”实例。
我对Android的SurfaceView类在最新的相机API上使用它进行开发遇到了麻烦。我再次检查了我的最低API水平是21。 我用两种方法实现了这一点,一种是在XML中创建SurfaceView,然后将它的值赋予我的私有SurfaceView,或者用公共构造函数创建它。 快进错误: 我认为这与SurfaceView的大小或下垫面有关。也许我没有正确使用它,但是Android文档说它可以用Sur
The surface including Country and Ocean. The default color scheme is 0xffffff. The color scheme can be set through configure() as shown in the example below: controller.configure({ color: {
surface根据PHP代码配置创建Table、Form页面 如果使用ThinkPHP的同学使用内置助手类,对tp更友好,可以查看/vender/iszsw/test/ThinkPhp.php中示例 github https://github.com/iszsw/surface gitee https://gitee.com/iszsw/surface 演示地址 http://demo.su
问题内容: 我不确定我是否完全理解这两者之间的区别。 有人可以解释为什么我要在另一个上使用它们,以及它们之间的区别吗? 问题答案: 用于通过使用属性来调整元素。 用于测量相对于上一个元素到元素的外部距离。 此外,行为可以依赖于位置,种类而不同,或。
问题内容: 我正在尝试进行反向无限滚动。我有,我收到了近10篇最近的评论,并希望用户能够滚动评论列表 最多 检索下一个10 -类似FB它显示了最近的评论的“获取前”链接,而是通过滚动事件,而不是链接。 我从http://jsfiddle.net/vojtajina/U7Bz9/开始,尝试将其修改为反向无限滚动,并很快以如下形式结束了: http://jsfiddle.net/digger69/Fw
我试图做一个谷歌地图活动,但我得到一个LogCat错误和我的应用程序崩溃。当我注册API密钥时,我使用了android提供的编码,所以我不知道为什么它不能工作。我需要帮助解决这个问题。 洛克卡特 Java文件