做项目的时候总会遇到一些问题,比如布局中某个布局的背景设置成圆角,下面来看看:drawable-hdpi下面建一个xml,例如linearlayout.xml
1.设置白色背景、灰色边框、倒圆角:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff" />
<stroke
android:width="0.01dp"
android:color="#bfbfbf" />
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
</shape> </span>
<span style="font-size:18px;"><LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="90dip"
android:layout_weight="10"
android:background="@drawable/linearlayout"
></span>
2.RadioButton背景圆角的处理,完整代码,良心操作
对于一个控件上下左右都为圆角的处理和一半圆角一半矩形的处理时类似的:
直接上代码,布局:
<?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="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/header"></include>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:gravity="center"
android:orientation="horizontal">
<!--<LinearLayout-->
<!--android:id="@+id/ll_begin"-->
<!--android:layout_width="0dp"-->
<!--android:layout_weight="1"-->
<!--android:gravity="center"-->
<!--android:orientation="vertical"-->
<!--android:layout_height="match_parent">-->
<!--<Button-->
<!--android:id="@+id/bt_begin"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="40dp"-->
<!--android:layout_centerInParent="true"-->
<!--android:textColor="#ffffff"-->
<!--android:background="@drawable/btn_selector_another_left2"-->
<!--android:text="进行中" />-->
<!--</LinearLayout>-->
<!--<LinearLayout-->
<!--android:id="@+id/ll_end"-->
<!--android:layout_width="0dp"-->
<!--android:layout_weight="1"-->
<!--android:gravity="center"-->
<!--android:orientation="vertical"-->
<!--android:layout_height="match_parent">-->
<!--<Button-->
<!--android:id="@+id/bt_end"-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="40dp"-->
<!--android:layout_centerInParent="true"-->
<!--android:layout_gravity="center"-->
<!--android:background="@drawable/btn_selector_another2"-->
<!--android:text="已结束" />-->
<!--</LinearLayout>-->
<RadioGroup
android:id="@+id/radiogroup_select_huodong"
android:layout_width="match_parent"
android:layout_height="80px"
android:gravity="center"
android:layout_gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radiobtn_begin"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_margin="0dp"
android:layout_height="70px"
android:layout_marginRight="40px"
android:background="@drawable/selector_huodong_select"
android:button="@null"
android:paddingLeft="1dp"
android:checked="true"
android:gravity="center"
android:text="进行中"
android:textColor="@color/bg_huodong_button_click" />
<RadioButton
android:id="@+id/radiobtn_end"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_margin="0dp"
android:layout_height="70px"
android:background="@drawable/selector_huodong_select2"
android:button="@null"
android:layout_marginRight="5dp"
android:gravity="center"
android:text="已结束"
android:textColor="@color/bg_huodong_button_click" />
</RadioGroup>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp_view"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout>
</LinearLayout>
主函数:
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.lgy.myviewpagerapplication.R;
import com.example.lgy.myviewpagerapplication.message.ViewPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class HuoDongActivity extends AppCompatActivity implements View.OnClickListener,ViewPager.OnPageChangeListener{
private Button bt_begin,bt_end;
private ViewPager viewPager;
private List<View> vp_View_List = new ArrayList<View>();
private ViewPagerAdapter vp_adapter;
private TextView header_title_two;
private Button bt_last;
private LinearLayout ll_last;
private LinearLayout ll_begin,ll_end;
private RadioGroup radioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_huo_dong);
init();
initViewList();//里面的界面需放在逻辑之前,而不是逻辑里面
initData();
}
/**
* 添加对应的界面
*/
private void initViewList() {
//添加activity或Fragment都可以,也可以直接添加布局
// Intent intent = new Intent(this, OfficialMessageActivity.class);
// vp_View_List.add(getView("A", intent));
// Intent intent2 = new Intent(this, PersonalMessageActivity.class);
// vp_View_List.add(getView("B", intent2));
//直接添加布局,方便逻辑在一个类里操作
View view_by_official = getLayoutInflater().inflate(R.layout.activity_official_message, null);
vp_View_List.add(view_by_official);
View view_by_personal = getLayoutInflater().inflate(R.layout.activity_personal_message, null);
vp_View_List.add(view_by_personal);
}
private void initData() {
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radiobtn_begin:
viewPager.setCurrentItem(0);
break;
case R.id.radiobtn_end:
viewPager.setCurrentItem(1);
break;
}
}
});
vp_adapter = new ViewPagerAdapter(vp_View_List);
viewPager.setAdapter(vp_adapter);
}
private void init() {
viewPager = (ViewPager) findViewById(R.id.vp_view);
header_title_two = (TextView) findViewById(R.id.header_title_two);//标题
header_title_two.setText("活动");
viewPager.setOnPageChangeListener(this);
radioGroup = (RadioGroup) findViewById(R.id.radiogroup_select_huodong);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// LinearLayout ll_current = null;
// Button bt_current = null;
if(radioGroup!=null && radioGroup.getChildCount()>position){
((RadioButton)radioGroup.getChildAt(position)).performClick();
}
// switch (position) {
// case 0:
// //为控件赋值
bt_current = bt_begin;
ll_current = ll_begin;
// break;
// case 1:
bt_current = bt_end;
ll_current = ll_end;
//
// break;
// default:
// break;
// }
// setCurrent(ll_current,bt_current);
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onClick(View v) {
// switch (v.getId()) {
// case R.id.bt_begin:
// viewPager.setCurrentItem(0);
// break;
// case R.id.bt_end:
// viewPager.setCurrentItem(1);
Toast.makeText(this,"aaa",Toast.LENGTH_LONG).show();
// break;
// default:
// break;
// }
}
/**
* 为控件赋值
*/
private void initCurrent() {
bt_last = bt_begin;
ll_last = ll_begin;
}
/**
* 改变控件和背景色
* @param bt_current
*/
// private void setCurrent(LinearLayout ll_last,Button bt_current) {
// bt_last.setTextColor(getResources().getColor(R.color.color_white_real));
// ll_last.setBackgroundResource(R.drawable.btn_selector_another3);
//
// bt_begin.setTextColor(getResources().getColor(R.color.tab_text_p));
// bt_begin.setBackgroundResource(R.drawable.btn_selector_another3);
// bt_last = bt_current;
// }
}
selector_huodong_select.xml 左边的背景处理
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景 -->
<item android:drawable="@drawable/btn_selector_another_left3" android:state_checked="false"/>
<!-- 选择时的背景 -->
<item android:drawable="@drawable/btn_selector_another_left2" android:state_checked="true"/>
</selector>
btn_selector_another_left3.xml 左边背景的进一步处理,可以设置上下左右圆角和颜色,未选中状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Button正常状态下的背景 -->
<item>
<shape>
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="5dp" android:bottomRightRadius="0dp" android:topLeftRadius="5dp" android:topRightRadius="0dp" />
<!-- 矩形的填充色 -->
<solid android:color="#ffffff" />
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<!--内边距-->
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
<!-- 矩形的填充色 -->
<solid android:color="#3F51B5" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
</selector>
btn_selector_another_left2.xml
选中状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Button正常状态下的背景 -->
<item>
<shape>
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="5dp" android:bottomRightRadius="0dp" android:topLeftRadius="5dp" android:topRightRadius="0dp" />
<!-- 矩形的填充色 -->
<solid android:color="#FF4081" />
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<!--内边距-->
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
<!-- 矩形的填充色 -->
<solid android:color="#3F51B5" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
</selector>
bg_huodong_button_click.xml 字体颜色处理
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/white"/>
<!-- not selected -->
<item android:color="@color/color_black"/>
</selector>
selector_huodong_select2.xml 右边控件背景的处理
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景 -->
<item android:drawable="@drawable/btn_selector_another2" android:state_checked="false"/>
<!-- 选择时的背景 -->
<item android:drawable="@drawable/btn_selector_another3" android:state_checked="true"/>
</selector>
btn_selector_another2.xml 右边控件的背景进一步处理,未选中状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Button正常状态下的背景 -->
<item>
<shape>
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" android:topLeftRadius="0dp" android:topRightRadius="5dp" />
<!-- 矩形的填充色 -->
<solid android:color="#ffffff" />
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<!--内边距-->
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
<!-- 矩形的填充色 -->
<solid android:color="#3F51B5" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
</selector>
btn_selector_another3.xml 右边控件的背景进一步处理,选中状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Button正常状态下的背景 -->
<item>
<shape>
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" android:topLeftRadius="0dp" android:topRightRadius="5dp" />
<!-- 矩形的填充色 -->
<solid android:color="#FF4081" />
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<!--内边距-->
<padding android:bottom="2dp" android:left="2dp" android:right="0dp" android:top="0dp" />
<!-- 矩形的圆角弧度 -->
<corners android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" />
<!-- 矩形的填充色 -->
<solid android:color="#3F51B5" />
<!-- 矩形的边框的宽度,每段虚线的长度,和两段虚线之间的颜色和颜色 -->
<stroke android:width="1dp" android:color="#4eb621" />
</shape>
</item>
</selector>
颜色:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="red_bg">#E7333C</color>
<color name="white">#FFFFFFFF</color>
<color name="header_line">#c82904</color>
<color name="color_resume_input_bg">#cbd6e7</color>
<color name="tab_text_n">#313131</color>
<color name="tab_text_p">#E5313A</color>
<color name="color_mine_text_click">#D9D9D9</color>
<color name="color_text_tip">#F45D3D</color>
<color name="color_black">#000000</color>
<color name="color_white_real">#FFFFFF</color>
<color name="color_mine_gray_text">#999999</color>
<color name="color_home_back">#F0F0F0</color>
<color name="colo_bg_login">#F7F7F7</color>
<color name="list_item_focus">#0a000000</color>
<color name="white_alpha_percent_45">#73ffffff</color>
<color name="text_gray">#7b403b37</color>
<color name="base_red">#fffb6655</color>
<color name="default_line_color">#e6e6e6</color>
</resources>
3.也可以实现下图的圆倒角,使用selector和shape:
后续会上源码