在DrawingTheBall类中制作一些动画内容.. 在SUrfaceViewExample类中,Touchevent将被检测到.. 我的问题是我无法链接MainActivity和SurtfaceViewExample .. DrawingTheBall没有问题.. 主要课程:......
package maddy.first;
import android.app.Activity;
import android.os.Bundle;
public class Madhu1Activity extends Activity {
/** Called when the activity is first created. */
Drwwingtheball v;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
v = new Drawingtheball(this);
setContentView(v);
}
}
CLASS SurfaceViewExample:
package maddy.first;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnTouchListener;
public class SurfaceViewExample extends Activity implements OnTouchListener{
OurView v;
Bitmap ball;
float x,y;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
v=new OurView(this);
v.setOnTouchListener(this);
ball=BitmapFactory.decodeResource(getResources(),R.drawable.tennis_ball);
x = y = 0;
setContentView(v);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
v.resume();
}
public class OurView extends SurfaceView implements Runnable{
Thread t;
SurfaceHolder holder;
boolean isItOk=false;
public OurView(Context context) {
super(context);
// TODO Auto-generated constructor stub
holder=getHolder();
}
public void run() {
// TODO Auto-generated method stub
while( isItOk ==true)
{
//drawing
if(holder.getSurface().isValid()) {
continue;
}
Canvas c=holder.lockCanvas();
c.drawARGB(255,150,150,10);
c.drawBitmap(ball, x-(ball.getWidth()), y-(ball.getHeight()), null);
holder.unlockCanvasAndPost(c);
}
}
public void pause()
{
isItOk=false;
while(true) {
try {
t.join();
}catch(InterruptedException e) {
e.printStackTrace();
}
break;
}
}
public void resume()
{
isItOk=true;
t=new Thread(this);
t.start();
}
}
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}
}
类DrawingTheBall:
package maddy.first;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.View;
public class DrawingTheBall extends View {
Bitmap bball;
int x,y;
public DrawingTheBall(Context context) {
super(context);
bball=BitmapFactory.decodeResource(getResources() ,R.drawable.tennis_ball);
x = 0;
y = 0;
}
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
Rect ourRect=new Rect();
ourRect.contains( 0, 0,canvas.getWidth(),canvas.getHeight()/2);
Paint blue=new Paint();
blue.setColor(Color.RED);
blue.setStyle(Paint.Style.FILL);
canvas.drawRect(ourRect, blue);
if(x < canvas.getWidth())
x+=10;
else
x=0;
if(y<canvas.getHeight())
y+=10;
else
y=0;
Paint p=new Paint();
canvas.drawBitmap(bball,x,y,p);
invalidate();
}
}
}
答案 0 :(得分:0)
你的问题不明确。你想要链接什么? 你想从另一个开始活动吗? 或者您想将一些参数从一个参数传递给另一个活动?
如果要从Main活动运行SurfaceViewExample活动 - 这是代码 -
startActivity(new Intent(this, SurfaceViewExample.class)
finish();
AndroidManifest.xml文件应该是 -
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="Madhu1Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="SurfaceViewExample"></activity>
</application>
如果你想将参数从一个活动传递到另一个活动 - 这是代码 -
startActivity(new Intent(this, SurfaceViewExample.class)
.putExtra("key", [value])); // if you want to pass class the class should be Serializable, otherwise you can pass value like a hash map.
//in other activity convert it to class-
<classname> obj = (<classname>)getIntent().getSerializableExtra("key");
如果这还不够,请告诉我实际需要什么。
享受..
答案 1 :(得分:0)
我认为它会抛出一些异常,否则你的布局会有一些错误,因此它无法设置内容视图。 这是将SurfaceViewExample类保持为主要活动的最简单方法 - 转到应用程序AndroidManifest.xml文件然后 -
Application tab -> select launch activity(that is your main activity) ->
Name*(right side) -> browse(take for a while to loading activity list) - >
select SurfaceViewExample -> remove previous SurfaceViewExample activity if already added.
在SurfaceViewExample setContentView(layout.main)中设置默认布局; //如果存在 并运行您的应用程序,以检查它是否能够显示您的布局。 如果它可以成功运行,那么请查看您的DrawingTheBall代码。 玩得开心......