\u0020\u0020\u0020\u0020\ 空格符,代替一个空格
在background 属性内可使用
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/capture_live" android:state_pressed="true"/>
<item android:drawable="@drawable/capture"/>
</selector>
这样处理在单击需要点击效果的情况下避免onclick 与 ontouch事件覆盖
1.Listview 减少一层布局方法,在第二行消失时,第一行自动居中显示
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_above="@id/secondLine"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical"
android:text="My Application" />
</RelativeLayout>
2.样式使用技巧
/*单边框实现*/
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 连框颜色值 -->
<item>
<shape>
<solid android:color="#f7f7f7" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item
android:bottom="1dp"><!- 距离bottom 1dp -->
<shape>
<solid android:color="@color/white" />
</shape>
</item>
</layer-list>
/*圆角边框*/
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff"/>
<stroke android:width="1dp" android:color="@color/border_color"/>
<padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" />
<corners android:radius="5dp"></corners>
</shape>
/*文字上下左右居中*/
android:gravity="center_vertical|center"
/*圆角*/
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffff3600" />
<corners android:topLeftRadius="5dp"
android:topRightRadius="5dp"
android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"/>
</shape>
/*style重用写法*/
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="white_blue_button" >
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">16dip</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:gravity">center</item>
<item name="android:background">#0033FF</item>
</style>
</resources>
/*样式继承*/
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="homeiv">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">15dip</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="android:background">@drawable/home</item>
</style>
<style name="homebtn" parent="@style/homeiv">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#FFFFffff</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/selector</item>
</style>
</resources>
/*用法*/
<Button
style="@style/white_blue_button"
android:text="白色字体的蓝色按钮"
/>
dialog 无黑边居中布局样式,解决某些样式下dialog存在黑边框情况
<style name="mydialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:background">@color/transparent</item>
</style>
使用
AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.mydialog);
//点击背景图切换
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/border_5_gr"/>
<item android:state_checked="true" android:drawable="@drawable/border_5_th_color"/>
</selector>
//点击颜色切换
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="false"
android:color="@color/front_black"/>
<!--选中时的字体颜色 -->
<item
android:state_selected="true"
android:color="@color/theme_color"/>
<!-- 非触摸模式下获得焦点并单击时的字体颜色 -->
<item
android:state_focused="true"
android:state_pressed="true"
android:color="@color/front_black"/>
</selector>
/*带你及颜色切换*/
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/press_color" android:state_pressed="true" />
<item android:drawable="@color/white" android:state_pressed="false" />
<item android:drawable="@color/white" />
</selector>
屏幕适配
dpi 每英寸 像素点数目
dp 和 dip 相同都是 屏幕像素无关单位 160 dpi 下 1px = 1dp
通知栏图标尺寸
ldpi: 48*48
mdpi: 64*64
hdpi: 96*96
xhdpi: 128*128
xxhdpi: 192*192
seekBar 定义与背景颜色设置
<SeekBar
android:id="@+id/seek_pre_record"
android:layout_width="200dp"
android:layout_gravity="center_vertical"
android:background="@android:color/transparent"//设置背景颜色
android:progressDrawable="@drawable/seek_bar_bg"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:thumb="@drawable/remote_thumb"
android:maxHeight="2dp"
android:max="100"
android:layout_centerInParent="true"
android:layout_height="wrap_content" />
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">//设置拖动条背景颜色
<item android:id="@android:id/background">
<shape>
<size
android:height="2dp" />
<corners android:radius="5dp"/>
<solid android:color="#cbcbcb" />
</shape>
</item>
<item
android:id="@android:id/secondaryProgress">//设置缓冲颜色
<clip>
<shape>
<size
android:height="2dp" />
<corners android:radius="5dp"/>
<solid android:color="@color/front_white" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">//设置拖动进度颜色
<clip>
<shape>
<size
android:height="2dp"/>
<corners android:radius="5dp"/>
<solid android:color="@color/theme_color" />
</shape>
</clip>
</item>
</layer-list>
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
Seekbar_slider_time.setText(updateCurrentTimeText(progress));
}
tx_currentTime.setText(updateCurrentTimeText(progress));
if(progress == seekBar.getMax()){
pauseIcon.setLayoutParams(miss);
playIcon.setLayoutParams(show);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.d(TAG,"onStartTrackingTouch");
isUserPressThumb = true;
Seekbar_slider_time.setVisibility(View.VISIBLE);
//设置seekbarThumb相对位置可大于进度条15,保证thumb在变成40dp直径后可以滑动到进度条最末尾
seekBar.setThumbOffset(15);
seekBar.setThumb(Thumb_pressed);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.d(TAG,"onStopTrackingTouch");
mi.seekTo(seekBar.getProgress());
seekBar.setThumbOffset(0);
seekBar.setThumb(Thumb_normal);
Seekbar_slider_time.setVisibility(View.INVISIBLE);
isUserPressThumb = false;
}
});
}
/*listview item 触摸变色,及子view 联动效果*/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/alarm_area"
android:layout_width="fill_parent"
android:background="@drawable/list_item_bg" // 修改默认背景色
android:orientation="horizontal"
android:layout_height="40dp">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/alarm_device_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:layout_alignParentRight="true" <!-- 跟随父级控件改变 -->
android:textColor="@drawable/alarm_device_name_touch"
android:paddingLeft="10dp"
android:text="@string/test"
android:textSize="@dimen/f_14"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical" />
<TextView
android:id="@+id/alarm_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true" <!-- 跟随父级控件改变 -->
android:textColor="@drawable/alarm_device_message_touch"
android:paddingLeft="10dp"
android:textSize="@dimen/f_12"
android:text="@string/test"
android:ellipsize="marquee">
</TextView>
</LinearLayout>
<TextView
android:id="@+id/alarm_icon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentRight="true" <!-- 跟随父级控件改变 -->
android:layout_marginRight="10dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="6dp"
android:background="@drawable/alarm_device_icon_touch" />
</LinearLayout>
</LinearLayout>
<!-- 文字颜色 -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="@color/front_white" /> <!-- focused -->
<item android:state_pressed="true" android:color="@color/front_white" /> <!-- pressed -->
<item android:state_selected="true" android:color="@color/front_white" /> <!-- pressed -->
<item android:color="@color/front_black_d" /> <!-- default -->
</selector>
<!-- 图片需改为textview 采用背景图处理-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/alarm_play_icon_select" /> <!-- focused -->
<item android:state_pressed="true" android:drawable="@drawable/alarm_play_icon_select" /> <!-- pressed -->
<item android:state_selected="true" android:drawable="@drawable/alarm_play_icon_select" /> <!-- pressed -->
<item android:drawable="@drawable/alarm_play_icon" /> <!-- default -->
</selector>
在background 属性内可使用
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/capture_live" android:state_pressed="true"/>
<item android:drawable="@drawable/capture"/>
</selector>
这样处理在单击需要点击效果的情况下避免onclick 与 ontouch事件覆盖
1.Listview 减少一层布局方法,在第二行消失时,第一行自动居中显示
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_above="@id/secondLine"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical"
android:text="My Application" />
</RelativeLayout>
2.样式使用技巧
/*单边框实现*/
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 连框颜色值 -->
<item>
<shape>
<solid android:color="#f7f7f7" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item
android:bottom="1dp"><!- 距离bottom 1dp -->
<shape>
<solid android:color="@color/white" />
</shape>
</item>
</layer-list>
/*圆角边框*/
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff"/>
<stroke android:width="1dp" android:color="@color/border_color"/>
<padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" />
<corners android:radius="5dp"></corners>
</shape>
/*文字上下左右居中*/
android:gravity="center_vertical|center"
/*圆角*/
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffff3600" />
<corners android:topLeftRadius="5dp"
android:topRightRadius="5dp"
android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"/>
</shape>
/*style重用写法*/
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="white_blue_button" >
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">16dip</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:gravity">center</item>
<item name="android:background">#0033FF</item>
</style>
</resources>
/*样式继承*/
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="homeiv">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">15dip</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="android:background">@drawable/home</item>
</style>
<style name="homebtn" parent="@style/homeiv">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#FFFFffff</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/selector</item>
</style>
</resources>
/*用法*/
<Button
style="@style/white_blue_button"
android:text="白色字体的蓝色按钮"
/>
dialog 无黑边居中布局样式,解决某些样式下dialog存在黑边框情况
<style name="mydialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:background">@color/transparent</item>
</style>
使用
AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.mydialog);
//点击背景图切换
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" android:drawable="@drawable/border_5_gr"/>
<item android:state_checked="true" android:drawable="@drawable/border_5_th_color"/>
</selector>
//点击颜色切换
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="false"
android:color="@color/front_black"/>
<!--选中时的字体颜色 -->
<item
android:state_selected="true"
android:color="@color/theme_color"/>
<!-- 非触摸模式下获得焦点并单击时的字体颜色 -->
<item
android:state_focused="true"
android:state_pressed="true"
android:color="@color/front_black"/>
</selector>
/*带你及颜色切换*/
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/press_color" android:state_pressed="true" />
<item android:drawable="@color/white" android:state_pressed="false" />
<item android:drawable="@color/white" />
</selector>
屏幕适配
dpi 每英寸 像素点数目
dp 和 dip 相同都是 屏幕像素无关单位 160 dpi 下 1px = 1dp
通知栏图标尺寸
ldpi: 48*48
mdpi: 64*64
hdpi: 96*96
xhdpi: 128*128
xxhdpi: 192*192
seekBar 定义与背景颜色设置
<SeekBar
android:id="@+id/seek_pre_record"
android:layout_width="200dp"
android:layout_gravity="center_vertical"
android:background="@android:color/transparent"//设置背景颜色
android:progressDrawable="@drawable/seek_bar_bg"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:thumb="@drawable/remote_thumb"
android:maxHeight="2dp"
android:max="100"
android:layout_centerInParent="true"
android:layout_height="wrap_content" />
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">//设置拖动条背景颜色
<item android:id="@android:id/background">
<shape>
<size
android:height="2dp" />
<corners android:radius="5dp"/>
<solid android:color="#cbcbcb" />
</shape>
</item>
<item
android:id="@android:id/secondaryProgress">//设置缓冲颜色
<clip>
<shape>
<size
android:height="2dp" />
<corners android:radius="5dp"/>
<solid android:color="@color/front_white" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">//设置拖动进度颜色
<clip>
<shape>
<size
android:height="2dp"/>
<corners android:radius="5dp"/>
<solid android:color="@color/theme_color" />
</shape>
</clip>
</item>
</layer-list>
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
Seekbar_slider_time.setText(updateCurrentTimeText(progress));
}
tx_currentTime.setText(updateCurrentTimeText(progress));
if(progress == seekBar.getMax()){
pauseIcon.setLayoutParams(miss);
playIcon.setLayoutParams(show);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.d(TAG,"onStartTrackingTouch");
isUserPressThumb = true;
Seekbar_slider_time.setVisibility(View.VISIBLE);
//设置seekbarThumb相对位置可大于进度条15,保证thumb在变成40dp直径后可以滑动到进度条最末尾
seekBar.setThumbOffset(15);
seekBar.setThumb(Thumb_pressed);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.d(TAG,"onStopTrackingTouch");
mi.seekTo(seekBar.getProgress());
seekBar.setThumbOffset(0);
seekBar.setThumb(Thumb_normal);
Seekbar_slider_time.setVisibility(View.INVISIBLE);
isUserPressThumb = false;
}
});
}
/*listview item 触摸变色,及子view 联动效果*/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/alarm_area"
android:layout_width="fill_parent"
android:background="@drawable/list_item_bg" // 修改默认背景色
android:orientation="horizontal"
android:layout_height="40dp">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/alarm_device_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:layout_alignParentRight="true" <!-- 跟随父级控件改变 -->
android:textColor="@drawable/alarm_device_name_touch"
android:paddingLeft="10dp"
android:text="@string/test"
android:textSize="@dimen/f_14"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical" />
<TextView
android:id="@+id/alarm_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true" <!-- 跟随父级控件改变 -->
android:textColor="@drawable/alarm_device_message_touch"
android:paddingLeft="10dp"
android:textSize="@dimen/f_12"
android:text="@string/test"
android:ellipsize="marquee">
</TextView>
</LinearLayout>
<TextView
android:id="@+id/alarm_icon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentRight="true" <!-- 跟随父级控件改变 -->
android:layout_marginRight="10dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="6dp"
android:background="@drawable/alarm_device_icon_touch" />
</LinearLayout>
</LinearLayout>
<!-- 文字颜色 -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="@color/front_white" /> <!-- focused -->
<item android:state_pressed="true" android:color="@color/front_white" /> <!-- pressed -->
<item android:state_selected="true" android:color="@color/front_white" /> <!-- pressed -->
<item android:color="@color/front_black_d" /> <!-- default -->
</selector>
<!-- 图片需改为textview 采用背景图处理-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/alarm_play_icon_select" /> <!-- focused -->
<item android:state_pressed="true" android:drawable="@drawable/alarm_play_icon_select" /> <!-- pressed -->
<item android:state_selected="true" android:drawable="@drawable/alarm_play_icon_select" /> <!-- pressed -->
<item android:drawable="@drawable/alarm_play_icon" /> <!-- default -->
</selector>