Android向的工作筆記

2016年11月24日

Is Android direct texture supported on imx6q?
http://www.slideshare.net/GlobalLogicUkraine/direct-access-to-open-gl-texture-memory-33606538
http://www.eoeandroid.com/thread-326092-1-1.html?_dsign=3b421428
http://stackoverflow.com/questions/22383533/memcpy-from-graphic-buffer-is-slow-in-android%E3%80%82
http://stackoverflow.com/questions/27426823/creating-a-mapped-direct-opengl-es-texture-on-android-ndk

2016年11月22日

ANDROID中的EGL擴(kuò)展
using direct textures on android
EGLImage - updating a texture without copying memory under Android
android 下使用Direct Texture
EGLImage與紋理
OpenGL ES 3.0 讓移動世界更上一層樓
Using GL_OES_EGL_image_external on Android

2016年11月19日

PBO + glReadPixels not so fast? 沒有結(jié)論,但至少知道正確姿勢
OpenGL ES3 接口文檔
Fast Pixel Transfers with Pixel Buffer Objects
Reading the OpenGL backbuffer to system memory
Faster Alternatives to glReadPixels and glTexImage2D in OpenGL ES
OpenGL系列教程之九:OpenGL像素緩沖區(qū)對象(PBO)
翻譯自一個蠻不錯的系列
OpenGL離線渲染和緩沖區(qū)對象

2016年10月23日

解決:Dialog沃粗、AlertDialog悼凑、DialogFragment等自定義布局中EditText無法彈出輸入法軟鍵盤的問題
http://www.reibang.com/p/85aa47d46065

注:DialogFragment沒有onShowListener粟矿,Dialog才有

android:windowSoftInputMode屬性詳解
http://blog.csdn.net/gaomatrix/article/details/7057032

注:軟鍵盤強(qiáng)制彈出需要這個屬性的配合

使用DialogFragment實(shí)現(xiàn)底部彈窗布局
http://www.reibang.com/p/3d045ee00880

注:核心是將Fragment所屬的Windows的LayoutParams.gravity值改為Gravity.BOTTOM

    // 設(shè)置寬度為屏寬, 靠近屏幕底部。
    Window window = dialog.getWindow();
    WindowManager.LayoutParams lp = window.getAttributes();
    lp.gravity = Gravity.BOTTOM; // 緊貼底部
    lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 寬度持平
    window.setAttributes(lp);

[Android] Material 風(fēng)格的 Dialog 的使用
http://www.reibang.com/p/6caffdbcd5db

使用官方兼容包,來保證默認(rèn)dialog風(fēng)格一致,同時不丑

2016年10月10日

首先要理解Git的工作流程,最基礎(chǔ)的操作就不說了生音,重點(diǎn)在于Git的分支管理,參見《Pro Git》的第三章 Git 分支一章窒升。

如果項(xiàng)目中不幸使用的不是Git缀遍,難道就不能領(lǐng)略Git的靈活性了嗎?可以使用git svn工具饱须,參見 Git與其他系統(tǒng)-作為客戶端的Git

還有文中沒提到的git svn的命令:git與SVN協(xié)同的工作流程

2016年10月07日

深入理解Gradle: http://www.infoq.com/cn/articles/android-in-depth-gradle

2016年10月07日

Fresco: http://www.fresco-cn.org
TextView部分文字點(diǎn)擊事件: http://blog.csdn.net/true100/article/details/44855731

2016年09月30日

Jack (Java Android Compiler Kit)
似乎現(xiàn)在還沒有普遍用起來這個工具域醇。理論上是向后兼容的,打出來的包也能夠在低版本下運(yùn)行冤寿。

2016-09-26

Android單元測試研究與實(shí)踐

2016-09-21

ActivityThread的main方法究竟做了什么歹苦?

2016-09-20

Python格式化輸出

占位符 含義
%x hex 十六進(jìn)制
%d dec 十進(jìn)制
%o oct 八進(jìn)制

參考資料

Python print函數(shù)用法,print 格式化輸出

2016-09-19

統(tǒng)計(jì)類庫的方法數(shù)

Android Studio 插件

Android Methods Count

在線網(wǎng)站

http://www.methodscount.com/

參考資料

怎樣高效統(tǒng)計(jì)Android開源庫的方法數(shù)

2016-09-14

學(xué)習(xí)Cap'n proto

Cap'n proto 和 Protocol Buffer 的性能對比

學(xué)習(xí)Cap'n proto
Cap'n proto 官網(wǎng)
Cap'n Proto for Java

FlatBuffers 體驗(yàn)

FlatBuffers 體驗(yàn)

Google Protocol Buffer 的使用和原理

Protocol Buffers 是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲格式督怜,可以用于結(jié)構(gòu)化數(shù)據(jù)串行化殴瘦,很適合做數(shù)據(jù)存儲或 RPC 數(shù)據(jù)交換格式。它可用于通訊協(xié)議号杠、數(shù)據(jù)存儲等領(lǐng)域的語言無關(guān)蚪腋、平臺無關(guān)、可擴(kuò)展的序列化結(jié)構(gòu)數(shù)據(jù)格式姨蟋。目前提供了 C++屉凯、Java、Python 三種語言的 API眼溶。

參考資料

Google Protocol Buffer 的使用和原理
Google Protocol Buffer Java教程
[譯]Protobuf 語法指南
設(shè)計(jì)一種簡化的 protocol buffer 協(xié)議

2016-09-13

動態(tài)開啟系統(tǒng)組件的方法

/**
 * 批量禁用組件
 * @param context 上下文
 * @param components service悠砚、receiver組件的完整類名
 * @return 本次是否有組件的狀態(tài)被變更
 */
public static boolean disableComponents(Context context, String[] components) {
    PackageManager pm = context.getPackageManager();
    boolean hasChange = false;
    for (String component : components) {
        ComponentName componentName = new ComponentName(context, component);
        // enabled=true的時候,改為禁用
        if (pm.getComponentEnabledSetting(componentName) != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
            pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
            hasChange = true;
            LogUtils.d(TAG, "disable component: " + componentName);
        }
    }
    return hasChange;
}
/**
 * 批量禁用組件
 * @param context 上下文
 * @param components service、receiver組件的完整類名
 * @return 本次是否有組件的狀態(tài)被變更
 */
public static boolean enableComponents(Context context, String[] components) {
    PackageManager pm = context.getPackageManager();
    boolean hasChange = false;
    for (String component : components) {
        ComponentName componentName = new ComponentName(context, component);
        // enabled=false的時候,改為啟用
        if (pm.getComponentEnabledSetting(componentName) != PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
            pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
            hasChange = true;
            LogUtils.d(TAG, "enable component: " + componentName);
        }
    }
    return hasChange;
}

通過代碼動態(tài)啟用/關(guān)閉堂飞,即便應(yīng)用被殺配置也依舊生效灌旧。目測系統(tǒng)內(nèi)部維持了一個記錄表,后續(xù)研究下绰筛。

參考資料

Enable and disable a Broadcast Receiver
PackageManager

2016-09-12

Android手機(jī)如何錄制屏幕及轉(zhuǎn)GIF

Android Studio提示svn版本過舊

使用SmartSvn的時候枢泰,svn目錄被升級到了1.9格式,而Android Studio最高只支持1.8

升級本地的svn命令到1.9版本铝噩,然后修改Android Studio的配置衡蚂,如下:

Android Studio修改配置

Gradle根據(jù)buildType配置依賴

// build.gradle
android {
    buildTypes {
        ...
        custom {
            ...
        }
    }
}

dependencies {
    customCompile fileTree(dir: 'custom/libs', include: '*.jar')
}

記得android的block要在dependencies前面,否則Gradle會報(bào)錯,提示找不到customCompile這個DSL方法

2016-09-06

第三方依賴minSdkVersion高于項(xiàng)目的minSdkVersion導(dǎo)致項(xiàng)目編譯不過

AndroidManifest.xml內(nèi)的<use-sdk>標(biāo)簽內(nèi)添加tools:overrideLibrary="包名"

如:

<use-sdk tools:overrideLibrary="第三方依賴的名字" />

2016-09-05

構(gòu)建服務(wù)器提示構(gòu)建腳本錯誤:$'\r': command not found

Windows下的文件格式采用\n\r換行毛甲,Unix下采用\n換行年叮,導(dǎo)致Linux構(gòu)建服務(wù)器上運(yùn)行腳本的時候在行開始發(fā)現(xiàn)了不支持的命令'\r'。

使用dos2unix命令將文件的格式轉(zhuǎn)為unix格式即可丽啡。

# Usage
dos2unix build.sh

自定義shape背景透明要顯式指定color為透明

自定義shape時谋右,如果不需要底色,一般會省略<solid />的定義补箍,在大部分系統(tǒng)上,這個時候是沒有底色的啸蜜,即透明效果坑雅。但在某些rom,如小米2A衬横,會出現(xiàn)系統(tǒng)給的默認(rèn)底色是黑色裹粤,導(dǎo)致視覺還原出問題。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- 圓角 -->
    <corners android:radius="1dp" />
    <!-- 底色蜂林,這里要顯式指定為透明 -->
    <solid android:color="@color/kg_color_transparent" />
    <!-- 高度 -->
    <size android:height="12dp"/>
    <!-- 邊線 -->
    <stroke android:width="1dp" android:color="#7d98a9" />
    <!-- 內(nèi)邊距 -->
    <padding android:left="2dp" android:right="2dp" />
</shape>

2016-09-02

動畫效果

xml方式定義

<animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    <item android:drawable="@drawable/wheel2" android:duration="50" />
    <item android:drawable="@drawable/wheel3" android:duration="50" />
    <item android:drawable="@drawable/wheel4" android:duration="50" />
    <item android:drawable="@drawable/wheel5" android:duration="50" />
</animation-list>

oneshot:true則只播放一次遥诉,false則表示聯(lián)系播放
<item>:定義一幀動畫,屬性drawable指定這一幀對應(yīng)的圖片噪叙,duration指定這一幀的播放時長(ms)

代碼方式

Drawable[] loadingDrawables = new Drawable[] {
    Global.getResources().getDrawable(R.id.wheel0),
    Global.getResources().getDrawable(R.id.wheel1),
    Global.getResources().getDrawable(R.id.wheel2),
    Global.getResources().getDrawable(R.id.wheel3),
    Global.getResources().getDrawable(R.id.wheel4),
    Global.getResources().getDrawable(R.id.wheel5)
}; 

AnimationDrawable animationDrawable = new AnimationDrawable();

for (Drawable frame : loadingDrawables) {
    animationDrawable.addFrame(frame, 50);
}

播放和停止

ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
img.setBackgroundResource(R.drawable.spin_animation);

// 代碼定義的方式
// img.setBackgroundDrawable(animationDrawable);

// 獲取背景矮锈,xml定義的會編譯為AnimationDrawable 對象
AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
// 啟動播放,默認(rèn)是循環(huán)播放
frameAnimation.start();

// 停止播放
frame.Animation.stop();

參考資料

  1. AnimationDrawable

2016-09-01

動態(tài)加載dex文件

2.3系統(tǒng)無法直接加載dex文件睁蕾,僅支持加載zip格式的dex包苞笨,為了保證兼容,必須將dex文件改名為classes.dex子眶,在壓縮成zip格式的壓縮包瀑凝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市臭杰,隨后出現(xiàn)的幾起案子粤咪,更是在濱河造成了極大的恐慌,老刑警劉巖渴杆,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寥枝,死亡現(xiàn)場離奇詭異,居然都是意外死亡将塑,警方通過查閱死者的電腦和手機(jī)脉顿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來点寥,“玉大人艾疟,你說我怎么就攤上這事。” “怎么了蔽莱?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵弟疆,是天一觀的道長。 經(jīng)常有香客問我盗冷,道長怠苔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任仪糖,我火速辦了婚禮柑司,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锅劝。我一直安慰自己攒驰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布故爵。 她就那樣靜靜地躺著玻粪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诬垂。 梳的紋絲不亂的頭發(fā)上劲室,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音结窘,去河邊找鬼很洋。 笑死,一個胖子當(dāng)著我的面吹牛晦鞋,可吹牛的內(nèi)容都是我干的蹲缠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼悠垛,長吁一口氣:“原來是場噩夢啊……” “哼线定!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起确买,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斤讥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后湾趾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芭商,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年搀缠,在試婚紗的時候發(fā)現(xiàn)自己被綠了铛楣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡艺普,死狀恐怖簸州,靈堂內(nèi)的尸體忽然破棺而出鉴竭,到底是詐尸還是另有隱情,我是刑警寧澤岸浑,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布搏存,位于F島的核電站,受9級特大地震影響矢洲,放射性物質(zhì)發(fā)生泄漏璧眠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一读虏、第九天 我趴在偏房一處隱蔽的房頂上張望责静。 院中可真熱鬧,春花似錦掘譬、人聲如沸泰演。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至藐握,卻和暖如春靴拱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猾普。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工袜炕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人初家。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓偎窘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溜在。 傳聞我的和親對象是個殘疾皇子陌知,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評論 25 707
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,408評論 2 45
  • 自贊毀他嚴(yán)格來說也算是一大戒掖肋,守5戒方可成人仆葡,守五戒也屬于忍吧,雖然不能破五明志笼,我們的睡眠就是無明本身的屬性沿盅,修道...
    huzx閱讀 308評論 0 0
  • 我早已放棄了成為作家的夢想,也長久的疏于鍛煉寫作能力纫溃,甚至很長一段時間沒有認(rèn)真的看完一本書腰涧。但我還是在每天寫一些文...
    小月samaOVO閱讀 240評論 0 0