大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
视频地址:
崇仁ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
2.1.1主要定义画笔、三角形使用path来实现。接着定义三角形的大小(宽高)以及初始化位置。
2.1.2设置mInitTranslationX参数,表示三角形初始化的位置,相当于marginLeft,计算方式是:
mInitTranslationX = 一个tab的宽度 - 三角形宽度的/2
2.1.3设置mTranslationX参数,表示每一移动一个tab时,三角形需要平移的宽度,如图:
2.1.4 mTabVisibleCount,自定义属性,布局中要显示几个tab,如上图4个tab
2.2.1构造中主要获取自定义属性值,默认为4;以及设置画笔
2.3.1三角形的宽度 = 一个tab宽度的1/6;如果觉得宽度的大小不合适, 可以改变1/6这个常量的比例
2.3.2三角形的高度 = 高度/2如图:
2.4.1重写父类dispatchDraw方法,此方法在invalidate()时,会重新执行
2.4.2通过 canvas.translate()设置三角形所在位置;X轴(上去看2.1.3),Y轴为但前组件的高度(最底部)。以及调用drawPath()方法使用画笔。
2.5.1如标题主要是通过viewpager的position和positionOffset来计算mTranslationX的值;再通过scrollTo方法来平移但前组件,最后通过invalidate()方法重绘布局
2.5.2剩下的就是一些算法和逻辑判断
2.6.1获取viewpager,监听viewpager的滑动事件,自定义setScroll方法(2.5的方法)将但前position和滑动偏移量传进去
2.6.2在此次以及监听的viewpager的滑动事件,如果外界也需要监听当前viewpager的话,会起冲突;此时就需要设置回调,对外提供接口
2.6.3setTextHighLight()方法设置选中的tab为高亮颜色
2.7.1获取list集合,将每一个item设置成一个textview,再通过setTextItemOnclickEvent()方法设置点击事件
3.1app:visible_tab_count自定义属性;如果不设置默认为自定义组件的COUNT_TAB_VISIBLE变量值
不多说,先上图:
列举当前目录下的所有文件,如果是选择目录,则不显示文件,如果是选择文件,则需要显示文件。
新建目录,就是在当前路径下新建目录,同时新建后的目录要能够及时显示在文件列表中。
需要读写权限,添加第三方权限请求库:
使用:
DialogFragment与Dialog有一些不同的地方,其中show方法需要传入FragmentManager
另外需在onCreateVie方法初始化布局,以及获取到控件
另外就是RecycleView,之所以采用RecycleView,是因为发现如果用ListView,内存会不断增加,很难降下来。
其中CommonAdapter继承自BaseAdapter,是通用的Adapter,兼容ListView:
这一部分逻辑有FileProvider类完成; 这里需要注意的是,有些手机不支持读取根目录,所以改为读取"/mnt/"作为根目录就行读取。
另外跳转目录都是改变当前路径,然后再刷新数据。
同时在其内部定义了FileData类:
文件选择,可以通过当前路径路径以及列表索引来唯一确定路径;都是,当跳转目录后,索引应该重置。
这里采用WeakReference记录选择的控件,但选择其他目录或者文件时,之前的控件需要重置一下状态。
该源码主要用于图片合成gif或者视频,其中文件选择弹窗是自己写的。感觉这个弹出应该有许多地方可以用到,所以写下这篇文章,方便以后参考查看。
一、简单自定义控件MyButton每一个控件都是一个java类,有对应的代码,只要你能正确的编写java代码,那么电脑培训发现可以创造出符合你需求的控件,即自定义控件。
1.通过继承的方式,创建自定义控件通过继承一个现有的控件,覆盖其界面的呈现 通过继承一个包含若干子控件的布局通过继承一个现有的控件,覆盖某个响应事件 继承一个View来完整自定义一个心控件 2.使你的自定义控件继承自某个最接近的Android控件,必须是public 一般都会调用父类的构造方法,注意一般有三个构造方法覆盖原来控件的方法,注意是否要再调用super中的方法在XML中以类全名的方式引用此控件二、复杂自定义控件MyLogin需要设计包含一组控件的自定义控件就需要用到复杂的自定义控件1) 使得你的自定义控件继承自某个接近的布局2) 正确的实现构造方法:构造方法中实例化目标布局,同时查找到各个子布局3) 添加相应的响应代码来修改属性,使得外部能访问布局中的子控件4) 在XML中以类全名的方式引用此控件,完整的包名+类名。