視頻地址:
崇仁ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
2.1.1主要定義畫筆、三角形使用path來實現(xiàn)。接著定義三角形的大小(寬高)以及初始化位置。
2.1.2設(shè)置mInitTranslationX參數(shù),表示三角形初始化的位置,相當(dāng)于marginLeft,計算方式是:
mInitTranslationX = 一個tab的寬度 - 三角形寬度的/2
2.1.3設(shè)置mTranslationX參數(shù),表示每一移動一個tab時,三角形需要平移的寬度,如圖:
2.1.4 mTabVisibleCount,自定義屬性,布局中要顯示幾個tab,如上圖4個tab
2.2.1構(gòu)造中主要獲取自定義屬性值,默認(rèn)為4;以及設(shè)置畫筆
2.3.1三角形的寬度 = 一個tab寬度的1/6;如果覺得寬度的大小不合適, 可以改變1/6這個常量的比例
2.3.2三角形的高度 = 高度/2如圖:
2.4.1重寫父類dispatchDraw方法,此方法在invalidate()時,會重新執(zhí)行
2.4.2通過 canvas.translate()設(shè)置三角形所在位置;X軸(上去看2.1.3),Y軸為但前組件的高度(最底部)。以及調(diào)用drawPath()方法使用畫筆。
2.5.1如標(biāo)題主要是通過viewpager的position和positionOffset來計算mTranslationX的值;再通過scrollTo方法來平移但前組件,最后通過invalidate()方法重繪布局
2.5.2剩下的就是一些算法和邏輯判斷
2.6.1獲取viewpager,監(jiān)聽viewpager的滑動事件,自定義setScroll方法(2.5的方法)將但前position和滑動偏移量傳進(jìn)去
2.6.2在此次以及監(jiān)聽的viewpager的滑動事件,如果外界也需要監(jiān)聽當(dāng)前viewpager的話,會起沖突;此時就需要設(shè)置回調(diào),對外提供接口
2.6.3setTextHighLight()方法設(shè)置選中的tab為高亮顏色
2.7.1獲取list集合,將每一個item設(shè)置成一個textview,再通過setTextItemOnclickEvent()方法設(shè)置點擊事件
3.1app:visible_tab_count自定義屬性;如果不設(shè)置默認(rèn)為自定義組件的COUNT_TAB_VISIBLE變量值
不多說,先上圖:
列舉當(dāng)前目錄下的所有文件,如果是選擇目錄,則不顯示文件,如果是選擇文件,則需要顯示文件。
新建目錄,就是在當(dāng)前路徑下新建目錄,同時新建后的目錄要能夠及時顯示在文件列表中。
需要讀寫權(quán)限,添加第三方權(quán)限請求庫:
使用:
DialogFragment與Dialog有一些不同的地方,其中show方法需要傳入FragmentManager
另外需在onCreateVie方法初始化布局,以及獲取到控件
另外就是RecycleView,之所以采用RecycleView,是因為發(fā)現(xiàn)如果用ListView,內(nèi)存會不斷增加,很難降下來。
其中CommonAdapter繼承自BaseAdapter,是通用的Adapter,兼容ListView:
這一部分邏輯有FileProvider類完成; 這里需要注意的是,有些手機(jī)不支持讀取根目錄,所以改為讀取"/mnt/"作為根目錄就行讀取。
另外跳轉(zhuǎn)目錄都是改變當(dāng)前路徑,然后再刷新數(shù)據(jù)。
同時在其內(nèi)部定義了FileData類:
文件選擇,可以通過當(dāng)前路徑路徑以及列表索引來唯一確定路徑;都是,當(dāng)跳轉(zhuǎn)目錄后,索引應(yīng)該重置。
這里采用WeakReference記錄選擇的控件,但選擇其他目錄或者文件時,之前的控件需要重置一下狀態(tài)。
該源碼主要用于圖片合成gif或者視頻,其中文件選擇彈窗是自己寫的。感覺這個彈出應(yīng)該有許多地方可以用到,所以寫下這篇文章,方便以后參考查看。
一、簡單自定義控件MyButton每一個控件都是一個java類,有對應(yīng)的代碼,只要你能正確的編寫java代碼,那么電腦培訓(xùn)發(fā)現(xiàn)可以創(chuàng)造出符合你需求的控件,即自定義控件。
1.通過繼承的方式,創(chuàng)建自定義控件通過繼承一個現(xiàn)有的控件,覆蓋其界面的呈現(xiàn)???通過繼承一個包含若干子控件的布局通過繼承一個現(xiàn)有的控件,覆蓋某個響應(yīng)事件???繼承一個View來完整自定義一個心控件?2.使你的自定義控件繼承自某個最接近的Android控件,必須是public?一般都會調(diào)用父類的構(gòu)造方法,注意一般有三個構(gòu)造方法覆蓋原來控件的方法,注意是否要再調(diào)用super中的方法在XML中以類全名的方式引用此控件二、復(fù)雜自定義控件MyLogin需要設(shè)計包含一組控件的自定義控件就需要用到復(fù)雜的自定義控件1)???使得你的自定義控件繼承自某個接近的布局2)???正確的實現(xiàn)構(gòu)造方法:構(gòu)造方法中實例化目標(biāo)布局,同時查找到各個子布局3)???添加相應(yīng)的響應(yīng)代碼來修改屬性,使得外部能訪問布局中的子控件4)???在XML中以類全名的方式引用此控件,完整的包名+類名。