`

android仿苹果分段按钮

阅读更多

 

 

这里只简单做了两个按钮的。

首先是两个按钮的背景:

res/drawable/seg_left.xml

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true">
        <shape >
            <stroke android:color="#0079FF" android:width="1dp"/>
            <solid android:color="#0079FF"/>
            <corners android:topLeftRadius="3dp" android:bottomLeftRadius="3dp" android:topRightRadius="0dp" android:bottomRightRadius="0dp"/>
        </shape>
    </item>
    <item>
        <shape >
            <stroke android:color="#0079FF" android:width="1dp"/>
            <solid android:color="#FFFFFF"/>
            <corners android:topLeftRadius="3dp" android:bottomLeftRadius="3dp" android:topRightRadius="0dp" android:bottomRightRadius="0dp"/>
        </shape>
    </item>
</selector>
 

 

res/drawable/seg_right.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true">
        <shape >
            <stroke android:color="#0079FF" android:width="1dp"/>
            <solid android:color="#0079FF"/>
            <corners android:topLeftRadius="0dp" android:bottomLeftRadius="0dp" android:topRightRadius="3dp" android:bottomRightRadius="3dp"/>
        </shape>
    </item>
    <item>
        <shape >
            <stroke android:color="#0079FF" android:width="1dp"/>
            <solid android:color="#FFFFFF"/>
            <corners android:topLeftRadius="0dp" android:bottomLeftRadius="0dp" android:topRightRadius="3dp" android:bottomRightRadius="3dp"/>
        </shape>
    </item>
</selector>
 

字体颜色:

res/drawable/seg_text_color_selector.xml


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true" android:color="#FFFFFF"/>
	<item android:color="#0079FF"/>
</selector>


这几个是对选中状态进行设置。

 

下面对LinearLayout进行改造~~~

其实就是放两个TextView。

SegmentView.java

package cn.haiwan.app.widget;

import org.xmlpull.v1.XmlPullParser;

import android.R.integer;
import android.content.Context;
import android.content.res.ColorStateList;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import cn.haiwan.R;

public class SegmentView extends LinearLayout {
	private TextView textView1;
	private TextView textView2;
	private onSegmentViewClickListener listener;
	public SegmentView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();
	}
	
	public SegmentView(Context context) {
		super(context);
		init();
	}

	private void init() {
//		this.setLayoutParams(new LinearLayout.LayoutParams(dp2Px(getContext(), 60), LinearLayout.LayoutParams.WRAP_CONTENT));
		textView1 = new TextView(getContext());
		textView2 = new TextView(getContext());
		textView1.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));
		textView2.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));
		textView1.setText("SEG1");
		textView2.setText("SEG2");
		XmlPullParser xrp = getResources().getXml(R.drawable.seg_text_color_selector);  
	    try {  
	        ColorStateList csl = ColorStateList.createFromXml(getResources(), xrp);  
	        textView1.setTextColor(csl);
	        textView2.setTextColor(csl);
	      } catch (Exception e) {  
	    } 
	    textView1.setGravity(Gravity.CENTER);
	    textView2.setGravity(Gravity.CENTER);
	    textView1.setPadding(3, 6, 3, 6);
	    textView2.setPadding(3, 6, 3, 6);
	    setSegmentTextSize(16);
		textView1.setBackgroundResource(R.drawable.seg_left);
		textView2.setBackgroundResource(R.drawable.seg_right);
		textView1.setSelected(true);
		this.removeAllViews();
		this.addView(textView1);
		this.addView(textView2);
		this.invalidate();
		
		textView1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if (textView1.isSelected()) {
					return;
				}
				textView1.setSelected(true);
				textView2.setSelected(false);
				if (listener != null) {
					listener.onSegmentViewClick(textView1, 0);
				}
			}
		});
		textView2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if (textView2.isSelected()) {
					return;
				}
				textView2.setSelected(true);
				textView1.setSelected(false);
				if (listener != null) {
					listener.onSegmentViewClick(textView2, 1);
				}
			}
		});
	}
	/**
	 * 设置字体大小 单位dip
	 * <p>2014年7月18日</p>
	 * @param dp
	 * @author RANDY.ZHANG
	 */
	public void setSegmentTextSize(int dp) {
		textView1.setTextSize(TypedValue.COMPLEX_UNIT_DIP, dp);
		textView2.setTextSize(TypedValue.COMPLEX_UNIT_DIP, dp);
	}
	
	private static int dp2Px(Context context, float dp) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dp * scale + 0.5f);
	}
	
	public void setOnSegmentViewClickListener(onSegmentViewClickListener listener) {
		this.listener = listener;
	}
	
	
	/**
	 * 设置文字
	 * <p>2014年7月18日</p>
	 * @param text
	 * @param position
	 * @author RANDY.ZHANG
	 */
	public void setSegmentText(CharSequence text,int position) {
		if (position == 0) {
			textView1.setText(text);
		}
		if (position == 1) {
			textView2.setText(text);
		}
	}
	
	public static interface onSegmentViewClickListener{
		/**
		 * 
		 * <p>2014年7月18日</p>
		 * @param v
		 * @param position 0-左边 1-右边
		 * @author RANDY.ZHANG
		 */
		public void onSegmentViewClick(View v,int position);
	}
}

 

 



 

布局文件引用
<?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"
    android:orientation="vertical" >
   
	<cn.haiwan.app.widget.SegmentView 
	    android:layout_width="160dp"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center_horizontal"
	    />
</LinearLayout>
 

查看更多andrid教程 , 请移步移步大神网    android 教程


 

 

 

 

分享到:
评论

相关推荐

    Android 仿 Iphone 滑动按钮(SlipButton)

    通过以上步骤,开发者可以在Android应用中实现一个仿Iphone的滑动按钮。虽然实现过程可能较为复杂,但这种自定义组件能为应用增添独特的交互体验,提升整体的用户体验。在实际开发中,应根据项目需求进行适当的调整...

    android仿苹果手机手表源码Demo

    android仿苹果手机手表源码Demo手表 安卓手表 苹果手表 苹果手表桌面.apk 为安卓上仿苹果手表的apk 。请安装在任何一部安卓设备上运行。 运行后出现苹果手表界面。 视频截图.gif 为运行后截图。 软件为softboy开发...

    仿苹果开关按钮 ToggleButton

    在这个案例中,我们看到的是一个专门为iOS或Android应用设计的仿苹果风格的开关按钮组件。 苹果的开关按钮以其简洁的设计和直观的交互体验著称,通常由一个小滑块和两个状态区域组成——一个是开(On)状态,另一个...

    Android仿苹果siri 浮动控件

    下面将详细解释如何在Android中创建这样一个“Android仿苹果Siri浮动物件”。 首先,`WindowManager`是Android系统提供的一个接口,它允许开发者动态地在窗口管理器中添加、删除和更新视图。这使得我们可以独立于...

    android仿苹果日期控件的城市选择

    "android仿苹果日期控件的城市选择"就是一个这样的案例,它涉及到多个技术点,包括自定义控件设计、数据加载、UI交互以及可能的数据处理错误。 首先,这个控件的设计核心是实现一个轮播效果,类似于苹果设备上的...

    Android 仿苹果通话界面源码.zip

    本项目"Android 仿苹果通话界面源码"提供了一个实例,帮助Android开发者学习如何在Android平台上实现类似iOS通话界面的视觉效果和交互逻辑。 这个源码项目主要涉及到以下几个关键知识点: 1. **UI设计与布局**: ...

    小程序源码 高仿苹果计算器 (代码+截图)

    小程序源码 高仿苹果计算器 (代码+截图)小程序源码 高仿苹果计算器 (代码+截图)小程序源码 高仿苹果计算器 (代码+截图)小程序源码 高仿苹果计算器 (代码+截图)小程序源码 高仿苹果计算器 (代码+截图)小程序源码 高仿...

    Android仿苹果通话界面源码

    "Android仿苹果通话界面源码"是一个专为Android平台设计的项目,其目标是模仿苹果设备上的通话界面。这个源码包,命名为"Phones",包含了实现这一功能所需的全部代码和资源。 首先,我们来看看核心知识点: 1. **...

    Android 仿苹果通话界面源码

    这个"Android 仿苹果通话界面源码"项目旨在为开发者提供一个参考实现,帮助他们了解如何在Android系统中创建具有iOS风格的交互体验。 首先,我们关注的是设计和布局。iOS的通话界面以其简洁、直观的设计著称,包括...

    android仿苹果滚轮 WheelView

    本项目“android仿苹果滚轮 WheelView”就是这样一个尝试,它旨在为Android平台带来苹果风格的滚轮选择器。这个控件可以用于创建日期选择器、密码输入器或者城市和国家的选择界面,增加了应用的视觉吸引力和交互性。...

    Android 仿苹果通话界面源码版本二

    "Android 仿苹果通话界面源码版本二"提供了这样一个实现,它在原版的基础上进行了改进,增加了更多的功能和UI选项,以更接近苹果iOS的用户体验。 首先,我们来详细了解一下这个源码中的关键知识点: 1. **UI设计**...

    WPF仿苹果菜单按钮效果 源码

    WPF仿苹果菜单按钮效果

    Android仿苹果的自定义galleryDemo

    "Android仿苹果的自定义galleryDemo"就是一个这样的案例,它旨在模仿苹果iOS中的Gallery组件,即图片轮播或相册浏览的效果。在这个项目中,主要涉及的技术点有自定义View、图片加载库的使用、触摸滑动事件处理以及...

    Android仿苹果的上下翻页效果

    在Android开发中,为了提供与iOS类似的用户体验,开发者经常需要实现苹果风格的上下翻页效果。这个效果通常涉及页面间的平滑过渡,给人一种流畅而自然的滚动感觉。本篇文章将详细探讨如何在Android中实现这一功能,...

    select下拉框转苹果IOS样式分段按钮jQuery插件

    本篇将详细探讨"select下拉框转苹果IOS样式分段按钮jQuery插件"——Segment.js。 Segment.js是一款专为Web开发者设计的工具,它的主要功能是将HTML中的`&lt;select&gt;`元素转换成具有苹果iOS风格的分段控制器(Segmented...

    Android 仿苹果通话界面源码.zip项目安卓应用源码下载

    Android 仿苹果通话界面源码.zip项目安卓应用源码下载Android 仿苹果通话界面源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    android仿iphone下拉刷新控件

    本篇将详细介绍如何在Android应用中创建一个仿iPhone下拉刷新的控件,并实现上拉加载更多(Load More)的功能。 首先,我们需要理解下拉刷新的基本原理。它允许用户通过向下滑动列表顶部来触发数据的更新。当用户...

    android仿苹果ListView的实现

    在Android开发中,为了提供与iOS类似的用户体验,开发者有时会尝试模仿苹果设备上的某些特性,如苹果的ListView。本文将详细讲解如何在Android平台上实现一个类似苹果风格的ListView,包括下拉刷新功能。 首先,...

Global site tag (gtag.js) - Google Analytics