一.控件TextView
1.基础属性详解
1. layout _ width : | 组件的宽度 |
2. layout _ height : | 组件的高度 |
3.id: | 为 TextView 设置一个组件 id |
4. text : | 设置显示的文本内容 |
5. textColor : | 设置字体颜色 |
6.textStyle: | 设置字体风格,三个可选值: normal (无效果), bold (加粗), italic (斜体) |
7. textSize : | 字体大小,单位一般是用 sp |
8.background: | 控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片 |
9. gravity : | 设置控件中内容的对齐方向, TextView 中是文字, ImageView 中是图片等等。 |
代码实现效果:
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.example.wzyproject.MyTextView
android:id="@+id/tv_one"
android:layout_width="match_parent"
android:layout_height="176dp"
android:text="@string/tv_one"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="30sp"
android:gravity="center_vertical"
android:shadowDx="10.0"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
/>
</LinearLayout>
2带阴影的 TextView
1. android : shadowColor : | 设置阴影颜色,需要与 shadowRadius 一起使用 |
2. android : shadowRadius : | 设置阴影的模糊程度,设为0.1就变成字体颜色了,建议使用3.0 |
3. android : shadowDx : | 设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置 |
4.android: shadowDy : | 设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置 |
3.实现跑马灯效果的 TextView
1. android : singleLine : | 内容单行显示 |
2. android : focusable : | 是否可以获取焦点 |
3. android : focusableinTouchMode : | 用于控制视图在触摸模式下是否可以聚焦 |
4. android : ellipsize : | 在哪里省略文本 |
5. android : marqueeRepeatlimit : | 字幕动画重复的次数 |
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
只是输入以上这些远远不够,以下方法皆可:
3.1设置点击方式
通过
android:clickable="true"
可实现点击后开启跑马灯效果
3.2自定义一个TextView
创建java类,实现构造方法
package com.example.wzyproject;
import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.TextView;
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
最后还要调用isFocused,此时activity_main.xml中改动
3.3结尾加入requestFocus用来请求焦点
二.butuon控件
1.StateListDrawable
StateListDrawable 是 Drawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点< selector >,我们只需要将 Button 的 background 属性设置为该 drawable 资源即可轻松实现,按下按钮时不同的按钮颜色或背景。
1. drawable : | 引用的 Drawable 位图 |
2. state _ focused : | 是否获得焦点 |
3. state _ pressed : | 控件是否被按下 |
4. state _ enabled : | 控件是否可用 |
5.state_ selected : | 控件是否被选择,针对有滚轮的情况 |
6. state _ checked : | 控件是否被勾选 |
7. state _ checkable : | 控件可否被勾选, eg : checkbox |
8. state _ window _ focused : | 是否获得窗口焦点 |
9. state _ active : | 控件是否处于活动状态, eg : slidingTab |
10.state_ single : | 控件包含多个子控件时,确定是否只显示一个子控件 |
11.state_ first : | 控件包含多个子控件时,确定第一个子控件是否处于显示状态 |
12.state_ middle : | 控件包含多个子控件时,确定中间一个子控件是否处于显示状态 |
13.state_ last : | 控件包含多个子控件时,确定最后一个子控件是否处于显示状态 |
<Button
android:text="我是按钮"
android:background="@drawable/btn_selector"
android:layout_width="200dp"
android:layout_height="100dp"
/>
先创建两个照片:
使用backgroundTint可以设置点击前后按钮颜色的变化
在button块中引入
android:backgroundTint="@color/btn_color_selector"
可实现效果如下:
注意:设置前景色会将字体覆盖!
android:foreground="#ff00ff00"
2.button事件处理
private static final String TAG = "led";Button btn = findViewById(R.id.btn);
1.点击事件
//点击事件
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e(TAG, "onClick: " );
}
});
2.长按事件
//长按事件
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Log.e(TAG, "onLongClick: " );
return false;
}
});
3.触摸事件
//触摸事件
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e(TAG, "onTouch: " );
return false;
}
});
触摸事件会有三个模型:ACCTION_DOWN ACCTION_UP ACCTION_MOVE
此时通过event运行后会有
当我们的Ontouch为True时,系统里面会处理onClick和onLongClick两个方法,此时不会在调用了。
相当于一种依赖关系,onlongclick依赖ontouch,onclick依赖onlongclick。
当我们加入时
android:onClick="leoClick"
此时leoClick替换了上述的点击事件onClick,
public void leoClick(View view){
Log.e(TAG, "leoClick: " );
}
点击后效果如上。