- 浏览: 73329 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
文章分类
- 全部博客 (86)
- Java_Develop (6)
- Develop about Android (11)
- Develop about C (3)
- Develop about C++ (13)
- Develop about Objective-C (8)
- Develop about XML&DOM4J (6)
- Develop about JSP (7)
- Develop about Servlet (14)
- develop about MySql (4)
- Develop about Java_Socket (1)
- Develop about Java_Thread (4)
- Develop about IOS (8)
最新评论
-
eric_weitm:
在效率本身上而言,引用也有优势。另外,在编译器实现时,指针的传 ...
C++中的 引用和指针区别
多种方式实现页面切换
今天老师留的作业如题,要求用三种方式实现:按钮切换,按键切换和触摸切换。
先说我做的第一种方式逻辑:
先上代码:
OneActivity.java文件代码:
package cn.class3g;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class OneActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button nextButton = (Button)findViewById(R.id.next);
nextButton.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View v) {
setContentView(R.layout.two);
ButtonupButton=(Button)findViewById(R.id.up);
upButton.setOnClickListener(newOnClickListener() {
@Override
publicvoid onClick(View v) {
setContentView(R.layout.main);
ButtonnextButton = (Button)findViewById(R.id.next);
}
});
}
});
}
}
解释:这是我最初写的代码,布局文件写了两个:main.xml和two.xml,分别显示两个页面,分别有一个<TextView>和<Button>元素,具体代码如下:
Main.xml代码:
<?xml version="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="这是第一页"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/next"
android:text="下一页"/>
</LinearLayout>
Two.xml代码:
<?xmlversion="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="这是第二页"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/up"
android:text="上一页"
/>
</LinearLayout>
两个xml文件写完后就是写逻辑了,java代码如开头写的那样,我是这样想的:
默认的onCreate方法初始化后,通过setContentView调用布局文件main。Xml这就是默认的布局,然后声明了一个Button组件命名为nextButton,调用setOnClickListener监听器实现对按钮的监听,在监听器中new了一个点击监听器onclickListener,在监听器中实现了一个名为onClick的方法,在这里我写了一个跳转页面的setContentView方法,通过点击Button按钮实现跳转到two.xml布局页面上,这样就打开了two.xml页面;在这个页面上写了另一个Button按钮命名为:upButton用来返回上页面,就这样通过嵌套就实现了通过点击按钮实现页面切换的效果。
但这不是我想要的效果,我要的效果是无论点击哪个按钮都会出现不同的样式页面,所以我通过对按钮进行判断来实现效果。首先想到的是用if语句进行判断点击的是哪个按钮,然后进行不同的操作。我想这样好点吧,但事实上不需要那么复杂去判断键值就可以实现:
packagecn.class3g;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
public classActivityTest extends Activity {
/** Called when the activity is firstcreated. */
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button nextButton =(Button)findViewById(R.id.next);
nextLayout();//显示下一个页面
}
public void nextLayout(){
setContentView(R.layout.two);
ButtonupButton=(Button)findViewById(R.id.up);
upButton.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
upLayout();
}
});
}
public void upLayout(){
setContentView(R.layout.main);
ButtonnextButton = (Button)findViewById(R.id.next);
nextButton.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
nextLayout();//显示下一个桌面
}
});
}
}
然后是通过按键实现页面切换,通过老师上午的实例可以知道,在调用onClickDown或onClickUp的方法中调用页面布局文件就可以实现:setContentView(R.layout.main);,在OnClickDown和onClickUp中分别添加两个页面的布局文件,再添加相反的方法,实现返回即可,代码如下:
public boolean onKeyDown(int keyCode,KeyEvent event) {
this.setContentView(R.layout.main);
returnsuper.onKeyDown(keyCode, event);
}
public boolean onKeyUp(int keyCode,KeyEvent event){
//showInfo("keyUp"+keyCode);
this.setContentView(R.layout.second);
return super.onKeyUp(keyCode,event);
}
触摸实现换页
public booleanonTouchEvent(MotionEvent event){
//showInfo("ontouch:x=" +event.getX() + " y="+event.getY());
flag = !flag;
if(flag){
this.setContentView(R.layout.main);
}else{
this.setContentView(R.layout.second);
returnsuper.onTouchEvent(event);
}
总结:
调用布局文件:setContentView(R.layout.main);
获取组件ID:ButtonnextButton = (Button)findViewById(R.id.next);
做题的过程中重命名了一次java文件,导致无法调试,原因是:忘记更改AndroidManifest.xml文件中的<activity>下的<android:name>属性值。
发表评论
-
Android开发——概述及环境搭建
2011-12-05 21:25 641今天开始学习安卓手机软件开发,首先介绍一下Android: ... -
Android开发之:第一个应用程序及工程文件及结构详解
2011-12-06 17:10 783Android开发之:第一个应用程序及工程文件及结构详解 ... -
Android开发——手机拨号程序实现
2011-12-06 19:50 928在上一篇文章中,我们实现了第一个程序:helloWorld,并 ... -
Android开发——关于onCreate的解读
2011-12-06 20:34 827当我们创建好一个Android项目后,打开src下的java ... -
Android开发——布局详解(上)
2011-12-07 16:54 711Android开发——布局详解(上) 在昨天的学习中, ... -
Android开发——Android生命周期
2011-12-10 20:11 609Activity的三种状态: ... -
Android开发——菜单小问题解决
2011-12-12 20:47 794在写菜单项的时候发现一个不知道的知识点,问题是这样产生的。写好 ... -
Android开发——UI组件详解及注册提交表单实现
2011-12-13 21:44 808今天讲解的内容是UI组件的TextView组件和EditVie ... -
Android开发——跟随手指的小球实现
2012-01-11 14:13 852今天要实现的是一个跟随手指的小球,说白了就是让小球按着手指滑动 ... -
Android开发——实现点击图片切换效果
2012-01-11 14:15 938在资源中添加5张图片,重命名为a-e。 实现java代码如下 ...
相关推荐
这些源码不仅展示了特效的具体实现方式,还提供了相应的开发指导和最佳实践,有助于其他开发者快速掌握Android页面特效的开发技巧。 总的来说,本项目通过开发一系列具有创意和实用性的页面特效,为用户提供了丰富...
(3)针对页面自适应问题,本文结合渐进增强以及拥抱流式布局的思想,同时研究利用了移动设备的视口特性,实现跨分辨率、跨设备的页面自适应。 (4)针对系统的功能实现问题,通过结合利用原生态框架与HTML5的跨平台...
进阶用法,比如在多种页面之间自由切换 传送门 博客:http://crazysunj.com/ 谷歌邮箱:twsunj@gmail.com QQ邮箱:387953660@qq.com 版本记录 使用说明书 由于我们专注于数据处理使得复杂布局非常简单,但我们与UI...
// 返回页面布局 View view = LayoutInflater.from(context).inflate(R.layout.banner_item,null); mImageView = (ImageView) view.findViewById(R.id.banner_image); return view; } @...
MultipleStatusLayoutMultipleStatusLayout —多状态布局-处理页面多种状态的切换导入compile 'com.warpdrive.multiplestatuslayout:library:{latestVersion}'使用multipleStatusLayout = new MultipleStatusLayout....
一个页面从开始请求数据到请求有了结果之后,有多种状态UI切换 这个小library就是让你方便的控制这些状态的显示样式,显示和隐藏 并且所有状态和UI都是可配置的 并且不侵入你原始的布局,完全以组件的形式提供 并且...
包括自定义刷新加载效果、极简通用的万能适配器Adapter、万能分割线、多种分组效果、常见状态页面、item动画效果、添加多个header和footer、侧滑、拖拽、Sticky(黏性)效果、多item布局等,各模块之间灵活、解耦、...
1.添加Gradle(以前是有的是Jecenter方式约会,由于国内被墙了,切换成JitPack方式约会,使用方式不变) Jitpack 将其添加到存储库末尾的root build.gradle中: allprojects { repositories { ... m
您可以很自由地把单个或多个应用从应用页面中创建快捷方式并拖拽到任何一个自定义页面,或在自定义页面中把各种控件自由的进行页面切换、角度旋转等操作,从而布局属于您的个性化页面. 侧面栏提供了各种TSF SHELL 3D...
您以很自由地把单个或多个应用从应用页面中创建快捷方式并拖拽到任何一个自定义页面,或在自定义页面中把各种控件自由的进行页面切换、角度旋转等操作,从而布局属于您的个性化页. 侧面栏提供了各种TSF SHELL 3D...
基于 (兼容系统...全屏与非全屏两套布局切换,没有任何操作控件的纯播放支持,弹幕功能,继承自定义任何布局。 播放 单例播放,多个同时播放,视频列表滑动自动播放,列表切换详情页面无缝播放。 窗 小窗口,多
Android6.0运行时权限 RecycleView高级封装,万能RecycleView,试用90%以上布局 通过高度计算设计沉浸式状态栏 多种自定义控件(比如自定义轮播图,下载进度Progress,SubTabNavitagor,Flowlayout,阻尼会弹View,伸缩...
智能全拼整句输入、中英文无切换混合输入、快速下滑输入符号数字、一键切换英文精确输入、智能调整候选词优先级、笔画输入支持基于语境的预测、多种特定模式支持以及强大的按键纠错功能等一系列创新设计让您的手机...
Android6.0运行时权限 RecycleView高级封装,万能RecycleView,试用90%以上布局 通过高度计算设计沉浸式状态栏 多种自定义控件(比如自定义轮播图,下载进度Progress,SubTabNavitagor,Flowlayout,阻尼会弹View,...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的...