这个例子学习混合使用XML布局和代码来控制UI,习惯上把变化小、行为固定的组件放在XML布局文件中管理,而那些变化较多、行为控制复杂的组件则交给Java代码来管理。
先在布局文件中定义一个线性布局容器。main.xml修改如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" android:id="@+id/root" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> </LinearLayout>
MainActivity.java代码如下:
package allegro.test3; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { int[] images=new int[]{ R.drawable.java, R.drawable.javaee, R.drawable.swift, R.drawable.ajax, R.drawable.html, }; int currentImg=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取LinearLayout布局容器 LinearLayout main=(LinearLayout) findViewById(R.id.root); //程序创建ImageView组件 final ImageView image=new ImageView(this); //添加到LinearLayout布局容器中 main.addView(image); //初始化时显示第一张图 image.setImageResource(images[0]); image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { image.setImageResource(images[++currentImg % images.length]); } }); } }
在Android工程中,每添加一个资源,就会在gen目录下的R.Java中自动生成一个新的静态整型变量来指向这个资源。程序文件中调用资源的时候,先在R.java中找到变量名,然后根据变量值查找资源。
可以直接在工程的\res\drawable文件夹里拷贝一个图片文件过去。然后在 res – drawable 标签下就会多出来你添加的图片。R.java中也会自动添加一个以图片文件名为变量名的整型变量。
注意:文件名必须全为小写。如果有大写的话,R.java中不会生成新的变量,这样程序里也就没办法调用。