解决方案 »

  1.   

    源代码如下:
    package com.xiaofei.snake;
    import java.util.ArrayList;
    import java.util.Random;
    import android.app.Activity;
    import android.content.Context;
    import android.content.res.Resources;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Path;
    import android.graphics.Rect;
    import android.graphics.drawable.ShapeDrawable;
    import android.graphics.drawable.shapes.OvalShape;
    import android.graphics.drawable.shapes.PathShape;
    import android.graphics.drawable.shapes.RectShape;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.FrameLayout;
    import android.widget.LinearLayout;
    //import android.widget.Gallery.LayoutParams;
    import android.widget.TextView;public class MySnakeActivity extends Activity {
        /** 
         * Called when the activity is first created. 
        **/
    //private Button startButton;
    /**
         * use button to control snake move direction
         */
        private Button upButton = null;
    private Button startButton =null;
    private View mSnakeView = null;

    private  SnakeView imageView;
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            imageView = new SnakeView(this);
            LinearLayout mFrameLayout = (LinearLayout)findViewById(R.id.imageid);
            mFrameLayout.addView(imageView);
            //imageView = (SnakeView)findViewById(R.id.snake);
            
            setContentView(R.layout.main);
            //LinearLayout ll = (LinearLayout) findViewById(R.id.imageid);
            //ll.addView(imageView);
            
            startButton = (Button)findViewById(R.id.startButton);
            upButton = (Button)findViewById(R.id.upButton);
            upButton.setOnClickListener(new upButtonListener());
            
            
            
            startButton.setOnClickListener(new Button.OnClickListener(){
            
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    imageView.setPosLeft();
    }
            
            });
            
        }
        
        private class upButtonListener implements OnClickListener { @Override
    public void onClick(View v) {
        }
     }
    }
    package com.xiaofei.snake;
    import android.content.Context;
    import android.content.res.Resources;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Matrix;
    import android.graphics.Paint;
    import android.graphics.Path;
    import android.graphics.Rect;
    import android.graphics.drawable.ShapeDrawable;
    import android.graphics.drawable.shapes.OvalShape;
    import android.graphics.drawable.shapes.PathShape;
    import android.graphics.drawable.shapes.RectShape;
    import android.view.View;public class SnakeView extends View{  Paint mPaint = null;
         Bitmap bitMap = null;
         Bitmap bitMapDisplay = null;
         int m_posX = 120;
         int m_posY = 50;
         int m_bitMapWidth = 0;
         int m_bitMapHeight = 0;
         Matrix mMatrix = null;
         float mAngle = 0.0f;
         float mScale = 1f;//1为原图的大小     public SnakeView(Context context) {
             super(context);
             mPaint = new Paint();
             mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
             bitMap = BitmapFactory.decodeResource(this.getResources(),
                     R.drawable.zhuxian);
             bitMapDisplay = bitMap;
             mMatrix = new Matrix();
             // 获取图片宽高
             m_bitMapWidth = bitMap.getWidth();
             m_bitMapHeight = bitMap.getHeight();
         }     // 向左移动
         public void setPosLeft() {
             m_posX -= 10;
         }     // 向右移动
         public void setPosRight() {
             m_posX += 10;
         }     // 向左旋转
         public void setRotationLeft() {
             mAngle--;
             setAngle();
         }     // 向右旋转
         public void setRotationRight() {
             mAngle++;
             setAngle();
         }     // 缩小图片
         public void setNarrow() {
             if (mScale > 0.5) {
                 mScale -= 0.1;
                 setScale();
             }
         }     // 放大图片
         public void setEnlarge() {
             if (mScale < 2) {
                 mScale += 0.1;
                 setScale();
             }
         }     // 设置缩放比例
         public void setAngle() {
             mMatrix.reset();
             mMatrix.setRotate(mAngle);
             bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,
                     m_bitMapHeight, mMatrix, true);
         }     // 设置旋转比例
         public void setScale() {
             mMatrix.reset();
             //float sx X轴缩放 
             //float sy Y轴缩放
             mMatrix.postScale(mScale, mScale);
             bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,
                     m_bitMapHeight, mMatrix, true);
         }     @Override
         protected void onDraw(Canvas canvas) {
             super.onDraw(canvas);
             canvas.drawBitmap(bitMapDisplay, m_posX, m_posY, mPaint);
             invalidate();
         }
     }
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/imageid"


    >
      <!--  
    <com.xiaofei.snake.SnakeView
     android:id="@+id/snake"
    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    tileSize="24"
                    />
    -->
    <!-- <com.xiaofei.snake.SnakeView
     android:id="@+id/snake"
     android:layout_width="match_parent"
         android:layout_height="match_parent"
         tileSize="24"
                    /> -->
    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
      android:id="@+id/text"
     
    android:visibility="visible"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:gravity="center_horizontal"
    android:layout_alignParentTop="true"
    android:layout_marginTop="70dip"
    android:textColor="#ff8888ff"
    android:text="hello, china"
    android:textSize="24sp"/>
    <Button 
    android:id="@+id/startButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="50dip"
    android:visibility="visible"
    android:text="start"/>
    <Button
    android:id="@+id/stopButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="50dip"
    android:text="stop"
    />
    <Button 
    android:id="@+id/rightButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/stopButton"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="50dip"
    android:layout_marginRight="35dp"
    android:width="55dip"
    android:text="right"
    />
    <Button 
    android:id="@+id/upButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/rightButton"
    android:layout_above="@id/rightButton"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="70dip"
    android:width="40dip"
    android:text="up"
    />
    <Button 
    android:id="@+id/downButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/rightButton"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="20dip"
    android:width="40dip"

    android:text="dw"
    />
    <Button 
    android:id="@+id/leftButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/startButton"
    android:layout_marginLeft="35dip"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="50dip"

    android:width="55dip"
    android:text="left"

    />


     </RelativeLayout> 
    </FrameLayout>
      

  2.   

    改成FrameLayout mFrameLayout = (FrameLayout)findViewById(R.id.imageid);
    错误出在mFrameLayout == null
    求各位大虾解决啊