android界面UI的构造方式
2015-09-21 22:07
405 查看
android的UI组件都在android.widget包及子包里,和android.view包里,
×在XML中构造界面
button的id和text属性都避免使用硬编码的方式赋值,而是采取android:id="@+id/button",android:text="@string/button_text"的形式,在res—》values,strings.xml中构造,<string name="button_text">Click</string>,有利于代码的维护。
作为一种构造事件处理器的方式,在属性android:onClick=“”中为控件绑定元素,并在代码中实现。其中onClickButton(View v),v传递一个事件源对象,即产生事件的元素{为什么不是(view v)呢?view是抽象基类,不能实例化的}。
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
×在代码中构造界面
利用代码的形式创建界面元素,设置其布局信息和属性。
将使用的图片直接复制在app\src\main\res\drawable\ 目录下;R.drawable.wp_ss_20150618_0001(参看:Android Resource介绍和使用 - 学习Android - 51CTO技术博客
http://android.blog.51cto.com/268543/302529/)。
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView;
×在XML中构造界面
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_text" android:id="@+id/button" android:layout_centerVertical="true" android:layout_centerHorizontal="true" />
button的id和text属性都避免使用硬编码的方式赋值,而是采取android:id="@+id/button",android:text="@string/button_text"的形式,在res—》values,strings.xml中构造,<string name="button_text">Click</string>,有利于代码的维护。
作为一种构造事件处理器的方式,在属性android:onClick=“”中为控件绑定元素,并在代码中实现。其中onClickButton(View v),v传递一个事件源对象,即产生事件的元素{为什么不是(view v)呢?view是抽象基类,不能实例化的}。
android:onClick="onClickButton" public void onClickButton(View v){
TextView textview= (TextView)findViewById(R.id.textView); textview.setText("clicked !"); } java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
×在代码中构造界面
利用代码的形式创建界面元素,设置其布局信息和属性。
LinearLayout liLayout=new LinearLayout(this); //this传递一个Context参数,用于获取android应用环境的全局信息 setContentView(liLayout); //设置要显示的窗口,其参数也可以是XML文件,R.Layout.** liLayout.setOrientation(LinearLayout.VERTICAL); //setOrientation()方法设置Orientation
liLayout.addView(textView); //向布局管理器中添加控件内容 btn.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); //设置布局的有关信息,其参数中最好精确指定父容器,如ViewGroup.LayoutParams,而不是单纯用new LayoutPrams() ×混合两种方法 一般将简单的、根layout、稳定的用XML,业务实现较复杂的用代码实现 imageView浏览图片:
public class MainDemoActivity extends AppCompatActivity { int[] images=new int[]{R.drawable.wp_ss_20150618_0001,R.drawable.wp_ss_20150619_0001,R.drawable.wp_ss_20150622_0001,R.drawable.wp_ss_20150630_0001,R.drawable.wp_ss_20150706_0001}; int current=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_demo); RelativeLayout root=(RelativeLayout)findViewById(R.id.reLayout); final ImageView imageView=new ImageView(this); //声明为final,如果不,onClick()方法用到imageView时会有提示 root.addView(imageView); imageView.setImageResource(images[current]); //显示第一张图片 imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageView.setImageResource(images[++current % images.length]); //任何整数对于5的余数都在0-4,刚好是一个循环 } }); //匿名内部类使用事件监听器 } }
将使用的图片直接复制在app\src\main\res\drawable\ 目录下;R.drawable.wp_ss_20150618_0001(参看:Android Resource介绍和使用 - 学习Android - 51CTO技术博客
http://android.blog.51cto.com/268543/302529/)。
相关文章推荐
- String,StringBuffer与StringBuilder的区别
- UIProgressView[进度条][一般型];UIStepper步数器][事件驱动型]
- require.js的使用
- 导入NGUI插件
- KVC中setValuesForKeysWithDictionary:
- UIView层次管理(放到最上层或放到最下层)
- UIView转UIImage
- 在iOS 8中使用UIAlertController
- MDT 2013 Update 1 re-released (build 8298)发布
- win10提示 磁盘包含不是“PARTITION_BASIC_DATA_GUID"类型的分区
- win10提示 磁盘包含不是“PARTITION_BASIC_DATA_GUID"类型的分区
- CYC-集合视图 UICollectionView的简单使用
- BuildConfig.DEBUG的使用
- [UI基础]day01
- POJ 1679 The Unique MST (次小生成树)
- 蓝懿iOS培训日志17 Jason和Segue
- UITabelViewCell的数据混叠显示
- 百度编辑器ueditor上传图片及文件路径配置
- UI03_视图控制器
- UI_无限滚动相册