这个就只有自定义类了,去这里http://download.csdn.net/detail/wds1181977/7726319 下载后自己调试,再修改部分代码应该就能达到你的需求了
解决方案 »
- 如何在Android端判断是否是开发状态,即Eclipse打开链接Android模拟器或真机
- eclipse xml的提示代码变成白色了 完全看不清!!! 在哪改。。
- Android使用socket通信中的编码问题
- 请教android发送按键事件问题
- 【了解Baksmali的请进】
- 关于android开发选题
- swiffy将flash转换html5后,webview调用html5很慢
- 怎样让输入法框始终出现在一个activity中,并捕捉到其输入?
- 获得焦点图时 弹出系统输入法怎么办?
- 类QQ切换多帐号时,如何停止多线程的网络请求/切换数据
- 支付宝是怎么获取手机通讯录的?
- 两个应用可否共用一个第三方的APPKEY?
要是不想用的话,那就试试用view的scale和translate这两个方法吧,当然用Matrix也可以。
你学会我下面的代码 就能做到了
虽然你可能懒得学 。。但我还是 写了
写的很不规范,,你学个大概 吧。。public class MbfView extends SurfaceView implements SurfaceHolder.Callback {
public MbfView( Context context,Handler handler) {
super(context);
myhandler=handler;
Mbfcontext=context;
SurfaceHolder holder = getHolder();
holder.addCallback(this);
setFocusable(true);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mholder=holder;
// mythread = new MbfThread(holder, Mbfcontext);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
resetthread();
}
public final void resetthread(){
mythread = new MbfThread(mholder, Mbfcontext);
mythread.setSurfaceSize();
Maina.mvRun=true;
mythread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
while (retry) {
try {
mythread.join();
retry = false;
} catch (InterruptedException e) { }
}
}
@Override
public boolean onTouchEvent(MotionEvent e) {
switch(e.getAction()){
case MotionEvent.ACTION_DOWN:
mythread.actdown(e.getX(),e.getY());
break;
case MotionEvent.ACTION_MOVE:
mythread.moveimg(e.getX() ,e.getY());
break;
case MotionEvent.ACTION_UP:
mythread.keyup(e.getX() ,e.getY());
break;
}
return true;
}
//========线程================线程=================线程=========线程==========
private final class MbfThread extends Thread {
private Drawable 图片1 ; //多个图片的话 可以 定义成数组
public MbfThread(SurfaceHolder surfaceHolder, Context context){
res = context.getResources();
mSurfaceHolder=surfaceHolder;
图片1= res.getDrawable(R.drawable. 图片1);
}
@Override
public void run() {
init(); //初始化 参数
while( mvRun){
// Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas();
synchronized (mSurfaceHolder) {
doDraw( );
}
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
c= null; } }
}
}
private final void setSurfaceSize( ) {
synchronized (mSurfaceHolder) {
allcanw = width;
allcanh = height;
}
}
//。。画屏幕初始化
private final void init(){
在这里 定义一个 和 图片大小一样 的 Rect
在这里 自定义 图片的 x y 值 set 图片 的 setBounds
}
private final void doDraw() {
//在这里 draw 你图片的 drawable
}
private final void actdown(float x,float y){
if((new Region(图片Rect)).contains((int)x, (int)y) ){
//判断是否 按了图片的 Rect 按的是第几个图片的 Rect
// 并告诉 下面的 moveimg 你要move 第几个图片
}
}
private final void moveimg(float x,float y){
//在这里 改变 图片的 x y 值 同时别忘 重设 图片 Rect 和 图片 setbounds }
private final void keyup(float x,float y){
//这里是 抬起了手指 后 的 操作
}
}
//======线程====================线程==========================线程========================
}