之前有一个项目中有用到轮播,不过不是简单的轮播图片就完了,而是要轮播很多个View,一开始我的想法和大家一样在github在一个算了,哈哈,不过在试用了很多个项目之后都觉得不能完全满足我的需求,大部分还是针对于图片轮播的场景...,所以是时候自己搞一个既支持图片,也支持各种自己定义的View,也支持fragment,同时也可以选择不同实现方式的指示器或者干脆去掉,适应个各种需求场景。...用position = position % listFragment.size(); 滚动的坐标求余Fragment的个数既求得正确的Fragemnt的坐标,代码很少,很简单,这样就可以Fragment...有了上面这个两个类就可以实现Fragment和View的循环轮播。...这个Banner既支持Fragment,也支持普通的View,当然也有懒人专用的传个数组就可实现图片轮播,整个项目我已经生产一个库,具体的源码和用法,怎么引用请参见github. https://github.com
分析了Activity设置页面布局到页面View元素进行布局到底经历了一个怎么样的过程?...是因为我在掘金上看到一篇子线程更新View的文章之后,发现自己对View还不是很了,以这个问题为方向看了View相关的源码。...View的放置都是根据一个矩形空间放置的。 layout方法:是View的放置方法,在View类实现。...Activity中的Window的setContentView 阅读这篇文章我们知道Activity中有Window对象,一个Window对象对应着一个View(DecorView),ViewRootImpl...我们知道界面所有的元素都是有View构成的,界面上的每一个像素点也都是由View绘制的。Window只是一个抽象的概念,把界面抽象为一个窗口对象,也可以抽象为一个View。
有学员提问, 为什么他看到了一个基因,如下所示,居然有两个id,看起来就非常的诡异,让他百思不得其解。...一个基因有两个id 其实这个基因首先是有一个基因名字,是 MATR3 ,是人类基因命名委员会给出来的。...其实这个时候你可以随意选择,比如这个基因你可以直接删除,或者两个id随意选择一个,或者选择表达量最高的那个id。...duplicated(ids$SYMBOL),] # 我这里直接粗暴的删除出现重复的id head(ids) pos=match(ids$ENSEMBL,rl$V1)#match函数获取括号中左边的在右边的中的位置信息...人类就只有2万个蛋白编码基因矩阵, 4万个id缺失了就缺失了,这就是人生。如果你问我为什么,我得给你开课,讲解背景知识至少十天半个月!
填充器 4.0 通过Return方法把inflate得到View对象给返回出去 5.0 在使用fragment的activity里面调用getFragmentManager方法.得到fragmentManager...,new class 继承 Fragment 第二步,复写onCreateView方法 第三步,在onCreateView里面进行,使用inflater把layout布局文件转换为一个View对象 第四步...下面是我做的一个小Demo 是在一个页面中实现各个Activity之间的通信,左侧点击按钮,右侧出现相应的Activity界面.同时on关实现两个Activity之间的通信....先编写一个方法initview()实现初始化. 然后根据swich开始编写Fragment.这里有七个Fragment,每个Fragment里面代码内容相似就用一个做代表....view = inflater.inflate(R.layout.fragment2,null); //fragment的布局控件的查找,就要用到inflater得到的VIew对象. returnview
); } } 到这里我们运行程序就可得到如下结果 ?...--删除了上面两个fragment标签,加入了一个id为main_layout的FrameLayout布局--> <FrameLayout android:id="@+id/main_layout...开启一个事务,通过调用beginTransaction方法开启。 向容器内加入Fragment,一般使用replace方法实现,需要传入容器的id和Fragment的实例。...整个函数的意思就是第2个参数中指定的Fragment嵌入到第一个参数指定的布局容器中。这一点我们可以通过Hierarchy View验证。 ? 提交事务,调用commit方法提交。...Fragment中调用另外一个Fragment中的方法 我们可以直接在一个Fragment中调用另外一个Fragment的公开方法,前提是要先拿到另外一个Fragment的实例,我们先来看看怎样拿到实例
大家好,又见面了,我是全栈君。 Android上的界面展示都是通过Activity实现的。Activity实在是太经常使用了。我相信大家都已经很熟悉了,这里就不再赘述。...extends FragmentActivity { // 定义FragmentTabHost对象 private FragmentTabHost mTabHost; // 定义一个布局...) { // 实例化布局对象 layoutInflater = LayoutInflater.from(this); // 实例化TabHost对象,得到...(this, getSupportFragmentManager(), R.id.realtabcontent); // 得到fragment的个数 int count...(mImageViewArray[index]); TextView textView = (TextView) view.findViewById(R.id.textview);
这里我强烈建议你使用support-v4库中的Fragment,因为它可以让碎片在所有Android系统版本中保持功能一致性。...) { View view = inflater.inflate(R.layout.left_fragment, container, false); return view...="@+id/left_fragment"知道这个碎片控件实现类是谁,而是android:name来控制的),而类文件LeftFragment.java则重写了方法onCreateView(),使其返回一个我们所指定的的布局...View对象,而这个对象是由R.layout.left_fragment指向了:left_fragment.xml。...具体的代码我就不在这里给出了,如果你忘记了该如何编写,可以参考2.4.5小节。
savedInstanceState 参数是在恢复Fragment时,提供上一个Fragment实例相关数据的 Bundle。...2.获取FragmentManager,在活动中可以直接通过调用getSupportFragmentManager()方法得到。...3.开启一个事务,通过调用beginTransaction()方法开启。 4.向容器中添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例。...} fragmentTransaction.commit(); } } 笔记批注: 关于Fragment有两个不同的包下的Fragment选择,一个是系统内置的android.app.Fragment...,一个是support-v4库中的android.support.v4.app.Fragment。
创建一个新的module名为fragmentshowhide,然后创建一个Fragment对应的布局文件fragment_demo.xml,代码如下: 我的第一个...二、Fragment绑定和解绑 这里同样是直接跳过案例来进行学习,新建一个新的module名为fragmentattachdetach,然后创建一个Fragment对应的布局文件fragment_demo.xml...android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是我的第一个...然后再点击“ATTACH”按钮,得到新的Logcat日志信息,如下: ?
记得我之前参与开发过一个项目,要求程序可以支持好几种终端设备,其中就包括Android手机和Android Pad。...这尤其是苦了我们的X总(由于他dota打的比较好,我都喜欢叫他X神)。他在我们项目组中单独维护一个模块,并且每次打版本都是由他负责,加班的时候我们都能跑,就是他跑不了。...这里也是赞扬一下我们X神的敬业精神,如果他看得到的话。 经历过那么苦逼时期的我也就开始思考,可不可以制作同时兼容手机和平板的App呢?...直到我一个在美国留学的朋友Gong让我帮她解决她的研究生导师布置的作业(我知道你研究生导师看不懂中文 ^-^),正好涉及到了这一块,也就借此机会研究了一下,现在拿出来跟大家分享。...> fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/sound_fragment
---- 前言 上一篇文章中详细分析了Fragment相关知识,那么作为“小Activity”,Fragment能做什么呢,如何使用Fragment得到最佳实践呢。...好了,,下面我就来实现上图的效果,不过在开始之前,首先你必须已经了解Fragment的用法了,如果你对Fragment还比较陌生的话,建议先去阅读我前面的一篇文章Android开发之漫漫长途 XII——...目前Fragment作为演示使用,可以看到布局内容都非常简单,我这里只给出其中一个Fragment的创建过程和源码,项目完整源码可见文末的源码地址。...view = inflater.inflate(R.layout.fragment_goods, null); return view; } @Override...remove(Fragment fragment) : 移除一个已经存在的Fragment. show(Fragment fragment): 显示一个以前被隐藏过的Fragment hide(Fragment
设置主布局文件,为根布局设置一个id,作为内容区 给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文 当前的Fragment实现OnItemClickListener...接口 实现onItemClick()方法 switch判断一下当前菜单的索引位置,根据索引来实例化不同的Fragment对象 调用getActivity()方法,得到宿主Activity对象,这个activity...暴露一个方法,替换fragment 使用关键字instances of判断getActivity()得到的是MainActivity类的实例 调用宿主Activity对象的switchMenuFragment...().beginTransaction().replace(R.id.ll_main_content, fragment).commit(); 调用SlidingMenu对象的toggle()方法,关闭左侧菜单...> parent, View view, int position, long id) { Fragment fragment=null; switch
这里我就不打码了,,哈哈哈哈 TabLayout TabLayout的静态使用 TabLayout是Android 5.0之后Google提供的一系列Material Design设计规范中的一个控件。...你必须实现一个PagerAdapter来生成这些显示的页面。ViewPager经常和Fragment一起使用。...//通过我们重写的getItem方法得到相应fragment fragment = getItem(position); if (DEBUG) Log.v...--ViewPager--> view.ViewPager android:id="@+id/view_pager" android...假如说我采用下面的方法调用setOffscreenPageLimit(2),此时ViewPager的简单示意图 ? 注:从上面的代码也可以看出ViewPager最少会预加载一个页面。
然后建一个Fragment类,这里命名我就用ABCDE来命名了,实际开发中是肯定不能这样的。 ? 然后在layout新建一个布局fragment_b.xml ? 然后修改一下这个布局 fragment_a.xml中我放了一个TextView用来表示这个是A,那么其他的xml中也要放置对应的BCDE,这样你切换的时候才能看到区别。...但是这时候又有一个问题,那就是我的这个NavHost初始显示哪一个Fragment,这一点Google的人也想到了,可以在导航图中指明。 打开nav_graph.xml。...这个是用来控制NavHost显示Fragment,虽然我刚才在导航图nav_graph.xml中指明了第一个要显示的Fragment,但是它还缺少这个显示的动机,而这个动机由NavController来提供..." android:title="我的" /> 之前我是有5个Fragment,那么这里添加5个item,并且item的id要和之前导航图的fragment的id保持一致
原因是:它是组织它众多子view之间互相协作的一个ViewGroup。 CoordinatorLayout 的神奇之处就在于 Behavior 对象。怎么理解呢?...CoordinatorLayout使得子view之间知道了彼此的存在,一个子view的变化可以通知到另一个子view,CoordinatorLayout 所做的事情就是当成一个通信的桥梁,连接不同的view..."> .support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width...(fragmentTitle); } @Override public Fragment getItem(int position) { //得到对应position...(int position) { //得到对应position的Fragment的title return mFragmentsTitles.get(position);
,如果画一个UI在你的fragment你必须返回一个View当然了你可以返回null代表这个fragment没有UI. onActivityCreated() 当activity的onCreate(...每个Fragment都有getActivity()得到一个Activity的实例: View listView = getActivity().findViewById(R.id.list);PS:在当前...有几个关键点:fragment是通过inflater加载View然后在main.xml中注册得到的。...当然如果你可以在fragment中得到View那就可以通过View.findViewId()来操控fragment上的具体控件。 5.动态加载不同的fragment: 首先,监听你的按钮。...@Override public void onListItemClick(ListView l, View v, int position, long id) { // Append the
提供标识的方式有: 提供 android:id 属性来指定一个唯一的整数ID,类似其它layout中的View那样。 提供 android:tag 来指定一个唯一的字符串标识。...如果以上2者均未提供,默认会使用fragment>标签所在容器View的ID。...(); 上面的代码完成了向布局中id为R.id.layout_article_detail的ViewGroup中添加一个fragment的操作。...FragmentManager 首先通过getFragmentManager() 得到一个FragmentManager对象。使用它可以完成以下操作: 获得activity中的fragment实例。...当然,在Fragment中也可以getActivity()得到Activity示例然后强转为已知的Activity类型去使用。
扫描二维码下载APK试用 正文 为了方便讲解,我依然是新建一个TabLayoutDemo项目来说明。 ?...为了更好的演示,我还是会新建一个Activity,在com.llw.tablayoutdemo下新建一个mode2包,该包下新建ClassificationActivity,布局activity_classification.xml...而这些Fragment都放在mode3包下,下面一个一个的来创建 HomeFragment public class HomeFragment extends Fragment { @Override...TextView,用来显示当前是哪一个商品所对应的Fragment。...这里面有一个icon_man图标是白色的,我贴了你也看不见,所以你可以自己找一个图标,或者从我的源码里去拿。
是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。... view = inflater.inflate(R.layout.fragment_edit_name, container); return view; } } 效果图...5、传递数据给Activity 从dialog传递数据给Activity,可以使用“fragment interface pattern”的方式,下面通过一个改造上面的登录框来展示这种模式。...(R.id.id_txt_username); mPassword = (EditText) view.findViewById(R.id.id_txt_password); ...) .commit(); } } 可以看到,我们通过读取R.bool.large_layout,然后根据得到的布尔值,如果是大屏幕则直接以对话框显示
睡觉之前如果能有一个 APP,能让我们写一写这一天的见闻或者心得,同时又能看一会段子、瞄一会好看的妹子,放松一下疲惫的身心那该多好,这也是我完成这个 APP 的原因。...一、功能需求 既然要做一个 APP,那我们首先还是得把 APP 的功能都列出来,有了方向才能更好的努力,因为我想做的是一个专门给睡觉前用的 APP,所以我觉得应该有以下的这些功能 1、日记的增删改 2、...,传入一个 String 类型的数据,直接得到数据实体类的 List。..., @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_meizi...因为图片需要有根据手势来放大缩小的功能,因此我便想到了 PhotoView,这是网上一个大神写的,继承自 ImageView 的一个自定义控件。
领取专属 10元无门槛券
手把手带您无忧上云