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