- 浏览: 5777113 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
这个是不带动画效果,要动画效果的看后面的文章。
public class TabSwitcher extends LinearLayout{ private static final String tag="TabSwitcher"; private Context context; private String[] texts; private int arrayId; private int selectedPosition=0; private int oldPosition=selectedPosition; private int[] background={R.drawable.tabswitcher_short,Color.TRANSPARENT}; private TextView[] tvs; public TabSwitcher(Context context) { super(context); // TODO Auto-generated constructor stub init(); } public TabSwitcher(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub Log.i(tag, "--------------TabSwitcher2---------------------"); init(); TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.custom); arrayId=a.getResourceId(R.styleable.custom_arrayId, 0); selectedPosition=a.getInt(R.styleable.custom_selectedPosition, 0); a.recycle(); } private void init(){ context=getContext(); setOrientation(HORIZONTAL); LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); setLayoutParams(params); // texts=new String[]{"游戏","应用","娱乐"}; setBackgroundResource(R.drawable.tabswitcher_long); } @Override protected void onFinishInflate() { // TODO Auto-generated method stub super.onFinishInflate(); Log.i(tag, "--------------onFinishInflate---------------------"); if(arrayId!=0){ texts=getResources().getStringArray(arrayId); }else{ texts=new String[]{}; } tvs=new TextView[texts.length]; LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); params.weight=1; params.gravity=Gravity.CENTER_VERTICAL; for(int i=0;i<texts.length;i++){ TextView child=new TextView(context); child.setTag(i); // child.setText(texts[i]); child.setTextSize(16); child.setTextColor(Color.BLACK); child.setGravity(Gravity.CENTER); tvs[i]=child; child.setOnClickListener(listener); this.addView(child, params); } } OnClickListener listener = new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub selectedPosition=(Integer)v.getTag(); if(selectedPosition!=oldPosition){ tvs[oldPosition].setBackgroundColor(background[1]); oldPosition=selectedPosition; ((TextView)v).setBackgroundResource(background[0]); if(onItemClickLisener!=null){ onItemClickLisener.onItemClickLisener(v, selectedPosition); } } } }; @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { // TODO Auto-generated method stub super.onSizeChanged(w, h, oldw, oldh); Log.i("tag", "---------------onSizeChanged--------------------"); if(selectedPosition>texts.length-1){ throw new IllegalArgumentException("The selectedPosition can't be > texts.length."); } oldPosition=selectedPosition; for(int i=0;i<texts.length;i++){ tvs[i].setText(texts[i]); if(selectedPosition==i){ tvs[i].setBackgroundResource(background[0]); }else{ tvs[i].setBackgroundColor(background[1]); } } } private OnItemClickLisener onItemClickLisener; public void setOnItemClickLisener(OnItemClickLisener onItemClickLisener) { this.onItemClickLisener = onItemClickLisener; } public interface OnItemClickLisener{ void onItemClickLisener(View view,int position); } public void setTexts(String[] texts) { this.texts = texts; } public void setSelectedPosition(int selectedPosition) { this.selectedPosition = selectedPosition; } }
用法:
import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Toast; import com.yiyou.ui.view.TabSwitcher; import com.yiyou.ui.view.TabSwitcher.OnItemClickLisener; public class MainActivity extends Activity{ private Context context; private TabSwitcher tabSwitcher; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context=this; tabSwitcher=(TabSwitcher)findViewById(R.id.tabSwitcher); tabSwitcher.setOnItemClickLisener(onItemClickLisener); // tabSwitcher.setTexts(new String[]{"1","2","3"}); //tabSwitcher.setSelectedPosition(1); } OnItemClickLisener onItemClickLisener=new OnItemClickLisener(){ @Override public void onItemClickLisener(View view, int position) { // TODO Auto-generated method stub // switch (position) { case 0: case 1: case 2: Toast.makeText(context, "position clicked:"+position, Toast.LENGTH_SHORT).show(); break; default: break; } } }; }
attrs.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="custom"> <attr name="arrayId" format="reference" /> <attr name="selectedPosition" format="integer" /> </declare-styleable> </resources>
小屏幕的使用下面这张图片代替工程中的图片,否则图片会切掉!
Android Toggle Switch, a customizable extension of Android Switches
https://github.com/BelkaLab/Android-Toggle-Switch
发表评论
-
NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
2018-10-31 20:45 6805网上有一个StickyScrollView,称之为粘性Scro ... -
自定义Behavior实现AppBarLayout越界弹性效果
2017-03-31 09:33 10227一、继承AppBarLayout.Beha ... -
Android - 一种相似图片搜索算法的实现
2017-03-31 09:33 2568算法 缩小尺寸。 将图片缩小到8x8的尺寸,总共64个 ... -
使用SpringAnimation实现带下拉弹簧动画的 ScrollView
2017-03-30 11:30 2790在刚推出的 Support Library 25.3.0 里面 ... -
Android为应用添加角标(Badge)
2017-03-30 11:21 61011.需求简介 角标是什么意思呢? 看下图即可明了: 可 ... -
Android端与笔记本利用局域网进行FTP通信
2017-03-23 10:17 923先看图 打开前: 打开后: Activity类 ... -
PorterDuffColorFilter 在项目中的基本使用
2017-03-03 10:58 1299有时候标题栏会浮在内容之上,而内容会有颜色的变化,这时候就要求 ... -
ColorAnimationView 实现了滑动Viewpager 时背景色动态变化的过渡效果
2017-02-24 09:41 2170用法在注释中: import android.anima ... -
迷你轻量级全方向完美滑动处理侧滑控件SlideLayout
2017-01-16 16:53 2548纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 sup ... -
Effect
2017-01-05 09:57 0https://github.com/JetradarMobi ... -
动态主题库Colorful,容易地改变App的配色方案
2016-12-27 14:49 2517Colorful是一个动态主题库,允许您很容易地改变App的配 ... -
对视图的对角线切割DiagonalView
2016-12-27 14:23 1071提供对视图的对角线切割,具有很好的用户定制 基本用法 ... -
仿淘宝京东拖拽商品详情页上下滚动黏滞效果
2016-12-26 16:53 3419比较常用的效果,有现成的,如此甚好!:) import ... -
让任意view具有滑动效果的SlideUp
2016-12-26 09:26 1659基本的类,只有一个: import android.a ... -
AdvancedWebView
2016-12-21 09:44 16https://github.com/delight-im/A ... -
可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
2016-11-02 22:13 1860可设置圆角背景边框的的按钮, 通过调节色彩明度自动计算按下(p ... -
网络请求库相关
2016-10-09 09:35 62https://github.com/amitshekhari ... -
ASimpleCache一个简单的缓存框架
2015-10-26 22:53 2121ASimpleCache 是一个为android制定的 轻量级 ... -
使用ViewDragHelper实现的DragLayout开门效果
2015-10-23 10:55 3334先看一下图,有个直观的了解,向下拖动handle就“开门了”: ... -
保证图片长宽比的同时拉伸图片ImageView
2015-10-16 15:40 3678按比例放大图片,不拉伸失真 import android. ...
相关推荐
NULL 博文链接:https://gundumw100.iteye.com/blog/1139708
NULL 博文链接:https://gundumw100.iteye.com/blog/1140930
”键)关闭该标签##功能-在打开的标签上应用模糊过滤器-在标签之间快速切换-在过滤过程中关闭所有不相关的标签-不用鼠标; 该扩展程序具有用于激活,切换选项卡,关闭它们的快捷方式等##路线图[x]通过快捷方式激活[x...
语言:English tl;博士还记得textmate的命令t? Chrome是相同的。 警告:必须在Chrome的扩展中手动设置快捷方式...... tl;博士还记得textmate的命令t? Chrome是相同的。 警告:必须在Chrome的扩展设置中手动设置快捷...
(带有NPM) 安装 git clone 此存储库 切换到新目录 npm install bower install 运行/开发 ember server 访问您的应用程序,为 。 代码生成器 利用许多生成器生成代码,尝试使用ember help generate更多详细信息 ...
AndroidTabSwither 带有可绘制元素和文本元素的选项卡,您可以同时使用它们或其中之一。 此外,Tap 有简单的提示,您可以自行决定风格。
语言:English 快速过滤和切换窗口和选项卡 使用选项卡切换器,您可以仅使用键盘快速切换到其他打开的选项卡,包括按部分名称或URL匹配过滤选项卡。...隐私政策请在http://flowapps.co/tabswitcher/privacypoli
三种方法 1.使用XML文件进行定义 res/drawable/radio.xml 代码如下: <...– 未选中-> ”false” android:drawable=”@drawable/tabswitcher_long”> <!–选中-> <item android:state_checked=”true” andr
快速控制,过滤和切换标签 ...请在https://github.com/kallepersson/tabswitcher中查看源代码。如何更改键盘快捷键以显示Tab切换器? –很简单,您可以在扩展设置页面底部更改键盘快捷键! 支持语言:English
提前制表符:Web浏览器扩展,可帮助您按标题和URL快速查找打开的制表符