android点击按钮切换Layout?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android点击按钮切换Layout?相关的知识,希望对你有一定的参考价值。

Main界面一共是7个按钮,每个按钮点击之后进入一个已经创建的、独立的Layout(也是7个,每个上面也有按钮,点击之后返回Main界面),在线等待,解决有重谢啊
修改之后出错的代码:
public class MainActivity extends Activity
Button begin;
OnClickListener begin_l=new OnClickListener()
@Override
public void onClick(View v)
Intent i=new Intent(MainActivity.this, beginActivity.class);
startActivity(i);

;

@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
begin.setOnClickListener(begin_l);

屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一FrameLayout内有多个页面,比如一个系统设置页面;一个个性化设置页面。
通过查看OPhone API文档可以发现,有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。该类有如下几个和动画相关的函数:

setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。

java代码:
setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。
showNext: 调用该函数来显示FrameLayout里面的下一个View。
showPrevious: 调用该函数来显示FrameLayout里面的上一个View。
复制代码
一般不直接使用ViewAnimator而是使用它的两个子类ViewFlipper和ViewSwitcher。ViewFlipper可以用来指定FrameLayout内多个View之间的切换效果,可以一次指定也可以每次切换的时候都指定单独的效果。该类额外提供了如下几个函数:

java代码:
isFlipping: 用来判断View切换是否正在进行
setFilpInterval:设置View之间切换的时间间隔
startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
stopFlipping: 停止View切换
复制代码

ViewSwitcher 顾名思义Switcher特指在两个View之间切换。可以通过该类指定一个ViewSwitcher.ViewFactory 工程类来创建这两个View。该类也具有两个子类ImageSwitcher、TextSwitcher分别用于图片和文本切换。

ViewFlipper示例

ViewFlipper是继承至FrameLayout的,所以它是一个Layout里面可以放置多个View。在示例中定义一个ViewFlipper,里面包含三个ViewGroup作为示例的三个屏幕,每个ViewGroup中包含一个按钮和一张图片,点击按钮则显示下一个屏幕。代码如下(res\layout\main.xml):

java代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ViewFlipper android:id="@+id/details"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:persistentDrawingCache="animation"
android:flipInterval="1000"
android:inAnimation="@anim/push_left_in"
android:outAnimation="@anim/push_left_out"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:text="Next"
android:id="@+id/Button_next1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
<ImageView
android:id="@+id/image1"
android:src="@drawable/dell1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ImageView>
</LinearLayout>

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:text="Next"
android:id="@+id/Button_next2"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
<ImageView
android:id="@+id/image2"
android:src="@drawable/lg"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ImageView>
</LinearLayout>

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:text="Next"
android:id="@+id/Button_next3"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
<ImageView
android:id="@+id/image3"
android:src="@drawable/lenovo"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ImageView>
</LinearLayout>

</ViewFlipper>

</LinearLayout>

复制代码

系列之Android 切换多个layout界面(二) 的帖子链接http://www.eoeandroid.com/thread-90754-1-1.html
系列之Android 切换多个layout界面(三) 的帖子链接http://www.eoeandroid.com/thread-90759-1-1.html
参考技术A 如果按照一楼说的那就简单了,activity之间的来回切换而已。
举个例子:
Intent i=new Intent(first.this, View2.class);
startActivity(i);
把上面这段代码写进按钮的单击事件onclick里。
这样写虽然简单,但是貌似代码比较繁琐追问

按照您说的,但是一点击按钮就直接停止运行
代码部分在问题补充里面。

追答

你的Activity在全局配置文件中注册了吗,如果是的话,那你就好好看看log吧,这样才能定位错误,解决错误

追问

没有注册,因为不知道怎么注册

追答



在AndroidMainfest.xml的文件中应该能看到以上类似代码吧,你在它下面另起一行,

这就完成了activity的注册,当然每个activity都要这么注册

额,我也是菜鸟,大家相互帮助!

本回答被提问者采纳
参考技术B 再建立7个Activity,每个Activity对应一个Layout setContentView()
在Main中点击对应按钮建立Intent对象,切换追问

Intent i=new Intent(context, View2.class);

setContentView(R.id.Main2)
是不是像这样写在OnCreate下面?

追答

每个活动都要在AndroidManifest.xml中配置

当前活动中启动View2.class对应的活动
intent=new Intent(this.class,View2.class);
startActivity(intent);

View2的OnCreate中
setContentView(R.id.Main2)

每个活动都要在AndroidManifest.xml中配置

当前活动中启动View2.class对应的活动
intent=new Intent(this.class,View2.class);
startActivity(intent);

View2的OnCreate中
setContentView(R.id.Main2)

追问

我就是不知道清单文件如何注册。。。

参考技术C 建议用Fragment追问

本人初学者,对这块非常的不熟悉,我可能下一个项目里再去尝试,查了一下还是有点难度的,并且要重新写layout文件

以上是关于android点击按钮切换Layout?的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时如何将文本视图从一件事切换到另一件事 - Android

Android ListView嵌套checkbox点击事件

Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)

android开发的软件,单击按钮之后跳转到另一个页面。

密码明文密文切换

如何在android中更改切换按钮颜色