使用xml及java代码混合的方式来设置图形界面
参考《疯狂android讲义》第2版2.1节
设置android的图形界面有三种方法:
1、使用纯xml文件
2、使用纯java,代码臃肿复杂,不建议使用
3、使用xml与java混合,前者用于固定基本不变的view,后者用于经常变化的view。
示例:使用xml+java,前者指定layout,后者指定一个imageView
MainAcitivity.java
package com.ljh.mixviewdemo; import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout; public class MainActivity extends Activity { //若这两个变量放到方法里面,则要求是final的。
int currentImage = 0;
int[] images = new int[]{R.drawable.ajax, R.drawable.classic, R.drawable.ee, R.drawable.java, R.drawable.xml}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //根据 id得到layout,注意要为layout添加一个id,而不是使用R.layout.activity_main作为 id来查找。
LinearLayout layout = (LinearLayout) this.findViewById(R.id.root); //定义一个ImageView,并将之添加至layout中。
final ImageView iv = new ImageView(this);
layout.addView(iv); //指定所要显示的图片
iv.setImageResource(images[0]); //setOnClickListener是View的方法,亦即所有的view都可点击的。
iv.setOnClickListener(new OnClickListener(){
public void onClick(View v){
iv.setImageResource(images[++currentImage%images.length]);
}
});
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical" > </LinearLayout>
见归档代码MixViewDemo.zip
事实上,ImageView也不是经常变的,变的只是里面的内容,因此可以在xml中指定这个ImageView的属性,而在java中指定它所要显示的内容。代码修改如下:
MainActivity.java
package com.ljh.mixviewdemo; import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout; public class MainActivity extends Activity { //若这两个变量放到方法里面,则要求是final的。
int currentImage = 0;
int[] images = new int[]{R.drawable.ajax, R.drawable.classic, R.drawable.ee, R.drawable.java, R.drawable.xml}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //根据 id得到layout,注意要为layout添加一个id,而不是使用R.layout.activity_main作为 id来查找。
LinearLayout layout = (LinearLayout) this.findViewById(R.id.root); /* 定义一个ImageView,并将之添加至layout中。
final ImageView iv = new ImageView(this);
layout.addView(iv);*/
//不再需要新建一个ImageView,而是获取xml中的IamgeView
final ImageView iv = (ImageView) this.findViewById(R.id.iv_books); //指定所要显示的图片
iv.setImageResource(images[0]); //setOnClickListener是View的方法,亦即所有的view都可点击的。
iv.setOnClickListener(new OnClickListener(){
public void onClick(View v){
iv.setImageResource(images[++currentImage%images.length]);
}
});
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical" > <ImageView
android:id="@+id/iv_books"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/my_published_book"
/> </LinearLayout>
使用xml及java代码混合的方式来设置图形界面的更多相关文章
- AndroidStudio中使用XML和Java代码混合控制UI界面实现QQ相册照片列表页面
场景 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建Androi ...
- 使用xml和java代码混合控制UI界面
main.xml.................... <?xml version="1.0" encoding="utf-8"?> <Li ...
- xml与java代码相互装换的工具类
这是一个java操作xml文件的工具类,最大的亮点在于能够通过工具类直接生成xml同样层次结构的java代码,也就是说,只要你定义好了xml的模板,就能一键生成java代码.省下了自己再使用工具类写代 ...
- 使用XML布局文件和Java代码混合控制UI界面
完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...
- 不使用spring的情况下原生java代码两种方式操作mongodb数据库
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- JSP中嵌入java代码的标签方式(转)
(1)声明变量或方法 : <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet): <% java代码; %> (3)表达式 ...
- 服务端发送xml请求java代码示例
/** * */ package com.autoyol.pay.cmb.core; import java.io.ByteArrayOutputStream; import java.io.IOEx ...
- Windows和Linux执行Java代码的不同方式
一.Windows 下编译并执行 Java 字节码文件(类文件) 1.编译 Hello.java 源码文件: java -d . Hello.java 2.执行 Hello.class 字节码文件: ...
- JAVA代码(GET方式)请求URL(HTTP,HTTPS)
/** * * @param url 这个只支持http地址,不支持https * @param request * @return */ public static String sendMessa ...
随机推荐
- CentoS7装机
按delete进入BIOS 选择UEFI 网上关于CentOS 7 的安装教程挺多的,但在前期的引导配置上很多都没有写清楚,让人很郁闷,以致于昨天安装的时候总是到不了安装界面.经过一番胡乱倒腾,终于找 ...
- php中的MVC模式运用
[size=5][color=Red]php中的MVC模式运用[/color][/size] 首先我来举个例子: 一个简单的文章显示系统 简单期间,我们假定这个文章系统是只读的,也就是说这个例子将不涉 ...
- akoj-1048-求某一整数序列的全排列问题
求某一整数序列的全排列问题 Time Limit:1000MS Memory Limit:65536K Total Submit:35 Accepted:16 Description 现有一整数序列 ...
- stm32的FSMC
之前用的stm32f103rbt6,它是100引脚以内的,不带FSMC.驱动液晶屏或者SRAM要自己写时序方面的程序,比较麻烦.后来换成stm32f103zet6,带有FSMC.不过在学习FSMC的时 ...
- VC2010的破解方法(针对旗舰版)
VS2010 正式版破解方法详解 全球开发者最为瞩目的Visual Studio 2010开发工具在4月12日正式发布,现为大家制作一个简单的破解教程有两种方法,操作不一样,原都一样(针对旗舰版,其他 ...
- C语言内存调试技巧—C语言最大难点揭秘
本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内.内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序, ...
- 【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序
摘自:http://www.qianyunlai.com/post-2.html 以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料 ...
- eclipsecdt添加自动补全功能
自动代码补全完全是一个改善生活质量的功能呀!cdt拥有自动代码补全功能,只是我们没有打开而已 1. 绑定快捷方式 1. windows -> preferences ->general-& ...
- UML建模工具-火龙果软件
官网地址:http://code.uml.com.cn/index.asp Bridge桥梁模式 (待逆向) 桥梁模式,通过增加一个类,将抽象部分与它的实现部分分离,使它们都可以独立 ...
- android滑动基础篇 TouchView
效果图: 代码部分: activity类代码: package com.TouchView; import android.app.Activity; import android.os.Bundle ...