混合知識點

1.java

String path = String.format(Contants.NEWS_URL_HOST+Contants.NEWS_TOP_URL,pageIndex);

 將NEWS_URL_HOST+NEWS_TOP_URL組成的網址中d%的值替換爲pageIndexandroid

2.OnScrollListener滑動監聽中onScroll應設置一個標籤返回給onScrollStateChanged用git

3.github

Runtime.getRuntime().maxMemory();

獲得手機最大內存數據庫

4.api

LruCache<String,Bitmap> cache = new LruCache<String, Bitmap>((int) (maxMemory/16)){ @Override protected int sizeOf(String key, Bitmap value) { return value.getByteCount()*value.getHeight();//返回一張圖片的字節總數。
 } };

返回一張圖片的字節總數。瀏覽器

5.安全

 getResources().getDisplayMetrics().widthPixels;

返回屏幕寬度服務器

6.併發

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { int left = (int) (scroll_line_width*(position+positionOffset));//下劃線距離最左邊的距離
        params.leftMargin = left; scroll_line.setLayoutParams(params); } @Override public void onPageSelected(int position) { int out_left = position*scroll_line_width +scroll_line_width/2 -                   getResources().getDisplayMetrics().widthPixels/2;//滑動條左邊超出屏幕的距離
        scrollView.smoothScrollTo(out_left,0); } @Override public void onPageScrollStateChanged(int state) { } });

7.window

// 去掉標題欄(該代碼必須在setContentView()前調用)
requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); window = getWindow(); // 去掉狀態欄
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

 8.切換橫豎屏時如何不銷燬當前Activity

<activity android:name=".MainActivity" android:configChanges="orientation|screenSize">

 9.隱藏ActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

 10.動態設置佈局寬和高

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,1); txVeiwHolder.imageView.setLayoutParams(params);

 或者

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); txVeiwHolder.imageView.setLayoutParams(params1);

 11.使應用程序變成對話框的形式

android :theme="@android:style/Theme.Dialog" 

 12.java代碼調用string.xml中的文字可使用

getActivity().getString(R.string.ts0)

 可是調用顏色的話須要sdk23以上的版本

getActivity().getColor(R.color.colorBack)
getResources().getColor(R.color.my_blue)

 13.String s = new String("xyz");建立了幾個String Object? 

兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s 

14.viewpager每次切換的時候, 會從新建立當前界面及左右界面三個界面, 每次切換都要從新oncreate, 因此只要設置

viewPager setOffscreenPageLimit(3);

便可避免這個問題。
viewPager.setOffscreenPageLimit(3);表示三個界面之間來回切換都不會從新加載

15.fragment裏嵌套viewpager,如何讓viewpager滑到最後一頁滑不動

viewPager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //讓ViewPager的父容器不要攔截滑動事件
        viewPager.getParent().requestDisallowInterceptTouchEvent(true); //這裏若是返回true則ViewPager的滑動事件會被屏蔽
        return false; } }); //給ListView添加頭部,這行代碼必定要寫在listView.setAdapter(adapter);以前
listView.addHeaderView(headerView);

 16.將一個Activity設置成窗口樣式

在AndroidManifest.xml中定義Activity的地方一句話

android:theme="@android:style/Theme.Dialog"

android:theme="@android:style/Theme.Translucent"//就變成半透明的

 17.後臺的Activity如何在被系統回收以前保存當前狀態?

onSaveInstanceState()

 18.android中service的實現方法是

startservice和bindservice

 19.TextView設置爲指定的行數

android:lines="2" android:ellipsize="end"

20.登陸密碼使用MD5加密

MD5.getMD5(old_password).toUpperCase()

 21.alertdialog沒法彈出

切記:清單文件中app的風格必定要繼承

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

22.代碼中調用string.xml中的字符

在Activity中

getString(R.string.resource_name); 

或者

getResources().getString(R.string.resource_name); 

其餘地方
用context上下文

context.getString(R.string.resource_name); 

context能夠從調用的地方得到,或者 getApplicationContext 用全局的context 
或者用

application.getString(R.string.resource_name); 

 23.onActivityResult不執行的緣由

activity的啓動模式不能爲singleTask

 24.圓角按鈕

效果圖

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <stroke android:width="1dp" android:color="#FFFFFF"></stroke>
    <corners android:radius="3dp"></corners>
</shape>

25.刷新當前activity

調用oncreate()方法便可 

26.去除listview之間的分割線

android:divider="@null"

27.格式化時間

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dateStr = sdf.format(new Date());//最新的時間

 若是不想月和日前面自動補0,只要設置格式爲yyyy-M-d便可

 28.

<activity android:name=".wxapi.WXEntryActivity" android:exported="true"/>
android:exported="true"的做用是設置其餘應用能夠調用該activity

 29.

自定義View中註冊廣播,須要重寫onDetachFromWindow()方法去銷燬廣播

30.

若是不想控件被父佈局遮擋,在根佈局設置屬性android:clipChildren="false"

31.

若是不想底部導航欄被軟鍵盤頂起來,在清單文件設置 android:windowSoftInputMode="adjustPan"這個屬性

32.

迭代開發的時候如何向前兼容新舊接口?

設計服務器接口時,都帶版本號:例如1/二、當時間久了之後,舊版本就不維護了

33:

(後綴)逆波蘭式

中綴表達式:9+(3-1)*3+10/2

後綴表達式:931-3*+10 2/+

34.

fragment嵌套問題

fragment嵌套裏面不能用再用getActivity().getFragmentManager()
要用getChildFragmentManager()

35.

retrofit2的get和post
get:

例:

@GET("room/question_focus")
Call<BaseResponseEntity> followQuestion(@Query("topicId") String topicId, @Query("questionId") String questionId);

post:

例:

@FormUrlEncoded
@POST("room/question_answer")
Call<SendMessageResponseEntity> textAnswerQuestion(@Field("topicId") String topicId, @Field("questionId") String questionId, @Field("msgType") String msgType, @Field("answerChannel") String answerChannel, @Field("msg") String msg);

36.

res文件夾與assets文件夾有什麼區別?

assets目錄的做用是主要放置多媒體等數據文件

1) res文件夾中的資源在會在R.java文件中生成ID,代碼中能夠直接經過R.id的形式來訪問。而assets文件夾中的資源不會在R.java文件中生成ID,須要經過AssetsManager經過IO流的方式來訪問。

2) res文件夾中的文件會被壓縮,而assets文件中的文件不會被壓縮。

Res不能自定義目錄名,不支持多層目錄。而assets支持自定義目錄名,支持多層目錄

37.

Manifest.xml文件中主要包括哪些信息?

manifest:根節點,描述了package中全部的內容。
uses-permission:請求你的package正常運做所需賦予的安全許可。
permission: 聲明瞭安全許可來限制哪些程序能你package中的組件和功能。
instrumentation:聲明瞭用來測試此package或其餘package指令組件的代碼。
application:包含package中application級別組件聲明的根節點。
activity:Activity是用來與用戶交互的主要工具。
receiver:IntentReceiver能使的application得到數據的改變或者發生的操做,即便它當前不在運行。
service:Service是能在後臺運行任意時間的組件。
provider:ContentProvider是用來管理持久化數據併發布給其餘應用程序使用的組件。

38.

如何將SQLite數據庫(dictionary.db文件)與apk文件一塊兒發佈?

能夠將dictionary.db文件複製到Eclipse Android工程中的res aw目錄中。全部在res aw目錄中的文件不會被壓縮,這樣能夠直接提取該目錄中的文件。能夠將dictionary.db文件複製到res aw目錄中

39.

如何將打開res aw目錄中的數據庫文件?

解答:在Android中不能直接打開res aw目錄中的數據庫文件,而須要在程序第一次啓動時將該文件複製到手機內存或SD卡的某個目錄中,而後再打開該數據庫文件。複製的基本方法是使用getResources().openRawResource方法得到res aw目錄中資源的 InputStream對象,而後將該InputStream對象中的數據寫入其餘的目錄中相應文件中。在Android SDK中可使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite數據庫文件。

40.

需求:將某一部分佈局轉化爲圖片

其實很簡單,就幾行代碼

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());//建立一個DrawingCache的拷貝,由於DrawingCache獲得的位圖在禁用後會被回收
view.setDrawingCacheEnabled(false);//禁用DrawingCahce不然會影響性能

41.

焦點獲取不到

android:descendantFocusability="blocksDescendants"

若是在xml佈局的根佈局中加這一句,會屏蔽整個Activity的焦點,禁用!

42.

fragment可見操做
需求:當fragment可見時執行某操做

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isInitedView && isVisibleToUser) {
//請求頂部信息
getChattingBanner();
}
}

43.

singleTask模式從新加載
需求:Activity1啓動模式是singleTask,跳到Activity2,再跳轉回Activity1,可是須要執行onCreate

/**
* Activity啓動模式爲非標準啓動模式時繼承該Activity。</br>
* 如SingleTask
*/
public abstract class BaseSingleTaskActivity extends BaseFragmentActivity {
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
initData();
initView();
}
} 

44.

as內存太小報錯
報錯

android studio開發時候 能經過編譯 可是運行的時候就報錯Error:Execution failed for task ':phoneapp:preDexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_05\bin\java.exe'' finished with non-zero exit value 1
解決方案

複製代碼
解決步驟:
一、先把build.gradle中的

dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g" //這個改大
}

二、若是還不行,看看你的JDK是否是32位的,若是是則換成64位的,由於32位識別不了4G以上的內存

45.

今天測試找過來講圖片不顯示了,查了一下是Picasso加載本地圖片沒有顯示,奇怪了,之前都是這樣寫爲何如今不行了,難道是Picasso有bug了,懷着激動的心情斷點跟進去發現

Picasso全部load的重載都會將傳入參數轉化爲Uri 再交給RequestCreator處理

而Picasso.load(localImagePath) 轉化爲Uri是沒有 Scheme的 uri: "/storage/emulated/0/Android/data/xxxx/xxx.png"
這樣固然沒法解析圖片了

解決方式:

Picasso.load(new File(localImagePath))
就能夠了,File轉化爲Uri 是包含Scheme的,
uri: "file:///storage/emulated/0/Android/data/xxxxx/xxx.png"

解決。

46.

Android性能檢測工具
網易Emmagee

Github地址:https://github.com/king1039/Emmagee

騰訊GT

Github地址:https://github.com/Tencent/GT

騰訊的APT

Github地址:https://github.com/shawwinbin/APT

Tencent CSDN地址:https://code.csdn.net/Tencent/apt/tree/master

科大訊飛的iTest

Github地址:https://github.com/BaiduQA/ITEST

Google的Battery Historian

Github地址:https://github.com/google/battery-historian

47.

數據更新版本號問題
App.getAppVsersionCode()

public static int getAppVsersionCode() {
try {
return getApplication().getPackageManager().getPackageInfo(getApplication().getPackageName(), 0).versionCode;
} catch (Exception e) {
if (null != e) {
LogHelp.e(getApplication().getPackageName(), e);
}
return 0;
}
}

48.

JsonView插件
下載地址:https://github.com/gildas-lormeau/JSONView-for-Chrome

解壓,Google瀏覽器-更多工具-擴展程序-開發者模式-加載已解壓的擴展程序

將WebContent打開加入便可

49.

在onBackPressed()中設置setResult時必定要寫在super.onBackPressed()以前,即

@Override
public void onBackPressed() {
    setResult(RESULT_OK);
    super.onBackPressed();
}

由於若是super.onBackPressed在前面,源碼裏面會setResult(0);而後直接finish掉,你再怎麼設置都不行了

50.

有的時候在清單文件裏設置activity的啓動模式不會生效,得動態java代碼設置

相關文章
相關標籤/搜索