View初步(一)

在此之前装上第三方Android设备模拟器Genymobile, 自带的太慢了.....

过程如下:http://www.cnblogs.com/iMirror/p/3768533.html

 

1. View的基本概念

2. 在Activity当中获取代表View的对象

3. 设置View的属性

4. 为View设置监听器

 

1. View的基本概念

    在Activity上显示的所有控件就叫View, 都是用对象表示的, 生成对象的类都是View的子类

    View是所有控件类的父类

   

 

2. 在Activity当中获取代表View的对象  

    布局文件 fragment_main.xml 

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      //线性布局
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="first.pack.MainActivity$PlaceholderFragment" >
11 
12     <TextView           
13         android:id="@+id/textView"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:background="#FF0000"    //红色
17         android:text=" Hello_World" />
18 
19 </LinearLayout>

     在MainActivity.java中, 修改onCreate函数

 1 private TextView textView;    //生成名为textView的对象
 2     @Override
 3     protected void onCreate(Bundle savedInstanceState) {
 4         super.onCreate(savedInstanceState);
 5         setContentView(R.layout.activity_main);
 6         if (savedInstanceState == null) {
 7             getSupportFragmentManager().beginTransaction()
 8                     .add(R.id.container, new PlaceholderFragment())
 9                     .commit();
10         }
11         textView = (TextView)findViewById(R.id.textView); //获取该id返回值是View类型并向下转型
12         textView.setText("Hello Mirror");
13     }

      目前这里还未调试通过!

    

3. 设置View的属性

    既可在布局文件中设置, 也可在代码中设置.

 

4. 为View设置监听器

     控件          女生

     监听器       男朋友    不同监听器 为控件 执行不同工作

         

      使用步骤:

          监听器是一个对象!!!!监听器的使用方法基本思路都是如下!!!

     

         在fragment_main.xml中

        

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="first.pack.MainActivity$PlaceholderFragment" >
11 
12     <TextView
13         android:id="@+id/textView"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:background="#FF0000"
17         android:text= "0" />
18     
19     <Button
20         android:id="@+id/button"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:text= "button"
24         />
25 
26 </LinearLayout>

         在MainActivity中, 注意几点:

         1. 导入TextView 类, 选中 并 快捷键 ctrl+shift+O

            导入Button类也是的

            

         2. 在实现OnclickListener之前导入android.view.View.OnClickListener;

             点击左边的红色小叉叉, 弹出解决方案, 选择第一个Add unimplemented method 复写接口的方法

            

 

 

        为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局。Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个 Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题。Fragment 2包含了TextView和 ImageView,来显示书的详细内容和图片。

        因此代码与Mars老师不同, 整体修改如下:

        activity_main.xml

1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
2     xmlns:tools="http://schemas.android.com/tools"
3     android:id="@+id/container"
4     android:layout_width="match_parent"
5     android:layout_height="match_parent"
6     tools:context="first.pack.MainActivity"
7     tools:ignore="MergeRootFrame" />

       fragment_main.xml

 

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="first.pack.MainActivity$PlaceholderFragment" >
11 
12     <TextView
13         android:id="@+id/textView"
14         android:layout_width="match_parent"
15         android:layout_height="wrap_content"
16         android:background="#FF0000"
17         android:text= "0" />
18     
19     <Button
20         android:id="@+id/button"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:text= "button"
24         />
25 
26 </LinearLayout>

 

       MainActivity.java

 1 package first.pack;
 2 
 3 import android.os.Bundle;
 4 import android.support.v4.app.Fragment;
 5 import android.support.v7.app.ActionBarActivity;
 6 import android.view.LayoutInflater;
 7 import android.view.Menu;
 8 import android.view.MenuItem;
 9 import android.view.View;
10 import android.view.ViewGroup;
11 import android.widget.Button;
12 import android.widget.TextView;
13 
14 public class MainActivity extends ActionBarActivity {
15     
16     static int count = 0;  //定义一个常量
17     
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);  
22 
23         if (savedInstanceState == null) {
24             getSupportFragmentManager().beginTransaction()
25                     .add(R.id.container, new PlaceholderFragment())
26                     .commit();
27         }
28     }
29       
30     @Override
31     public boolean onCreateOptionsMenu(Menu menu) {       
32         // Inflate the menu; this adds items to the action bar if it is present.
33         getMenuInflater().inflate(R.menu.main, menu);
34         return true;
35     }
36 
37     @Override
38     public boolean onOptionsItemSelected(MenuItem item) {
39         // Handle action bar item clicks here. The action bar will
40         // automatically handle clicks on the Home/Up button, so long
41         // as you specify a parent activity in AndroidManifest.xml.
42         int id = item.getItemId();
43         if (id == R.id.action_settings) {
44             return true;
45         }
46         return super.onOptionsItemSelected(item);
47     }
48 
49     /**
50      * A placeholder fragment containing a simple view.
51      */
52     public static class PlaceholderFragment extends Fragment {
53         
54         Button button;   //因为这些空间都是在fragment里面布局的
55         TextView textView;
56         public PlaceholderFragment() {
57         }
58 
59         @Override
60         public View onCreateView(LayoutInflater inflater, ViewGroup container,
61                 Bundle savedInstanceState) {
62                       
63             View rootView = inflater.inflate(R.layout.fragment_main, container, false);
64             
65             textView = (TextView)rootView.findViewById(R.id.textView);
66             button = (Button)rootView.findViewById(R.id.button);                                
67             
68             button.setOnClickListener(new View.OnClickListener() {
69                 
70                 @Override
71                 public void onClick(View v) {       //复写onClick函数
72                      
73                     count++;
74                     textView.setText(count+"");//将常量转化为字符串的方法!!!!
75                 }
76             });
77             
78             return rootView;
79         }
80     }
81    
82 }

            结果如下:每点击一次button显示的数字就会 加1

 

            

        

posted @ 2014-06-04 00:01  Mirrorhanman  阅读(254)  评论(0编辑  收藏  举报