zoukankan      html  css  js  c++  java
  • 使用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>
    





  • 相关阅读:
    Linux内核网络协议栈优化总纲
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 链表数据求和操作
  • 原文地址:https://www.cnblogs.com/eaglegeek/p/4557981.html
Copyright © 2011-2022 走看看