Android 零散知識(shí)點(diǎn)備忘

Activity生命周期

activity-lifecycle

Fragment的生命周期

Fragment-lifecycle

Activity 獲取 view getContentView

public static View getContentView(Activity ac){  
       ViewGroup view = (ViewGroup)ac.getWindow().getDecorView();  
       FrameLayout content = (FrameLayout)view.findViewById(android.R.id.content);  
       return content.getChildAt(0);  
} 

獲取GroupView的子控件及個(gè)數(shù)

int childCount=ll.getChildCount(); //獲取groudview有幾個(gè)子view
ll.getChildAt(0); //獲取某個(gè)為子view



# 代碼動(dòng)態(tài)添加控件
    public void onClickbtnAddbtn(View view) {
        Button btn=new Button(this);
        btn.setText("刪除我");
        myConainer.addView(btn);

        //設(shè)置動(dòng)畫
        RotateAnimation ra=new RotateAnimation(0,360,100,150);//從0到360讀旋轉(zhuǎn)100,50的中心的像素為中心點(diǎn)選擇
        ra.setDuration(1000);
        LayoutAnimationController lac=new LayoutAnimationController(ra,0.2f);  //第二個(gè)參數(shù)是動(dòng)畫運(yùn)行到百分多少時(shí)诬垂,第二個(gè)對(duì)象開始動(dòng)畫
        lac.setOrder(LayoutAnimationController.ORDER_RANDOM);  //設(shè)置動(dòng)畫效果的順序LayoutAnimationController下提供隨機(jī)、從上往下俺猿、從下往上
        myConainer.setLayoutAnimation(lac);
        //btn.setOnClickListener(btn_OnClickListener);
    }

其他

LayoutParams param1 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
param1.addRule(RelativeLayout.BELOW, 1);//此控件在id為1的控件的下邊
rl.addView(tv,param1);
Button update = new Button(this);
update.setText(Button);
LayoutParams param2 = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
param2.addRule(RelativeLayout.RIGHT_OF, 1);//此控件在id為1的控件的右邊
rl.addView(update,param2);
this.addView(rl, relLayoutParams);

更多參考:http://blog.csdn.net/u012881904/article/details/48394169


Error:This Gradle plugin requires Studio 3.0 minimum
是我的studio的版本不夠高焕盟,我的studio是2.3.3版本的查坪,導(dǎo)入的項(xiàng)目的版本應(yīng)該是3.0的,其實(shí)我們可以這樣,將以下內(nèi)容添加到gradle.properties中:android.injected.build.model.only.versioned = 3

android.injected.build.model.only.versioned = 3 

問題:


INSTALL_FAILED_TEST_ONLY.png

Failure [INSTALL_FAILED_TEST_ONLY]
java.lang.Exception: exit callstack! code=1
at java.lang.System.exit(System.java:636)
at com.android.commands.pm.Pm.main(Pm.java:109)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)
解決辦法:
這個(gè)我問題是由于gradle plugin, gradle tool是版本問題台谢,版本配置不對(duì)導(dǎo)致的姓言,重新配置下工程的gradle版本 瞬项,比如我用的是AS2.3.2

gradle配置如下:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
//        classpath 'com.android.tools.build:gradle:2.3.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

Error:(71, 0) Could not find method implementation() for arguments [directory 'libs'] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

解決辦法
build.gradle 文件中用compile替換implementation

compile最近被棄用

,取而代之的是implementationapi

dependencies {
...
//    implementation fileTree(include: ['*.jar'], dir: 'libs')
    compile fileTree(include: ['*.jar'], dir: 'libs')
//    implementation "com.android.support:appcompat-v7:${SUPPORT_LIBRARY_VERSION}"
    compile "com.android.support:appcompat-v7:${SUPPORT_LIBRARY_VERSION}"
...
}

Error:(119, 0) Could not find method debugImplementation() for arguments

參見:### Android Studio3.0新的依賴方式(implementation何荚、api滥壕、compile...

問題

distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip

Android中保存Activity狀態(tài)

在android中,一個(gè)界面處于不可見的狀態(tài)的時(shí)候兽泣,當(dāng)系統(tǒng)的內(nèi)存不足的時(shí)候绎橘,就有可能會(huì)被 系統(tǒng)kill到,那么唠倦,當(dāng)被kill的時(shí)候称鳞,會(huì)調(diào)用方法onSaveInstanceState,
那么我們可以在這里面保存一些數(shù)據(jù)

@Override  
public void onSaveInstanceState(Bundle savedInstanceState) {  
        savedInstanceState.putBoolean("MyBoolean", true);  
        savedInstanceState.putDouble("myDouble", 1.9);  
        savedInstanceState.putInt("MyInt", 1);  
        savedInstanceState.putString("MyString", "Welcome back to Android");  
        // etc.  
        super.onSaveInstanceState(savedInstanceState);  
}  
  
@Override  
public void onRestoreInstanceState(Bundle savedInstanceState) {  
        super.onRestoreInstanceState(savedInstanceState);  
  
        boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");  
        double myDouble = savedInstanceState.getDouble("myDouble");  
        int myInt = savedInstanceState.getInt("MyInt");  
        String myString = savedInstanceState.getString("MyString");  
}  

當(dāng)保存了相關(guān)狀態(tài)后稠鼻,我們也可以在onCreate()方法中進(jìn)行數(shù)據(jù)的恢復(fù)
重新恢復(fù)數(shù)據(jù)

   if (savedInstanceState != null) {    
} 

當(dāng)然也可以先將相關(guān)數(shù)據(jù)保存到本地目錄 冈止,然后在activity重建的時(shí)候 ,在oncreate()方法中進(jìn)行數(shù)據(jù)的重新獲取

Activity按返回鍵2次退出app

private long exitTime = 0;
    @Override
    public void onBackPressed() {
        long currentTime = System.currentTimeMillis();
        if ((currentTime - exitTime) < 2000) {
            super.onBackPressed();
        } else {
            Toast.makeText(this, R.string.double_click_exit, Toast.LENGTH_SHORT).show();
            exitTime = currentTime;
        }
    }

夜間模式 values-night - CSDN博客

夜間模式.gif

java 為接口創(chuàng)建實(shí)例--參考RxJava中的Observer 接口

//接口定義
public interface Observer<T> {

    void onSubscribe(@NonNull Disposable d);
    void onNext(@NonNull T t);

    void onError(@NonNull Throwable e);
    void onComplete();

}


//創(chuàng)建實(shí)例
Observer<String> observer = new Observer<String>() {
@Override 
 public void onNext(String s)  { 
     Log.i("onNext ---> ", "Item: " + s);
   }
 @Override 
public void onCompleted() {
     Log.i("onCompleted ---> ", "完成"); 
  } 
@Override 
public void onError(Throwable e) {
     Log.i("onError ---> ", e.toString()); 
  }
};



問題

運(yùn)行環(huán)境android5.1
錯(cuò)誤信息

12-28 14:46:25.373: A/libc(20321): Fatal signal 11 (SIGSEGV), code 2, fault addr 0xb74199c8 in tid 20321 (package)

sqlcipher 庫的System.loadLibrary("database_sqlcipher") 發(fā)生奔潰

database_sqlcipher裝載失敗

其實(shí)就是net.sqlcipher.database.SQLiteDatabase.loadLibs(context) 發(fā)生錯(cuò)誤

Android5.0上運(yùn)行SQLCipher庫出現(xiàn)readonly database的解決方案
文章提到:“這個(gè)問題只有在Android5.0上才會(huì)出現(xiàn)候齿,但是目前采用5.0版本的機(jī)型應(yīng)該不會(huì)”熙暴,由于我的用戶沒有在android5.0上闺属,所以我就沒有按文章的方法去解決。用5.1嘛起碼穩(wěn)定點(diǎn)


問題:使用sqlcipher庫時(shí)周霉,在SQLiteDatabase.loadLibs(context);位置發(fā)生奔潰
解決:
把libs中其他多余的so庫刪除后掂器,得到解決。


刪除多余的so庫

全面介紹Android Studio中Git 的使用(一)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末俱箱,一起剝皮案震驚了整個(gè)濱河市国瓮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狞谱,老刑警劉巖乃摹,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異跟衅,居然都是意外死亡孵睬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門伶跷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肪康,“玉大人,你說我怎么就攤上這事撩穿×字В” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵食寡,是天一觀的道長(zhǎng)雾狈。 經(jīng)常有香客問我,道長(zhǎng)抵皱,這世上最難降的妖魔是什么善榛? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮呻畸,結(jié)果婚禮上移盆,老公的妹妹穿的比我還像新娘。我一直安慰自己伤为,他們只是感情好咒循,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绞愚,像睡著了一般叙甸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上位衩,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天裆蒸,我揣著相機(jī)與錄音,去河邊找鬼糖驴。 笑死僚祷,一個(gè)胖子當(dāng)著我的面吹牛佛致,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辙谜,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼俺榆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了筷弦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤抑诸,失蹤者是張志新(化名)和其女友劉穎烂琴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕乡,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奸绷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了层玲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片号醉。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辛块,靈堂內(nèi)的尸體忽然破棺而出畔派,到底是詐尸還是另有隱情,我是刑警寧澤润绵,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布线椰,位于F島的核電站,受9級(jí)特大地震影響尘盼,放射性物質(zhì)發(fā)生泄漏憨愉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一卿捎、第九天 我趴在偏房一處隱蔽的房頂上張望配紫。 院中可真熱鬧,春花似錦午阵、人聲如沸躺孝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽括细。三九已至,卻和暖如春戚啥,著一層夾襖步出監(jiān)牢的瞬間奋单,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工猫十, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留览濒,地道東北人呆盖。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像贷笛,于是被迫代替她去往敵國和親应又。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程乏苦,因...
    小菜c閱讀 6,365評(píng)論 0 17
  • 1: 獲取控件寬高 控件View有g(shù)etHeight()和getwidth()方法可以獲取寬高株扛,但是如果直接在on...
    自由人是工程師閱讀 1,769評(píng)論 0 0
  • 工作上的失誤大多是責(zé)任心不強(qiáng)造成的,責(zé)任心不強(qiáng)的人大多工作過程中缺乏嚴(yán)謹(jǐn)認(rèn)真的態(tài)度汇荐,所以每個(gè)人在做事之前都要有最基...
    高手如林閱讀 229評(píng)論 0 0
  • 前幾天洞就,朋友忽然在電話里說,她想離婚掀淘,已經(jīng)搬離開家旬蟋。 工作不忙時(shí),她總是懶懶地磨蹭到中午才起床革娄,細(xì)心地化好妝倾贰,頭發(fā)...
    米燦燦88閱讀 211評(píng)論 0 2