SlidingMenu作为最常用到的几个开源项目之一,最初,这个是在IOS上有的,之后被应用到了android上,在google自己原生态的侧拉菜单NavigationDrawer没出现之前,这个效果已经被很多应用所使用。比如今日头条,网易新闻,人人客户端等等。 由于最近项目用到,所以把相关使用和配置记录下来。 Github上的下载地址为:下载地址 国外用到该库的应用APP: Foursquare LinkedIn Zappos Rdio Evernote Food Plume VLC for Androi
SlidingMenu 是什么 SlidingMenu 是一个强大的侧边栏导航框架,并且已经被一些比较牛的 App 使用 SlidingMenu 的主要特点 (1) 侧边栏可以是一个Layout,包含任何 View,也可以是一个 Fragment (2) 使用简单方便,支持左滑和右滑等 (3) 自定义侧边栏显示动画 SlidingMenu 常用属性介绍: menu.setMode(SlidingMenu.LEFT);//设置左滑菜单 menu.setTouchModeAbove(SlidingMen
SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果。如Evernote、Google+、Foursquare等,国内的豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案。 项目下载地址:https://github.com/jfeinstein10/SlidingMenu 注意: SlidingMenu依赖于另一个开源项目ActionBarSherlock,
高仿今日头条 --- 第一篇:(android高仿系列)今日头条 --新闻阅读器 (一) 上次,已经完成了头部新闻分类栏目的拖动效果。 这篇文章是继续去完善APP 今日头条 这个新闻阅读器的其他功能。 这次所实现的功能清单: 1.通过SlidingMenu实现左右侧拉菜单效果 2.通过重写CompoundButton实现--昼夜模式切换按钮效果。 3.通过PopupWindow控件实现了列表中更多菜单弹框操作效果。 4.通过universal-image-loader库实现了图片的加载和缓存。 5.通
我们经常能看到各种app中都有应用侧滑菜单(SlidingMenu),效果很好的一种显示方式,今天我就向大家展示可以说是很简单就能实现和qq的侧滑菜单很相似的效果。现在侧滑菜单的框架在github上也有很多,有兴趣的可以去搜一下,今天我就给大家展示一个简单的仿qq侧滑菜单的例子。
3393244292_39eb19358c_o.jpg 短视频直播源码,日夜模式切换配置相关的代码 import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.PixelFormat; import android.os.Bundle; import android.util.Log; import android.view.View
> 使用步骤 库:别的程序可以用它的方法、图片。 下载的其中一个框架的例子是没有actionBar的,example_update 引入出错可能是俩个v4包冲突了,删掉工程里的一个,不要删了库里的,如果还有错误看probles里说什么或者重启,或者选中工程右键-build path-最后一项,把有x的移除,这是运行环境的问题。而我的问题是软件里自带的v7程序里的v4包和库里的v4包冲突了,我将这个替换掉,发现以前所有的工程都报错了,发现里这些工程里的包重新导一下就可以了,可是有xutils的工程不行,可能
下载SlidingMenu,https://github.com/jfeinstein10/SlidingMenu
上一篇博客带大家实现了:Android 自定义控件打造史上最简单的侧滑菜单 ,有兄弟看了以后说,你这滑动菜单过时了呀~QQ5.0的效果还不错~~嗯,的确,上一篇也承诺过,稍微修改上一篇的代码,实现Q
其中BaseFragment.java是另外5个Fragment的基类,代码如下:
本文将更进一步, 在很多实际的应用场景中我们需要一个更复杂的场景,比如说需要在一个菜单选项中集成多个tab来集中显示信息。这个时候 Viewpager就派上用场了。 本例中我们将通过SlidingMe
引入出错可能是俩个v4包冲突了,删掉工程里的一个,不要删了库里的,如果还有错误看probles里说什么或者重启,或者选中工程右键-build path-最后一项,把有x的移除,这是运行环境的问题。而我的问题是软件里自带的v7程序里的v4包和库里的v4包冲突了,我将这个替换掉,发现以前所有的工程都报错了,发现里这些工程里的包重新导一下就可以了,可是有xutils的工程不行,可能xutils的v4冲突把 - 1. 引入SlidingMenu的库文件 - 2. Activity继承SlidingFragmentActivity - 3. 将onCreate方法改为public - 调用api
滑出式菜单从界面上看,像极了一个水平滚动视图HorizontalScrollView,当然也可以使用HorizontalScrollView来实现侧滑菜单。不过今天博主要说的是利用线性布局LinearLayout来实现,而且是水平方向上的线性布局。 可是LinearLayout作为水平展示时有点逗,因为如果下面有两个子视图的宽度都是match_parent,那么LinearLayout只会显示第一个子视图,第二个子视图却是怎么拉也死活显示不了。倘若在外侧加个HorizontalScrollView,由于HorizontalScrollView的宽度只能是wrap_content,因此子视图的宽度也只能是wrap_content而不能是match_parent了,故而HorizontalScrollView做不到子页面全屏的效果。 现在我们既希望两个子视图的宽度是match_parent,又希望能够拖动两个子视图,还有没有办法呢?办法肯定是有的,在《Android开发笔记(三十五)页面布局视图》中,我们提到margin和padding都可用来设置空隙,空隙的数值都是正数,其实空隙值也能是负数,负数表示该视图被隐藏了一部分,仿佛一张纸插了部分纸面到书中,于是只有一部分露了出来。具体到LinearLayout的编码实现,对应的便是LinearLayout.LayoutParams的leftMargin参数,若该参数为正数,则视图页面拉出了一段空白;若该参数为负数,则视图页面隐藏了一段内容;若该参数是该视图宽度的赋值,则表示视图页面完全隐藏了起来,跟visible="gone"的效果类似。 所以我们可以给视图添加触摸监听器OnTouchListener,在触摸坐标发生变化的同时,给菜单子页面隐入隐出对应的宽度,从而达到抽屉式拉出菜单的效果。一旦触摸弹起,根据手势滑动的距离,判断当前是要拉出整个菜单,还是缩回才拉出一部分的菜单。这个判断可按照滑动偏移是否达到屏幕一半宽度的条件,至于自动拉出或者自动缩进的动画,可由Runnable来定时刷新视图的leftMargin参数。 下面是一个简单侧滑的效果截图:
很多项目都用到类似左侧滑动菜单的效果,比如facebook,evernote,VLC for android等等,这很酷 源代码可以从GitHub的https://github.com/jfeinstein10/slidingmenu上下载。 移植过程中会用到Actionbarsherlock这个项目,去http://actionbarsherlock.com/download.html下载。(两个下的都是最新版本) 步骤: 1.将下载的Actionbarssherlock中/library下的文件解压到w
给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文
不扯闲话了,直接进入正题吧 frame_content.xml <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="
为了后续对这个项目进行优化,比如透明度动画、背景图的位移动画,以及性能上的优化。 我把这个项目上传到github上面,请大家随时关注。 github地址 https://github.com/sunguowei 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异。想必大家都已经见识过了。 为了不重复发明轮子,先去github上面搜索了一番。 发现了几个类似的,但是还是有一些不同。 下面是搜索到的类似的开源项目。 RESideMenu(ios项目) https://github.com/
在Android开发中,相信侧滑菜单大家都不陌生吧,几乎是每个app都必备的。从早期的 SlidingMenu 再到 AndroidResideMenu 最后到Android自带的DrawerLayout,无处不体现着侧滑菜单的诱人魅力。侧滑菜单可以拓展app的内容,充分利用手机屏幕,增加程序的可玩性。既然有这么多可供选择的侧滑菜单使用,那为什么我们还要自己写呢?我觉得我们在使用侧滑菜单的时候应该要懂得其中的原理,更好的,可以自己写一个侧滑菜单来加深体会。
在Android应用开发中,滑动侧边栏经常使用,今天我也试着自己进行了一个简单的实践,虽然功能还不是很强大,但是可以保留下来为以后的开发使用,有需要时在进行简单的修改。实现一个滑动侧边栏思路也很简单:
7.在手指抬起的时候,判定一下手指移动的距离,如果移动的距离大于菜单页面宽度的一半,那就让菜单弹出,否则就让菜单回到默认的位置
因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。SDK已经集成了ProGuard工具,开发者可以从SDK目录下的\tools\proguard目录中进行查看。
因为不想让侧边栏每个页面都跑出来可以设置它不能滑动,这是一个自定义view,所以写全称。有点页面需要能滑出来,在代码中实现。注意:这俩个构造函数缺一不可
接下来2使用自定义viewpager,在第一个页面的时候让父控件拦截,即显示出侧边栏,但是3的话是不拦截,让侧边栏不显示出来,这样的话就相互矛盾了,到底是拦截还是不拦截了?
屏幕适配 主流屏幕: 1280*720, 遵循原则: 不用AbsoluteLayout(绝对布局), 多用相对布局&线性布局(权重), 要用dp,不用px 开发后期, 在不同分辨率屏幕上测试(48
float density = getResources().getDisplayMetrics().density;
实现这样的效果: 1.主页面布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t
上面是三个viewPager相互嵌套,这么就需要对滑动事件进行处理 首先我们不需要viewpager1滑动,因为每次滑动的时候它的父控件就拦截了它的事件,侧边栏的每次滑的时候就跑了出来,所以这里是这样处理的:使用自定义viewpager,重写它的方法 /** * 重写onTouchEvent事件,什么都不用做,不能滑动 */ @Override public boolean onTouchEvent(MotionEvent arg0) { return false; } viewpager2在
UI框架结构图 相互传递数据的时候用这张图看,思路会比较清晰 1. 侧边栏布局 <RelativeLayout xmlns:android="http://schemas.android.com/ap
UI框架结构图 相互传递数据的时候用这张图看,思路会比较清晰 1. 侧边栏布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" androi
SlidingMenu (侧滑菜单形式)在android开发过程中,经常用到,这次我们通过一个简单案例来仿写SlidingMenu 的大体功能,下面 是主要实现的代码:
ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面 1. 引入ViewPagerIndicator库 2. 编写布局文件 <com.viewpagerindicator.TabPageIndicator android:id="@+id/indicator" android:layout_width="fill_parent"
ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面 1. 引入ViewPagerIndicator库 2. 编写布局文件 <com.viewpagerindicator.TabPageIndicator android:id="@+id/indicator" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 3. mIndicator.setViewPager(mViewPager);//将viewpager和mIndicator关联起来,必须在viewpager设置完adapter后才能调用 4. 重写PagerAdapter方法,返回页面标题 /** * 重写此方法,返回页面标题,用于viewpagerIndicator的页签显示 */ @Override public CharSequence getPageTitle(int position) { return mNewsTabData.get(position).title; } 5. 自定义样式修改
你在工作中可能会遇到同时给你说不要重复发明轮子,其实这个说的就是第一:不要做重复的事情,第二:站在巨人的肩膀上。现在有了互联网以及开源的精神,我们的很多在产品中需要实现的功能组件都可以在互联网上找到,我们可以直接拿来用,这样我们就不用重复做东西了,这得益于开源奉献精神。像Google、Facebook这类的大公司都在使用很多的开源产品,比如我们常见的Apache系列、我们使用的Eclipse IDE等等。
一讲到侧滑菜单,我相信大家都会想到一个开源控件SlidingMenu,在google还没有出来DrawerLayout的时候几乎都是使用Slidingmenu来实现侧滑效果,可以说是效果很不错,自从google出了Drawerlayout以后很多公司就使用了Drawerlayout比如 滴滴打车等等。那么今天我们利用drawerlayout来实现qq6.6最新的侧滑效果。首先来看看Drawerlayout默认的效果:
这周我负责实现了游客身份的注册模块,其中有一项是验证手机号。拿到验证手机号的需求时我第一反应是用短信平台给该手机号发短信,结果产品说不要那么复杂,保证输入的是个手机号码就可以了。 百度后得知,有个【可以方便的筛选符合特定规则的表达式—-正则表达式】。很多复杂的筛选条件,比如说QQ号的验证,我们知道它是由5~11位0~9的数字组成,就可以用一个简单的正则表达式 ^\d[0-9]{5,11}& 完成判断,学会后好有成就感哈哈!
众所周知的Android系统每隔16ms重新绘制一次activity,也就是说你的app必须在16ms内完成屏幕刷新的所有逻辑操作,这样才能达到60帧/s。而用户一般所看到的卡顿是由于Android的渲染性能造成的。 本篇博客将介绍Android的渲染相关知识。
一、代码库 1、from 代码家 整理比较好的源码连接 *****************************************************************
http://blog.csdn.net/u011733020/article/details/46786471
侧滑控件,以前大家用的可能是三方的SlidingMenu控件,最近在看谷歌源码项目,意外的看到一个 DrawerLayout 控件。上网一查,原来这个控件是官方给我们提供的一个侧滑菜单控件。既然谷歌已经提供了一个侧滑控件,我们又何必去用一个三方的SlidingMenu控件来实现相同的效果。于是,我决定自己手敲一个Demo来实现看看。
因为学习需求,需要导入一个jar包,也就是SlidingMenu,侧滑的控件,但导入时总是出错。网上找了不少教程都是将 jar包放进lib文件内,右击包名,选择 add as library。可是对于我这个新手来说,怎么也找不到,可能很多3.0以上的小伙伴都有过跟我相同的经历吧。
onConfigurationChanged最早的时候实现侧滑菜单功能大多时候需要通过github上一个叫做SlidingMenu的开源通过依赖包来实现,后来谷歌在v4包中添加了DrawerLayout来实现这个功能,完全可以替代SlidingMenu,这里我们来学习DrawerLayout的用法
Hi,又见面啦,昨天给大家介绍了关于微信的一个控件,那么今天给大家介绍的是一个“陪伴”了我们很多年且常用又实用的控件。阔能花粉们会很疑惑,我只是个技术小白呀,怎么它就陪伴了我好多年了?那么就赶紧来看看今天的主角— DrawerLayout吧~
SlidingPaneLayout是Android在android-support-v4.jar中推出的一个可滑动面板的布局,在前面《Android开发笔记(一百零一)滑出式菜单》中,我们提到水平布局时的LinearLayout无法自动左右拉伸,必须借助于手势事件才能拉出左侧隐藏的布局,现在SlidingPaneLayout便是为了解决LinearLayout无法自动拉伸的缺陷。只要我们在布局文件的SlidingPaneLayout节点下定义两个子布局,那么页面默认会把第一个子布局作为左侧隐藏面板,一旦用户的手势从左向右滑动,左侧面板就被拉了出来。 SlidingPaneLayout的使用挺简单的,下面是它的几个常用方法: setSliderFadeColor : 设置主页面的阴影渐变色。即拉出左侧面板时,右边主页面的渐变阴影色,主页面变得越小则阴影色救越浓。阴影色默认为灰色。 setCoveredFadeColor : 设置左侧面板缩进去时的阴影渐变色。 setPanelSlideListener : 设置左侧面板的拉出监听器。该监听器实现了下面三个方法: --onPanelClosed : 左侧面板已关闭。 --onPanelOpened : 左侧面板已打开。 --onPanelSlide : 左侧面板在滑动。 openPane : 打开左侧面板。 closePane : 关闭左侧面板。 isOpen : 判断左侧面板是否打开。 下面是使用SlidingPaneLayout的效果截图:
GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
写好一个Android模块,比如说一个自定义控件或某个功能的sdk,然后开放出来给别人使用,就得通过某种方式把源码提供给对方。常见的打包方式有: 一、直接给源码,由开发者把代码加入到自己的工程中 该方式主要是些开源的小控件,功能比较简单也不涉及商业机密,所以独乐乐不如众乐乐。开源的自定义控件基本以这种形式发布。 如果自定义控件用到资源文件,也可以由开发者手工将资源文件加入到自己的工程,当然需要修改代码中R文件的import路径。代码+资源文件都加入到工程,代表例子有瀑布流网格控件StaggeredGridView(package名为com.etsy.android.grid),还有滚轮控件WheelView(package名为kankan.wheel.widget)等等。 二、直接给源码工程,由开发者把该工程作为一个引用库加入到自己的工程中 有时候某个开源控件的规模不小,不但代码文件很多,连资源文件都不少,如果直接加入到工程的代价就比较大。不但要改很多路径,而且后期维护也不方便,所以这时往往把开源工程作为library引用到自己工程。具体操作步骤为:右击自己的工程,选择Properties,在弹出窗口的左侧菜单中选择Android,然后在右下方Library区域点击Add按钮,在弹出的小窗中选择要引用的开源工程,点击OK再OK,接着就可在自己工程使用开源库的API了。 这种形式的好处是:开源工程代码和资源文件都无需修改,并且不会与自己工程的文件相混淆。该形式的代表例子有下拉刷新框架pulltorefresh(package名为com.handmark.pulltorefresh.library),以及滑动菜单框架slidingmenu(package名为com.jeremyfeinstein.slidingmenu.lib)等等。 三、把源码打成jar包,由开发者把jar包加入到自己工程的libs目录 直接给源码的方式不利于保护知识产权,并且直接给源码也不方便管理版本,开发者用的时候很可能遇到这样那样的bug。基于以上种种考虑,把源码打成jar包,其实对开发者来说更方便使用。jar打包的具体步骤为:右击要打包的工程,选择Export,在弹出窗口中选择“Java”——“JAR file”,点击Next,然后在新弹窗中勾选src目录,注意res目录是无法打包的,接着点击Browser按钮选择jar包的保存路径,最后点击Finish按钮,等待片刻打包好的jar包便生成完毕。 大部分的java工具都是以jar包的形式发布的,如fastjson、httpmime、zxing等等。 但是jar包方式无法打包res目录,使得layout、values、drawable目录下的xml文件都打包不了。不过有个例外,就是assets目录也是可以打包进jar的。所以如果代码中有用到图片或是文本文件,可以把图片与文本文件放入assets目录,就能一块打包了。当然代码中若要读取图片与文本文件的内容,得借助于AssetManager,具体用法参见《Android开发笔记(二十五)assets目录下的文件读取》。 联合把src和assets打成jar包,该形式的代表例子有百度地图SDK。 四、给出一个库工程,但是src部分打成jar包,由开发者在自己工程中引用该库工程 现在有种情况,我们开发了一个APP,可是客户要求把该APP集成到别的APP中,作为另一个APP的一个频道。因为res目录下文件众多,实在是不可能打成jar包,同时由于商业机密也不能开放src源码,我们就想到一个办法,还是给对方一个库工程,只是src目录打成jar包放到库工程的libs目录。该方式说起来简单,做起来却是麻烦多多,主要问题出在R文件上。由于打成jar包时,原工程中每个资源的资源id都已生成并写死在jar里面,可是对方工程引用库工程时,会重新生成一份库工程的R文件,那么jar包里的资源id就跟R新文件里的资源id不一样,因此总是扔出id找不到空指针的异常。 要解决R文件冲突的问题,基本思路是利用反射机制,预先定义好每个资源的名称,然后在运行过程中动态根据资源名称去找资源id。为了尽可能减少代码修改量,预先定义的资源名称列表保存在R.java中,这样只需批量更改各java源码中R的import路径,无需更改资源id的使用方法。另外在每个Activity启动时都要注入反射用到的Context,下面是通过反射查找资源id的代码例子:
Scroller简介 在SlidingMenu项目中为了实现控件的滑动,需要用到Scroller类来实现缓慢的滑动过程,至于有人说View类可以直接调用scrollTo()方法, 这里scrollTo()方法也能实现移动,但是它的移动是很快一下子就移过去了,就像穿越一样,直接从现实回到了过去,而Scroller类能够实现过程的移动。 可以理解为一步步的走。 查看Scroller源码 public class Scroller { //... } 发现Scroller类并不是View的子类,只
近期项目原因需要一个上下两屏滑动的效果。可以想象成viewpager左右滑动变成上下滑动。本来想用Srcollview实现,但是由于一些原因,比如按键冲突,和listview布局冲突等等,最后决定自己写一个自定义控件。
在android的v4包中有一个控件 Drawerlayout,主要实现了左拉和右拉菜单,类似于之前的“抽屉”功能,此控件使用简单,效果很柔和,操作起来体验非常好,下面是我实现的一个简单效果的部分截图:
之前发现很多人在群里面、论坛上求网易新闻客户端的源码,之后我就去下了个网易新闻客户端和今日头条新闻客户端,发现他们的大体是一样的,于是在最近的空闲时间,便去琢磨如何去实现这样一个APP。 要知道它们是如何实现的,用到了什么第三方库文件,反编译便是很好的一个了解方法,如果你想要了解如何反编译可以点击这个链接:反编译就这么简单 只是一般的APK打包后都是被混淆过的,所以没那么好了解他的每个界面是如何实现的,没事,那就自己慢慢摸索或则从它的资源文件中提取布局了解下整体的大概情况。 我通过反编译 --今日头条:
UIActionSheet是IOS提供给我们开发者的底部弹出菜单控件,一般用于菜单选择、操作确认、删除确认等功能。
领取专属 10元无门槛券
手把手带您无忧上云