Thread thread = new Thread(this); thread.start() }
private Handler mHandler = new Handler(){ public void handleMessage(Message msg){ //main.xml is your main ui setContentView(R.layout.main); } } public void run(){ initizlize(); mHandler.sendEmptyMessage(0); }
setContentView(view);
这是需要加载的XML文件吧?
这是需要加载的XML文件吧?
我不是在activity类中切换界面,我是想从当前的View中,响应 onTouchEvent()以后,直接切换到一个新的View。能否提供个思路啊,新手,多指教
gameView=new GameView(this){
public void onNextView() {
setContentView(sG);//借助Activity实现
Log.d("Main","main");
}
};可以切换到新的View中。不知道各位有更合理的方法么?
我override的是View的,所以在里边不可以用setContentView
view2.setVisibility(View.VISIBLE);
view1和view2全部都是在一个xml里面配置的 通过设置显示与隐藏就能达到切换的效果
{
switch(GameState)
{
case:DrawLogo(c);break;
case:DrawMenu(c);break;
}}public void DrawLogo(canvas c){}public void DrawMenu(canvas c){}用android开发游戏的话 用一个View就可以解决 只是要在View定多个状态 每个状态可以控制一个界面这里我沿用的j2me的游戏开发经验希望对你有帮助
再调用activity.setContentView(刚才实例化的Intent对象)如果有返回值的话可以下载我这个例子参考。
http://download.csdn.net/download/ikaros_android/4054046
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;public class HandleMessage extends Activity implement Runnable{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
Thread thread = new Thread(this);
thread.start()
}
private Handler mHandler = new Handler(){
public void handleMessage(Message msg){
//main.xml is your main ui
setContentView(R.layout.main);
}
} public void run(){
initizlize();
mHandler.sendEmptyMessage(0);
}
private void initizlize(){
//init ............
}
}
res/layout/loading.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/loading"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Welcom..."
/>
</LinearLayout>
是一个Activity中有多个自定义的View,我要根据当前View的操作,切换到下一个View
不是你理解的那样子
思路不错,不太熟悉Java,从C转过来的
不过可以看下calculator源码下的PanelSwitcher类,
也许可以帮助到你
利用Handler处理更合理一些
setContentView(view);
http://www.hotsalesportshoes.com/
public class MyActivity extends Activity {
WelcomeView welcomeView;//欢迎动画界面的引用
GameView gameView;//游戏界面的引用
AboutView aboutView;//关于界面
HelpView helpView;//帮助界面
Handler myHandler = new Handler(){//用来更新UI线程中的控件
public void handleMessage(Message msg) {
if(msg.what == 1){//欢迎界面发送的消息
if(welcomeView != null){
welcomeView = null;
}
initGameView();
MyActivity.this.setContentView(gameView);
}else if(msg.what == 2){//游戏胜利或者失败时点击屏幕
if(gameView != null){
gameView = null;
}
initWelcomeView();//初始化欢迎界面
MyActivity.this.setContentView(welcomeView);//切换到欢迎界面
}else if(msg.what == 3){
initAboutView();
MyActivity.this.setContentView(aboutView);//切换到关于界面
}else if(msg.what == 4){
initHelpView();
MyActivity.this.setContentView(helpView);//切换到帮助界面
}
}
};
自定义的View
public class AboutView extends SurfaceView implements SurfaceHolder.Callback{
KLSDActivity activity;//activity的引用
Bitmap aboutBitmap ;
SurfaceHolder surfaceHolder;//surfaceHolder的引用
public AboutView(MyActivity activity) {
super(activity);
this.activity = activity;
surfaceHolder = this.getHolder();
getHolder().addCallback(this);//添加Callback接口的实现
// aboutBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.about);
}
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
double x = event.getX();
double y = event.getY();
if(x>230 && x<310 && y>310 && y<450){//点击确定按钮
activity.myHandler.sendEmptyMessage(2);
}
}
return super.onTouchEvent(event);
}
这是我参考了好几种写法后,觉得比较合适的。
一个Activity,包含了多个view,可以直接从当前的view直接切换到自己想要的下一个view,也是变相的通过acticty来实现的。
其实他是想说ontouch写在Activity里面,直接在activity里面处理~~如果你不需要监控游戏状态的话,根本不需要handler,不过看这段代码貌似只是根据菜单跳转而已。
不过切换的view过多,实现起来比较麻烦!
如果是游戏的话,通过游戏动画来实现!技术要求比较高!
<activity android:name=".EditActivity"/>
代码
Intent it = new Intent(".EditActivity");startActivity(it);// 酱紫你就可以切换了
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class RandomActivity extends Activity {
private Button btn ;
String random = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) this.findViewById(R.id.Random);
btn.setText("Let's Rool it!");
btn.setOnClickListener(new ButtonListener());
//将监听器绑定在按钮上
}
//设置监听器
class ButtonListener implements OnClickListener, android.view.View.OnClickListener{
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(RandomActivity.this,showActivity.class);
//从哪儿到哪儿从RandomActivity到showActivity
// intent.getExtras("random",random);
RandomActivity.this.startActivity(intent);
}public void onClick(DialogInterface dialog, int which) {
}}
}
http://blog.sina.com.cn/s/blog_6a528c550100zhhk.html
不是这个意思,真是这种情况的话,我也不至于在这边发文啊
是从View切换到View,不是在activity中直接切换
switch(iFlag)
{
case 1:
MyActivity.this.setContentView(myView1);
break;
case 2:
MyActivity.this.setContentView(myView2);
break;
}
你extern的View类里,必须在destruct函数里清空所有的非法内存资源
View里需要切换界面的时候,只要给MainActivity通下信就行了,会自动切换必调用你的析构函数
我当初开发游戏就是这样做的
setContentView(view);
用下面的
LayoutInflater inflater = getLayoutInflater();//LayoutInflater是把XML转变成View对象的东西
View InputView= inflater.inflate(R.layout.activity_touch, null);
setContentView(InputView);
既然我受教了就完善这问题吧
有对象就好搞了
直接把游戏视图加载到Activity,你在Activity做一个欢迎画面或logo,然后就跳转到游戏了,和Activity没联系了
我不是在activity类中切换界面,我是想从当前的View中,响应 onTouchEvent()以后,直接切换到一个新的View。能否提供个思路啊,新手,多指教这种方法就是啊!