android 自定义view那里画图片时怎样旋转图片运行出错误 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 源代码如下: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> 改成FrameLayout mFrameLayout = (FrameLayout)findViewById(R.id.imageid);错误出在mFrameLayout == null求各位大虾解决啊 listview中添加Button后,Button能够功能不完全相同吗? 求教,如何根据web页面的内容动态构造client-side的界面 新手求教,onCreate多次调用问题 请问如何取得安装apk的日期和大小。 android 中文自动变英文? 想做嵌入式底层东西,应该学android开发中的哪些东西? 祝大家节日快乐,请教个bindService的生存期问题 android图片浏览Bitmap内存溢出的问题求教 Android 界面布局的问题? 新建类的oncreate方法没有提示输入,要自己纯手动输入? Andriod开发问题:R是什么? 急急急!!!求救啊,高高手请进
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>
错误出在mFrameLayout == null
求各位大虾解决啊