android底部导航抽屉(手机底部导航栏)
本文目录一览:
- 1、如何在Android中添加一个节分隔抽屉式导航
- 2、android 判断有没有底部导航栏
- 3、app底部导航两个需要做么
- 4、android类似下抽屉的效果怎么实现
- 5、android开发时如何去掉底部的导航栏?
如何在Android中添加一个节分隔抽屉式导航
你说的效果实现可以分为两个部分:
一、拖拽部分,这部分你实现让scrollview跟着你的手移动
1、给scrollview添加onTouchListener或者自定义scrollview并重载其onTouchEvent方法。
2、根据move不停设置scrollview的坐标
你需要注意的是:event.getX()是你手指的坐标,而不是控件的坐标,很多人能够理解,但有的人写的时候会搞混。
你需要做的是:取得4个坐标——
(1)、你手指点下去的坐标,这个坐标在ACTION_DOWN中获得:primaryTouchCoord,这个坐标要一直保存,所以要在Touch事件外定义(类成员变量);
(2)、你手指当前的坐标curTouchCoord,在每次Touch事件触发的时候用event.getY()获得,即在switch外或者ACTION_MOVE中获得;
(3)、scrollview初始坐标primaryScrollViewCoord,这个坐标也在ACTION_DOWN中获得并且一直保存。
(4)、scrollview最终坐标curScrollViewCoord,在ACTION_UP中获得。
有了这四个坐标,就可以实现了。
android 判断有没有底部导航栏
很多android应用底部都有一个底部导航栏,方便用户在使用过程中随意切换。目前常用的做法有三种:一种是使用自定义tabHost,一种是使用activityGroup,一种是结合FrameLayout实现。笔者再做了多款应用后,为了节约开发周期,封装了一个抽象类,只要三步便可完成底部栏的生成及不同页面的调用。
public class ActivitycollectiondemoActivity extends ActivityCollection {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setBottomTabBackground(resId);// 设置底部导航背景图
@Override
protected boolean isShowWindowFeature() {
return true;//设置是否显示title;
@Override
protected ListIndicatorInfo setDrawableCollections() {
ListIndicatorInfo IndicatorInfos = new ArrayListIndicatorInfo();
IndicatorInfo indicatorInfo_1 = new IndicatorInfo(R.drawable.baby1,
R.drawable.baby1_s, R.string.baby1, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity01.class));
IndicatorInfo indicatorInfo_2 = new IndicatorInfo(R.drawable.baby2,
R.drawable.baby2_s, R.string.baby2, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity02.class));
IndicatorInfo indicatorInfo_3 = new IndicatorInfo(R.drawable.baby3,
R.drawable.baby3_s, R.string.baby3, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity03.class));
IndicatorInfo indicatorInfo_4 = new IndicatorInfo(R.drawable.baby4,
R.drawable.baby4_s, R.string.baby4, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity04.class));
IndicatorInfos.add(indicatorInfo_1);
IndicatorInfos.add(indicatorInfo_2);
IndicatorInfos.add(indicatorInfo_3);
IndicatorInfos.add(indicatorInfo_4);
return IndicatorInfos;
第一步:导入jar包;
第二步:让你的homeactivity 继承ActivityCollection类;
第三步:将你的图片资源及跳转intent放入list中,设置可选项;
雏形就形成啦!
app底部导航两个需要做么
需要。
从g+采用底部导航开始,你就应该意识到谷歌在设计规范上要开始寻求变化了。然而,这种变化不过是再次回到了几年以前。其实类似的事情在微信上也发生过,为了遵循安卓的设计规范,微信在很短暂的时间内使用了抽屉导航,当时都是一片赞美的声音,不过“好景”不长,很快微信再次回到了传统的底部导航,但是在安卓版本上,保留了具有安卓特色的action bar。微信这样做,肯定是基于用户调研的结果,原因其实很简单:就算安卓真的有设计规范,也不得不考虑用户的实际需求,微信是面向上亿人群的,当你发现因为改版导致功能使用率降低的时候,你不得不改变这种设计。
什么底部导航具有如此顽强的生命力呢?易操作:毕竟是手持设备,菜单放在底部,几乎是最易操作的。不管你手指长还是短,都非常顺手。而抽屉导航,几乎都需要两只手吧。直观:所有菜单放在第一屏,一目了然,没有隐藏功能,一下子就知道这个app是干什么的。ios以及其它手机厂商培养出来的用户习惯:这个其实是最次要的,如果一开始出现的是其它导航方式,而底部导航最后出来,我觉得底部导航最终还是会笑到最后。所以这个并不重要。
android类似下抽屉的效果怎么实现
你说的效果实现可以分为两个部分:
一、拖拽部分,这部分你实现让scrollview跟着你的手移动
1、给scrollview添加onTouchListener或者自定义scrollview并重载其onTouchEvent方法。
2、根据move不停设置scrollview的坐标
你需要注意的是:event.getX()是你手指的坐标,而不是控件的坐标,很多人能够理解,但有的人写的时候会搞混。
你需要做的是:取得4个坐标——
(1)、你手指点下去的坐标,这个坐标在ACTION_DOWN中获得:primaryTouchCoord,这个坐标要一直保存,所以要在Touch事件外定义(类成员变量);
(2)、你手指当前的坐标curTouchCoord,在每次Touch事件触发的时候用event.getY()获得,即在switch外或者ACTION_MOVE中获得;
(3)、scrollview初始坐标primaryScrollViewCoord,这个坐标也在ACTION_DOWN中获得并且一直保存。
(4)、scrollview最终坐标curScrollViewCoord,在ACTION_UP中获得。
有了这四个坐标,就可以实现了。
在ACTION_MOVE中判断最大和最小Y坐标,比如
if(scrollview.getY0){//让scrollview的坐标不超过你的最大和最小坐标
scrollview.setY(0);
}
if(scrollview.getY(int)(mScreenHeight()*0.9)){
...
}
if(scrollview.getY()0scrollview.getY(int)(mScreenHeight()*0.9)+可以滑动条件),则执行scrollView.setY(primaryScrollViewCoord+(curTouchCoord-primaryTouchCoord));
上面完成后,scrollview就会跟着你的手指移动并且不会超过指定坐标
由于是scrollview,你不得不判断什么时候scrollview有效,否则在scrollview移动的时候,scrollview的内部也会移动。
上面的回答根据你实际情况修改。
二、动画部分,你的手离开屏幕后scrollview向上/下动画
在完成第一步后,你就已经完成了大半。
以下在ACTION_UP中完成
这时,在上面提到的primaryScrollViewCoord就会使用了,根据scrollview移动的距离判断是向上/下,然后使用animation(Set)完成接下来的动作。
你这里将使用Animation animation = new TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta);
注意4个坐标的意义,第一个为起始X坐标离当前坐标的距离,这里为0,第二个坐标为目的坐标到当前的距离,正负代表不同的方向;后面两个为Y坐标;
你这里要设置animation.setFillAfter(true),使UI保存在动画后;如果要保存到动画前,则使用setFillBefore(true);
animation.setDuration(int)设置动画事件
然后scrollview.startAnimation()开始动画
动画具体使用,网上可以找到,就不多说了。
需要注意的:
1、动画结束后一定要clear,可以给动画添加监听,在onAnimationEnd()里执行scrollview.clearAnimation(),如果可以的话,同时将scrollview设置成最大或最小坐标
2、不要使用touch坐标直接设置scrollview坐标,那样可能会导致移位。
android开发时如何去掉底部的导航栏?
在一个普通类中(非继承Activity等),点击截界面上某一按钮隐藏底部导航栏(Back、Home、多任务切换),再次点击让其出现;
实现:隐藏view.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| Utils.SYSTEM_UI_FLAG_IMMERSIVE);
显示view.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
而且加了界面touch监听,在隐藏模式下,单击屏幕不让导航栏出现;