Android 常用控件
Android项目结构
1. src/存放java源代码
2. gen/中存放系统自动生成的配置文件
3. android 4.4.2 /该文件夹下包含android.jar文件,这是一个java归档文件,其中包含构建应用程序所需的所有的AndroidSDK库如controls(Views\)和API
4. assets /存放资源文件,不会自动生成id且不会自动占用空间
5. bin/存放应用被编译后生成的科执行文件(.apk),以及应用用到被打包到apk中的资源文件
6. res/存放应用用的的所有资源,如图片布局等.
6.1 drawable/存放不同密度的图片资源
6.2 layout/存放布局文件
6.3 values/存放字符串,主题,颜色,样式等资源文件,values-v11是存放3.0版本的.v14存放4.0版本
7. AndroidManifest.xml清单文件,配置一些与应用有关的重要信息,包含包名,权限,程序组件等等。
Android控件之TextView和EditText
TextView:显示文本框控件
EditText:输入文本框
ImageView是显示图片的一个控件
属性:
android:src= "@drawable/ic_launcher"----ImageView的内容图像
android:background= "@drawable/ic_launcher"----ImageView背景图片
android:background= "#00ff00"----ImageView的RGB颜色
Button和ImageButton的特征和区别
button有text属性,而imagebutton没有
imagebutton有scr属于,而button没有
使用按钮Button
res/value下的String.xml存放资源,button的名字就存放在String.xml。
所有Button控件的中文和数字不建议写在activity_main.xml中,而是先把字符串按照一定格式写在res\values\strings.xml里面,然后在xml中通过字符串的id引用使用。
例如:
先在strings.xml中编辑
<string name="button_name">登陆</string>;
再在activity_main.xml中
android:text="@string/button_name" 来访问"登录"字符串。
value中的String存放一些字符串,资源等。
res下的所有资源,都会对应的在gen目录下的R文件中生成资源对应的ID
Button与smallButton没什么区别,就是大小的问题,在smallButton中多了一个属性:
style="?android:attr/buttonStyleSmall
使用ImageButton
Button可以设置文本内容
ImageButton不可以已设置文本内容,但是可以通过background或者src属性添加一个图片,图片上有文本内容的图片。
监听按钮的点击事件
1、Button和ImageButton都拥有一个onclick事件。
通过自身的.setOnClickListener(OnClickListener)方法添加点击事件。
2、所有的控件都有一个onclick,不仅仅Button和ImageButton拥有。
3、通过点击事件的监听可以实现点击按钮之后要发生什么动作。
监听事件实现的几种方式:
1、匿名内部类的实现
通过自身的.setOnClickListener(new OnClickListener(){ })方法添加点击事件(直接new一个匿名内部类),然后在onClick()方法中监听点击Button的动作,并可做出相应。
2、独立类的实现
通过建立一个外部类方式,在.setOnClickListener(new 新建的外部类)方式添加点击事件,这种方法在有多个Button且的动作一致时使用,可减少冗余代码。
3、实现接口的方式来实现
现在MainActivity实现OnClickListener接口,然后实现对应的onClick方法。
实现跑马灯效果
1、TextView在文本过长时默认折行,通过设置Android:singleLine来保持在一行显示,但超过范围不显示。
1、Android:ellipsize=”start”—–省略号显示在开头 "...pedia"
android:ellipsize=”end”——省略号显示在结尾 "encyc..."
android:ellipsize=”middle”—-省略号显示在中间 "en...dia"
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)
2、android:focusable="ture"使文本可以获取焦点
android:focusableInTouchMode="true"用于触摸屏可以获取焦点的形式,删除无影响
3、由于默认第一行获取焦点,所以强制使两行isFocused=""true",均获取焦点。
多行跑马灯效果:
1、解决TextView单行显示问题
singleLine=“true”
ellipsize="marquee"
focusable="true"
focusableInTouchMode="true"
2、自定义一个Text类的子类,实现它的3个构造函数,
然后重载它的isFocusd()方法,return true。
3、在activity_main.xml中加入自定义的控件:包名.类名 方式加入
例:<com.abc.marqueetextviewdemo.MarqueeText ... />
Tips:
px,dp(dip),sp
1.在开发中不建议使用px,px不能根据分辨率来进行等比缩放;
2.dp和sp都可以根据分辨率来进行等比缩放;
3.在控件中做长度大小限制时推荐使用dp,sp更多用于显示文字size;
4.在android最新的SDK中推荐使用dp
AutoComleteTextView
1、功能:
动态匹配输入的内容,如百度热搜引擎当输入文本时,可以根据内容显示匹配的热门信息。
2、独特属性
android:completionThreshold= "2" 设置输入多少字符时自动匹配
1.初始化控件
acTextView = (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
2.需要一个适配器,初始化数据源--这数据源去匹配文本框中输入的内容
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, res)
4.将adapter与当前AutoCompleteTextView绑定
acTextView.setAdapter(adapter);
MutiAutoCompleteTextView
实现多值选取匹配内容的文本框,常用作发送邮件的文本框
与AutoCompleteTextView不同的是第5点:
5.设置以逗号分隔符为结束的符号
macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
ToggleButton
1.什么是ToggleButton:
ToggleButton有两种状态:选中和未选中状态。并且需要为不同的状态设置不同的显示文本。
2.ToggleButton属性:
android:checked="true" ToggleButton是否被选中
android:textOff="关"
android:textOn="开"
3.使用ToggleButton实现按钮开关效果
(1)初始化ToggleButton控件、在初始化一个ImageView控件,实现点击ToggleButton按钮的时候,ImageView图片的改变。
private ToggleButton tb;
private ImageView img;
tb = (ToggleButton) findViewById(R.id.toggleButton1);
img = (ImageView) findViewById(R.id.imageView1);
(2)给当前的tb设置监听器
tb.setOnCheckedChangeListener(this);
重载OnCheckedChanged方法:
public void onCheckedChanged(compoundButton buttonview, boolean ischecked){
//当tb被点击时,当前方法会执行
//buttonview--代表被点击的控件本身
//isChecked--代表被点击的控件的状态
//当点击这个tb的时候,更换img的背景,载入drawable下的on图片
img.setBackgroundResource(R.drawable.on);
CheckBox
1.初始化CheckBox
2.设置checkBox的监听事件判断是否被选中
3.接受选中后的内容
RadioGroup和RadioButton
RadioButton选中后无法改变,一般不建议单独使用
1.RadioGroup
RadioButton的一个集合,提供多选一机制
2.属性:
android:orientation="vertical" --- 垂直排布
android:orientation="horizontal" --- 水平排布
决定当前RadioGroup中的RadioButton以什么形式排列。
浙公网安备 33010602011771号