【发布时间】:2013-12-30 14:38:38
【问题描述】:
这是我迄今为止尝试过的代码..
package com.gtxradeon.brands;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class Panel extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread;
public Paint paint;
private Bitmap scaled;
public Panel(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
setFocusable(true);
paint = new Paint();
}
public Panel(Context context) {
super(context);
getHolder().addCallback(this);
setFocusable(true);
}
@Override
public void onDraw(Canvas canvas) {
//paint.setARGB(255, 255, 0, 0);
// canvas.drawColor(Color.BLACK);
// canvas.drawCircle(500f, 500f, 30, paint);
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.mapmarker);
canvas.drawBitmap(bmp , 250f, 250f, null);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
// Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.grocery);
// float scale = (float) background.getHeight() / (float) getHeight();
// int newWidth = Math.round(background.getWidth() / scale);
// int newHeight = Math.round(background.getHeight() / scale);
// scaled = Bitmap.createScaledBitmap(background, newWidth, newHeight, true);
canvasthread = new CanvasThread(getHolder(), this);
canvasthread.setRunning(true);
canvasthread.start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
boolean retry = true;
canvasthread.setRunning(false);
while (retry) {
try {
canvasthread.join();
retry = false;
} catch (InterruptedException e) {
// we will try it again and again...
}
}
}
}
这是xml文件
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<!-- <ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/grocery" /> -->
<com.gtxradeon.brands.Panel
android:id="@+id/SurfaceView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
我已经尝试了图像视图,但它不会显示为背景,因为我认为表面视图在它之上。
我还尝试将图像设置为背景,例如 android:background="@drawable/bg"
但仍然不显示..
我已经尝试了这个线程Setting image background in SurfaceView, getting black screen的解决方案 但仍然没有帮助我..
唯一出现的是我在 onDraw() 方法中显示的制造商。
【问题讨论】:
标签: android xml bitmap android-canvas surfaceview