Android開發(fā)個人總結(jié)常用的api

前言

  • 這只是記錄下開發(fā)過程中常用的api,是經(jīng)常可能忘了導(dǎo)致去百度的

  • 我還是希望大家最好記在腦子里艰管,需要也提倡查找api,但我感覺只有記住了才能融會貫通途乃,滿足需求乖仇。每次查出來的娘赴,怕不了解规哲,不敢修改等等就不好了

  • 我會記住確定不會忘了,我就會刪除一條诽表。如果第二次進來看到怎不見了呢唉锌,也不用吃驚哈,序號也會沒有

開始吧

1竿奏、禁止用戶按返回鍵關(guān)閉界面

Api: onKeyDown return true即可
代碼如下:

override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
    if (keyCode == KeyEvent.KEYCODE_BACK ) {
        
        return true//不執(zhí)行父類點擊事件
    }
    return super.onKeyDown(keyCode, event)
}

2袄简、獲取資源顏色快捷方法

Api: ContextCompat.getColor(mActivity!!, R.color.m_red_one)
示例代碼:

tv.setTextColor(ContextCompat.getColor(mActivity!!, R.color.m_red_one))  

3、動態(tài)添加布局

Api: LayoutInflater.from
平常都是工具類封裝好泛啸,希望沒有封裝時绿语,也能隨手寫出來
注意:這個方法參數(shù)還有點玄學(xué),自己研究了
示例代碼:

LayoutInflater.from(mActivity).inflate(R.layout.login_study_plan_job_item, ll_job, false)

4候址、RecyclerView添加item間距

Api: rv.addItemDecoration
示例代碼:

rv_learn_direction.addItemDecoration(object :RecyclerView.ItemDecoration(){

        override fun getItemOffsets(outRect: Rect, itemPosition: Int, parent: RecyclerView?) {
            super.getItemOffsets(outRect, itemPosition, parent)
            outRect.right = UtilHelper.dip2px(mActivity,16f)
            outRect.bottom = UtilHelper.dip2px(mActivity,16f)
        }
    })

注意這個添加一次吕粹,也就是這代碼只能運行一次,因為每次addItemDecoration都是有效的宗雇,會疊加間距昂芜。
所以一般放在初始化操作莹规,不要放在接收數(shù)據(jù)赔蒲,操作adapter時操作。

5良漱、監(jiān)聽EditText的輸入改變

Api:addTextChangedListener

6舞虱、adapter的item的點擊事件

Api:onItemClickListener
示例代碼:

getAdapter()?.onItemClickListener = object :BaseQuickAdapter.OnItemClickListener{
                override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) {
                    val item = getAdapter()!!.data[position]
                    
                        
                    }

                }
            }

8、adapter的item里面某個控件的點擊事件

helper.addOnClickListener(R.id.tv_report)

getAdapter()?.setOnItemChildClickListener { _, view, position ->
                when (view.id) {
                    R.id.tv_report -> {

7母市、fragment代替布局矾兜,動態(tài)添加

示例代碼:

val tr = supportFragmentManager.beginTransaction()
    tr.replace(R.id.fl_content, ActiveFragment.getInstance())
    tr.commitAllowingStateLoss()

8、點擊切換fragment

示例代碼:

fun switchFragment(posFragment: Int) {
    var fragment: Fragment? = null
    when (posFragment) {
        0 -> {
            if (ceoActiveFragment == null) {
                ceoActiveFragment = CEOActiveFragment.getInstance(source,position,sum,sheng_id,shi_id, qu_id)
            }
            fragment = ceoActiveFragment
        }
        1 -> {
            if (ceoTaskFragment == null) {
                ceoTaskFragment = CEOTaskFragment.getInstance(source,position,sum,sheng_id,shi_id,qu_id)
            }
            fragment = ceoTaskFragment
        }

    }
    if (fragment == null) {
        return
    }
    val trx = supportFragmentManager.beginTransaction()
    //隱藏當(dāng)前fragment
    if (null != mCurrentFragment) {
        trx.hide(mCurrentFragment!!)
    }
    if (!fragment.isAdded) {
        trx.add(R.id.fl_content, fragment)
    } else {
        trx.show(fragment)
    }
    mCurrentFragment = fragment
    trx.commitAllowingStateLoss()

}

9患久、TextView也可以中間省略號

android:ellipsize="middle"
示例代碼:

android:ellipsize="middle"
android:maxWidth="110dp"
android:singleLine="true"  

10椅寺、canvas繪制圖片

drawBitmap
示例代碼:

canvas.drawBitmap(bitmap, left, top, paintImage);  

11、以SP單位設(shè)置TextView的textSize

TypedValue.COMPLEX_UNIT_SP
示例代碼:

bar_title.setTextSize(TypedValue.COMPLEX_UNIT_SP,17f)  

12蒋失、TextView顯示html富文本

示例代碼:

String result = "實時更新中返帕,當(dāng)前股票行情:<font color='red'>%d</font>";
result = String.format(result, (int) (Math.random() * 5000 + 1000));
mTv.setText(Html.fromHtml(result));

13、放快速雙擊

RxView.clicks(tv_video_price)
            .throttleFirst(2, TimeUnit.SECONDS)
            .subscribe(object : Consumer<Any> {
                override fun accept(t: Any?) {
                    //彈出視頻詳情篙挽,視頻暫停
                    
                }

            })  

14荆萤、對于Application,Service,Activity三者的應(yīng)用場景

context.png

new View(context) 也可以用Application的

15、Android自帶的判斷是否有某個權(quán)限

ContextCompat.checkSelfPermission
示例代碼:

if (ContextCompat.checkSelfPermission(activity!!, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
        //不具有打電話權(quán)限,需要進行權(quán)限申請
        ToastUtils.showCustomToast("沒有電話權(quán)限")
        return
    }  

判斷某個權(quán)限是否永久拒絕(需要在拒絕里面進一步判斷):
if(!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)){

}

16链韭、單獨刷新某一Item

notifyItemChanged(position)
示例代碼:

        if (getHeaderLayoutCount() > 0) {
            notifyItemChanged(i + getHeaderLayoutCount(), "點贊成功");
        } else {
            notifyItemChanged(i, "點贊成功");
        }
        break;

17偏竟、控件執(zhí)行補間動畫

AnimationUtils.loadAnimation
示例代碼:

var translateAnim = AnimationUtils.loadAnimation(this,R.anim.view_anim)
tv_content.startAnimation(translateAnim)   

18、控件執(zhí)行屬性動畫

ObjectAnimator.ofFloat
示例代碼:

ObjectAnimator animator = ObjectAnimator.ofFloat(tv,"rotationX",0,270,0);  
animator.setDuration(2000);  
animator.start();

19敞峭、正確的List遍歷方法

Iterator iterator = list.iterator();
while (iterator.hasNext()){
    System.out.println(iterator.next());
}  

20踊谋、requestLayout,invalidate儡陨,postInvalidate

invalidate :只調(diào)onDraw()褪子,在UI線程調(diào)用
postInvalidate:只調(diào)onDraw(),在子線程調(diào)用
requestLayout:onMeasure骗村、onLayout嫌褪、onDraw ,在UI線程調(diào)用

21胚股、Float相加減精度問題

切記float類型的相加減運算多次很容易出問題
示例代碼:

public static double addTwo(double a, double b) {
    BigDecimal bd1 = new BigDecimal(Double.toString(a));
    BigDecimal bd2 = new BigDecimal(Double.toString(b));
    return bd1.add(bd2).doubleValue();
}  

22笼痛、每個Intent中只能指定一個action,但能指定多個category琅拌。新指定的category也需要在隱式啟動時添加

只有當(dāng)<data>標(biāo)簽中指定的內(nèi)容和Intent中攜帶的Data完全一致時缨伊,當(dāng)前Activity才能夠響應(yīng)該Intent。

23进宝、在一個activity啟動模式為singleTop且本身在前臺時,再次啟動當(dāng)前activity的生命周期如下:

onPause()->onNewIntent->onResume

24刻坊、假設(shè):先啟動Activity A->在Activity A中啟動Activity B->按Back鍵

按Back鍵時的生命周期為B.onPause()->A.onRestart->A.onStart->A.onResume-> B.onStop->B.onDestroy

25、補充:滅屏?xí)r,onPause()和onStop()會依次被調(diào)用

屏亮?xí)r,onRestart()党晋,onStart()谭胚,onResume()會依次被調(diào)用

26、Arrays.asList()方法接受一個數(shù)組或者一個用逗號分隔的元素列表

Arrays.asList(1,2,3,4,5)

27未玻、不知道LinearLayout還是其他布局灾而,可以用ViewGroupParams

ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams)getLayoutParams()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扳剿,隨后出現(xiàn)的幾起案子旁趟,更是在濱河造成了極大的恐慌,老刑警劉巖庇绽,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锡搜,死亡現(xiàn)場離奇詭異,居然都是意外死亡瞧掺,警方通過查閱死者的電腦和手機耕餐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夸盟,“玉大人蛾方,你說我怎么就攤上這事。” “怎么了桩砰?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵拓春,是天一觀的道長。 經(jīng)常有香客問我亚隅,道長硼莽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任煮纵,我火速辦了婚禮懂鸵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘行疏。我一直安慰自己匆光,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布酿联。 她就那樣靜靜地躺著终息,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贞让。 梳的紋絲不亂的頭發(fā)上周崭,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音喳张,去河邊找鬼续镇。 笑死,一個胖子當(dāng)著我的面吹牛销部,可吹牛的內(nèi)容都是我干的摸航。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼柴墩,長吁一口氣:“原來是場噩夢啊……” “哼忙厌!你這毒婦竟也來了凫岖?” 一聲冷哼從身側(cè)響起江咳,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哥放,沒想到半個月后歼指,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡甥雕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年踩身,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片社露。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挟阻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情附鸽,我是刑警寧澤脱拼,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站坷备,受9級特大地震影響熄浓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜省撑,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一赌蔑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竟秫,春花似錦娃惯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拙吉,卻和暖如春潮孽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背筷黔。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工往史, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人佛舱。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓椎例,卻偏偏與公主長得像,于是被迫代替她去往敵國和親请祖。 傳聞我的和親對象是個殘疾皇子订歪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容