Android 如何将图像移动到屏幕上所需的位置?

Android 如何将图像移动到屏幕上所需的位置?,android,image,drawable,Android,Image,Drawable,如何将eclipse中的图像(已经在drawables文件中)移动到屏幕上的特定位置? 这是我试过的代码,不要认为它很接近 这个看起来怎么样 SurfaceHolder surfaceHolder; SurfaceView surface = new SurfaceView(this); Rect rect = new Rect(0,0,100,100); 这是onCreate LinearLayout layout = (LinearLayout) findViewById(R.l

如何将eclipse中的图像(已经在drawables文件中)移动到屏幕上的特定位置? 这是我试过的代码,不要认为它很接近

这个看起来怎么样

SurfaceHolder surfaceHolder;
SurfaceView surface = new SurfaceView(this);

Rect rect = new Rect(0,0,100,100);
这是onCreate

    LinearLayout layout = (LinearLayout) findViewById(R.layout.activity_test2);
    surfaceHolder = surface.getHolder();
    layout.addView(surface);
(公众观点是我的主要活动)

LOGCAT

02-15 01:42:16.824: W/Trace(2782): Unexpected value from nativeGetEnabledTags: 0
02-15 01:42:16.824: W/Trace(2782): Unexpected value from nativeGetEnabledTags: 0
02-15 01:42:49.993: W/Trace(2782): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.026: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.026: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.026: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.474: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.505: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.544: D/AndroidRuntime(2992): Shutting down VM
02-15 01:43:03.544: W/dalvikvm(2992): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
02-15 01:43:03.733: E/AndroidRuntime(2992): FATAL EXCEPTION: main
02-15 01:43:03.733: E/AndroidRuntime(2992): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test2/com.example.test2.Test2}: java.lang.NullPointerException
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.os.Looper.loop(Looper.java:137)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.reflect.Method.invokeNative(Native Method)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.reflect.Method.invoke(Method.java:511)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at dalvik.system.NativeStart.main(Native Method)
02-15 01:43:03.733: E/AndroidRuntime(2992): Caused by: java.lang.NullPointerException
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.view.View.<init>(View.java:3224)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.view.SurfaceView.<init>(SurfaceView.java:181)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at com.example.test2.Test2.<init>(Test2.java:44)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.Class.newInstanceImpl(Native Method)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.Class.newInstance(Class.java:1319)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
02-15 01:43:03.733: E/AndroidRuntime(2992):     ... 11 more
02-15 01:43:11.183: I/Process(2992): Sending signal. PID: 2992 SIG: 9
02-15 01:42:16.824:W/跟踪(2782):来自nativeGetEnabledTags的意外值:0
02-15 01:42:16.824:W/跟踪(2782):nativeGetEnabledTags中的意外值:0
02-15 01:42:49.993:W/跟踪(2782):nativeGetEnabledTags中的意外值:0
02-15 01:43:03.026:W/跟踪(2992):来自nativeGetEnabledTags的意外值:0
02-15 01:43:03.026:W/跟踪(2992):来自nativeGetEnabledTags的意外值:0
02-15 01:43:03.026:W/跟踪(2992):来自nativeGetEnabledTags的意外值:0
02-15 01:43:03.474:W/跟踪(2992):来自nativeGetEnabledTags的意外值:0
02-15 01:43:03.505:W/跟踪(2992):来自nativeGetEnabledTags的意外值:0
02-15 01:43:03.544:D/AndroidRuntime(2992):关闭虚拟机
02-15 01:43:03.544:W/dalvikvm(2992):threadid=1:线程退出时出现未捕获异常(组=0x40a70930)
02-15 01:43:03.733:E/AndroidRuntime(2992):致命异常:主
02-15 01:43:03.733:E/AndroidRuntime(2992):java.lang.RuntimeException:无法实例化活动组件信息{com.example.test2/com.example.test2.test2}:java.lang.NullPointerException
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
02-15 01:43:03.733:E/AndroidRuntime(2992):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.app.ActivityThread.access$600(ActivityThread.java:141)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.os.Handler.dispatchMessage(Handler.java:99)上
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.os.Looper.loop(Looper.java:137)上
02-15 01:43:03.733:E/AndroidRuntime(2992):位于android.app.ActivityThread.main(ActivityThread.java:5039)
02-15 01:43:03.733:E/AndroidRuntime(2992):位于java.lang.reflect.Method.Invokenactive(本机方法)
02-15 01:43:03.733:E/AndroidRuntime(2992):位于java.lang.reflect.Method.invoke(Method.java:511)
02-15 01:43:03.733:E/AndroidRuntime(2992):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-15 01:43:03.733:E/AndroidRuntime(2992):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-15 01:43:03.733:E/AndroidRuntime(2992):在dalvik.system.NativeStart.main(本机方法)
02-15 01:43:03.733:E/AndroidRuntime(2992):由以下原因引起:java.lang.NullPointerException
02-15 01:43:03.733:E/AndroidRuntime(2992):位于android.content.ContextWrapper.getResources(ContextWrapper.java:89)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.view.view.(view.java:3224)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.view.SurfaceView(SurfaceView.java:181)上
02-15 01:43:03.733:E/AndroidRuntime(2992):位于com.example.test2.test2.(test2.java:44)
02-15 01:43:03.733:E/AndroidRuntime(2992):位于java.lang.Class.newInstanceImpl(本机方法)
02-15 01:43:03.733:E/AndroidRuntime(2992):位于java.lang.Class.newInstance(Class.java:1319)
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.app.Instrumentation.newActivity(Instrumentation.java:1054)上
02-15 01:43:03.733:E/AndroidRuntime(2992):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
02-15 01:43:03.733:E/AndroidRuntime(2992):。。。还有11个
02-15 01:43:11.183:I/进程(2992):发送信号。PID:2992信号:9

您需要一个表面视图来容纳画布。与其他视图一样,您可以设置LayoutParams

activity_main.xml
您使用什么编程语言?eclipse for android中的javaapplication@Corey显示您的代码。要添加surfaceview的布局。任何类型的布局都可以。现在,当我使用我在上面所做的时,应用程序一打开就关闭,我不知道它是否有效
02-15 01:42:16.824: W/Trace(2782): Unexpected value from nativeGetEnabledTags: 0
02-15 01:42:16.824: W/Trace(2782): Unexpected value from nativeGetEnabledTags: 0
02-15 01:42:49.993: W/Trace(2782): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.026: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.026: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.026: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.474: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.505: W/Trace(2992): Unexpected value from nativeGetEnabledTags: 0
02-15 01:43:03.544: D/AndroidRuntime(2992): Shutting down VM
02-15 01:43:03.544: W/dalvikvm(2992): threadid=1: thread exiting with uncaught exception (group=0x40a70930)
02-15 01:43:03.733: E/AndroidRuntime(2992): FATAL EXCEPTION: main
02-15 01:43:03.733: E/AndroidRuntime(2992): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test2/com.example.test2.Test2}: java.lang.NullPointerException
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.os.Looper.loop(Looper.java:137)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.reflect.Method.invokeNative(Native Method)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.reflect.Method.invoke(Method.java:511)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at dalvik.system.NativeStart.main(Native Method)
02-15 01:43:03.733: E/AndroidRuntime(2992): Caused by: java.lang.NullPointerException
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.view.View.<init>(View.java:3224)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.view.SurfaceView.<init>(SurfaceView.java:181)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at com.example.test2.Test2.<init>(Test2.java:44)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.Class.newInstanceImpl(Native Method)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at java.lang.Class.newInstance(Class.java:1319)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
02-15 01:43:03.733: E/AndroidRuntime(2992):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
02-15 01:43:03.733: E/AndroidRuntime(2992):     ... 11 more
02-15 01:43:11.183: I/Process(2992): Sending signal. PID: 2992 SIG: 9
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <LinearLayout
        android:id="@+id/myLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </LinearLayout>
</LinearLayout>
package com.sample.androidcrashtest;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.LinearLayout;
import android.widget.FrameLayout.LayoutParams;

public class MainActivity extends Activity{

    Canvas canvas; //Your canvas to draw on
    LinearLayout myLayout; //The layout that holds the surfaceview
    SurfaceView surface;
    SurfaceHolder surfaceHolder;

    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_main);
        myLayout = (LinearLayout) findViewById(R.id.myLayout);

        LinearLayout.LayoutParams params_surfaceCanvas = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

        surface = new SurfaceView(this);
        surface.setLayoutParams(params_surfaceCanvas);

        //Assign a surfaceholder to the surface
        surfaceHolder = surface.getHolder();

        myLayout.addView(surface);
        canvas = new Canvas();

        //Call on draw method
        onDraw();
    }

    public void onDraw() {
        //Starts a thread
        new Thread(new Runnable() {
            public void run() {
                while(true) {
                    //Loops until surfaceHolder is valid to use
                    if (surfaceHolder.getSurface().isValid()) {
                        Log.i("Drawing","Drawing"); 
                        //Always lock the canvas if you want to draw in surfaceview
                        canvas = surfaceHolder.lockCanvas();

                        Bitmap image1 = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
                        canvas.drawColor(Color.WHITE); //The background color of the canvas
                        canvas.drawBitmap(image1, 100, 100, null);

                        //Don't forget to unlock it after you draw in the surfaceview
                        surfaceHolder.unlockCanvasAndPost(canvas);

                        //breaks the while and end the thread.
                        break;
                    }
                }
            }
        }).start();
    }
}