Android人机用户界面2--学习

来源:互联网 发布:java的项目经验怎么写 编辑:程序博客网 时间:2024/06/06 00:30

Style样式的定义

Layout.xml文件:

    <TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    style="@style/Style2"

    />

   

    <TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    style="@style/Style1"

    />

 

Style.xml文件:

    <style name="Style1">

       <item name="android:textSize">18sp</item>

       <item name="android:textColor">#ec9237</item>

    </style>

   

    <style name="Style2"><item name="android:textSize">14sp</item>

       <item name="android:textColor">#ff7f7c</item>

       <item name="android:fromAlpha">0.0</item>

       <item name="android:toAlpha">0.0</item>

    </style>

  

 

Button事件处理

按钮事件Button.OnClickListener

Layout.xml文件:

    <Button android:id="@+id/button"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="按一下我"/>

 

Activity.java文件:

       button = (Button)findViewById(R.id.button);

        textView = (TextView)findViewById(R.id.textView);

       button.setOnClickListener(buttonListener);

 

private Button.OnClickListener buttonListener = new Button.OnClickListener(){

       public void onClick(View v) {

           textView.setText("somebody has kit me "+(num ++));  

       }

    };

 

SetContentView的应用(手机页面的跳转)

main.xml文件:

    <TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="第一个页面"

    />

   

    <Button android:id="@+id/button1"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="跳到第二个页面"/>

 

next.xml文件:

<TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="第二个页面"

    />

   

        <Button android:id="@+id/button2"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="跳到第一个页面"/>

 

Activity.java文件:

       public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

       

        Button b1 = (Button)findViewById(R.id.button1);

        b1.setOnClickListener(button1Listener);

       

    }

   

    private OnClickListener button1Listener = new  OnClickListener(){

       public void onClick(View v) {

           jumpToLayout2();

       }

    };

   

    private OnClickListener button2Listener = new  OnClickListener(){

       public void onClick(View v) {

           jumpToLayout1();

       }

    };

   

    private void jumpToLayout1() {

       // TODO Auto-generated method stub

       setContentView(R.layout.main);

      

       Button button1 = (Button)findViewById(R.id.button1);

       button1.setOnClickListener(button1Listener);

    }

   

    private void jumpToLayout2() {

       // TODO Auto-generated method stub

       setContentView(R.layout.next);

      

       Button button2 = (Button)findViewById(R.id.button2);

       button2.setOnClickListener(button2Listener);

      

    }

 

 

布局

FrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角
LinearLayout
:里面可以放多个控件,但是一行只能放一个控件

TableLayout
:这个要和TableRow配合使用,很像html里面的
table
AbsoluteLayout
:里面可以放多个控件,并且可以自己定义控件的x,y的位置

RelativeLayout
:里面可以放多个控件,不过控件的位置都是相对位置

 

 

 

Bundle对象,不有Activity之间的数据传递

在一个Activity调用另一个Activity时,但若需要调用另一个Activity的同时传送数据,那么就需要利用Android.os.Bundle对象封装数据,将欲传递的数据或参数通过Bundle来传递不同Intent之间的数据.(可传简单的数据类型,也可以复杂类型:String[],ArrayList<String>

 

Activity.java文件:

           Intent intent = new Intent();

            intent.setClass(MainActivity.this, ResultActivity.class);

           

            //new一个bundle对象,并将要传递的数据传入

            Bundle bundle = new Bundle();

            bundle.putDouble("height",height);

             bundle.putString("sex", sex);

           

            //Bundle对象assignIntent

            intent.putExtras(bundle);

            startActivity(intent);

 

另一个Activity.java文件:

Bundle bundle = this.getIntent().getExtras();

         //取得数据

        String sex = bundle.getString("sex");

        double height = bundle.getDouble("height");

 

 

 

startActivityForResult方法(返回数据到前一个Activity)

数据从Activity1传递到Activity2,再从Activity2Activity1,返回上页且能保存之前信息。那么就必须用startActivityForResult来唤起一个Activity,这样前一个Activity1便会有一个等待次Activity2的返回,而返回的数据就可以达到我们想要的效果.

MainActivity.java文件:

           Intent intent = new Intent();

            intent.setClass(MainActivity.this, ResultActivity.class);

           

            //new一个bundle对象,并将要传递的数据传入

            Bundle bundle = new Bundle();

            bundle.putDouble("height",height);

            bundle.putString("sex", sex);

           

            //Bundle对象assignIntent

            intent.putExtras(bundle);

            //startActivity(intent);

           

            startActivityForResult(intent,0);

            //第二个参数为requetsCode,为用户定义

            //onActivityResult函数中的requestCode相同,使用的时候注意

 

    //重写onActivityResult函数/ requestCode为另一个Activity返回的数

    protected void onActivityResult(int requestCode, int resultCode, Intent data)

 

       switch(resultCode)

       {

       case RESULT_OK:

           //取来自Activity2的数据,并显示于页面上

           Bundle bundle = data.getExtras();

           String sex = bundle.getString("sex");

           double height = bundle.getDouble("height");

          

           editText.setText(""+height);

           if(sex.equals("M"))

           {

              radioButton1.setChecked(true);

           }

           else

           {

              radioButton2.setChecked(true);

           }

           break;

       default: break;

       }

    }

 

 

ResultActivity.java文件:

      

    private OnClickListener backListener = new OnClickListener(){ 

       public void onClick(View v) {

           //返回给上一个activity

           ResultActivity.this.setResult(RESULT_OK, intent);

           //结束这个activity

           ResultActivity.this.finish();

       }

      

    };

 

(其中intent = this.getIntent();获得)

 

 

 

原创粉丝点击