android 界面布局技巧记录

\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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值