Android开发——(三)布局UI界面

    在应用的开发中,UI界面是很重要的一块。因为其是直接呈现给用户的东西。人都是喜欢美好的事物,我一直对界面有一种特别的挑剔,与我的手机主题不搭调的APP我是不会使用的大笑。我曾经的梦想,不,也可以说现在的梦想以及以后的梦想之一也是可以出自己的绘本。所以《黑客与画家》那本书感动我至今,我想作者真真是潇洒的,有一天,也可以希望自己可以重新回到校园,选一所喜欢的学校,读一个喜欢的专业,无关功利,只因兴趣。我想我是不会放弃的。我写博客有总结的作用,但更重要的是一种记录吧。毕竟总结很多方式都可以,但是记录我希望是永恒的,等我哪天想起,就会来翻看一下以前的博客,回想下当时的心情。所以博客里面大都在自言自语,这是我想自己讲给自己的话,自己为自己留下的记录。

     

    言归正传,关于UI的设置,Android为用户提供了四种方式。下面一一讲来。

    一:使用XML布局UI界面。

    在res/layout下有相应的XML布局文件。每新建一个Activity,res/layout 都会自动新建一个与之名称对应的XML文件,创建后,R.java会自动收录该布局资源。在Activity中使用

setContentView(R.layout.name);

 即可显示相应的布局文件内容。name是相应的XML文件名。示例如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
 <EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />
</LinearLayout>

    这个例子依然是官网的例子,短小精悍,我想所有的教程都是从官网资料演变而来的,不如直接看官网,顺便可以练习英文大笑。    

    其实这一段代码,让我想起了以前用flex的情景,和flex写界面语法是非常相似的,所以有一种莫名的熟悉感大笑。Activity 在Android 中差不多和Swing 中的(J)Frame 相类,View 在Android 中和Swing 中的(J)Components 相类,TextView 在Android 中和Swing 中的(J)Lable 相类,EditText 在Android 中和Swing 中的(J)TextField 相类,Button 在Android 中和Swing 中的(J)Button 相类,因为写过一点Java的缘故,还是很容易接受的。

    二:写Java代码布局UI界面(类似Java Swing)

//1,创建布局管理器,并且设置布局管理器的属性
        FrameLayout frame =new FrameLayout(this);//创建帧布局管理器
//        frame.setBackgroundDrawable(this.getResources().getDrawable
//        		                (R.drawable.background));//设置背景图片
//        frame.setBackground(this.getResources().getDrawable(R.drawable.background));
        setContentView(frame);
        TextView text1=new TextView(this);//相当于Swing 中的(J)Lable
        text1.setText("在代码中控制UI界面");
        text1.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);//设置字体大小,单位为像素
        text1.setTextColor(Color.rgb(1, 1, 1));//设置颜色
        
        frame.addView(text1);
        
        text2=new TextView(this);
        text2.setText("单击进入游戏......");
        text2.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);//设置字体大小,单位为像素
        text2.setTextColor(Color.rgb(1, 1, 1));//设置颜色
        FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(
        		ViewGroup.LayoutParams.WRAP_CONTENT,
        		ViewGroup.LayoutParams.WRAP_CONTENT);
        
        params.gravity=Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL;//设置居中
        text2.setLayoutParams(params);//设置布局参数
        
        frame.addView(text2);

 

    三:使用XML和Java代码混合布局UI界面。

    XML实现方便快捷,但是缺少灵活性,Java实现灵活,但是开发过程繁琐。可以使用XML和Java混合使用来布局界面。把变化小,行为比较固定的组件放在XML里,把变化较多,行为控制比较复杂的组件来使用Java代码实现。

android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:background="@drawable/background"
    android:id="@+id/layout" 
public class MainActivity extends ActionBarActivity {

	private ImageView[] img=new ImageView[4];
	private int[] imgPath=new int[]{
			R.drawable.img01,R.drawable.img02,R.drawable.img03,
			R.drawable.img04
	};//声明并初始化一个保存图片的数组
	
// 	@SuppressWarnings("deprecation")
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout layout=(LinearLayout)findViewById(R.id.layout);
        for(int i=0;i<imgPath.length;i++){
        	img[i]=new ImageView(this);
        	img[i].setImageResource(imgPath[i]);
        	img[i].setPadding(5, 5, 5, 5);
        	
        	FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(
            		253,148);
        	img[i].setLayoutParams(params);
        	//layout.addView(img[i]);
        }
        
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

要注意的是Fragment的使用。在最新的Android SDK,新建一个Project后是有连个XML的,一个activity_main.xml,一个fragment_main.xml。

猜你喜欢

转载自eleanor-fan.iteye.com/blog/2040191