跳到主要內容

發表文章

目前顯示的是有「android」標籤的文章

Android View y,translationY 比較

大家好,我是奶綠茶 Android View 物件有 setY 和 setTranslationY 二個屬性 都是可以更改 y軸座標,兩個屬性原理有些不一樣 setY(10) :以父容器為基準,設置 y 軸座標為 10 View.setY Source 如下 public void setY(float y) {         setTranslationY(y - mTop); } setTranslationY(10):自己為基準,設置 y 軸座標為 10 測試結果如下圖 紅底圖為測試的 ImageView,layout_below 綠底文字 上層有個淡紅色的 RelativeLayout 父容器 呼叫 getY() 時,因為經過 RelativeLayout 排版 以父容器為基準值,得到  109 getTranslationY() 以自己為準基,所以值為 0 轉載請註明出處

android Drawselectorontop

大家好,我是奶綠茶 在使用 ListView 時有個 drawselectonTop 的屬性能夠使用 原文: Controls whether the selection highlight drawable should be drawn on top of the item or behind it. 意思是說選取時是否要繪制在物件上 左圖是一般樣式,右圖是指定 drawselectonTop ,這樣選取時就會有 highlight的效果 一般的 ViewGroup 並沒有這樣的功能 謙裡有現成的Library可以使用,祝大家學習愉快。 轉載請註明出處 https://gist.github.com/chrisbanes/9091754

Android完全入門篇-01 安裝SDK與裝置USBDriver

大家好,我是奶綠茶 筆者以 Windows 系統來介紹安裝 1. 下載 Android SDK http://developer.android.com/sdk/index.html 有分 32 位元和 64 位元的版本 為了教學方便,筆者將檔案放置在 D:\ 下 壓開後會有 eclipse資料夾:Eclipse程式碼編譯器 sdk:Android 開發用的 SDK SDK Manager.exe:sdk管理用的軟體 2. 開啟手機的" 開發人員選項 " 部份手機該選項被隱藏起來了 要開啟的話,點選" 關於手機 " 接著連點" 版本號碼 "七次,就會重新開啟該功能 接著再開啟"USB偵錯"功能 接上你的 USB 線後 這樣你的電腦才能透過 USB 線來偵錯手機的資訊 3. 為裝置安裝 adb usb driver 因為各家廠牌的 Driver 都不同也不通用,所以需要自行 Google 找 Driver 可以用"XXX廠牌 型號 adb usb driver"關鍵字來找 例: HTC Newone adb usb driver 接著找到 我的電腦 / 內容 裝置管理員 會看到一個金嘆號未知的裝置, 按右鍵 更新驅動程式軟體 選擇" 瀏覽電腦上的驅動程式軟體 " 完成後就會看到裝置啟動,並出現 XXX Android ADB Interface 4.測試是否連接成功 進入到第一步下載的 sdk 資料夾裡 D:\adt-bundle-windows-x86_64-20131030\sdk 然後在 platform-tools 資料夾上按住 Shift 鍵,然後再按滑鼠右鍵 選擇" 在此處開啟命令視窗 " (此功能只有 Win7 之後的版本才支援, XP使用者就要自行輸入 dos 指令進入到資料夾) 輸入 adb devices 如果看到一串數字,並顯示 device 就表示連線成功 5.新增環境變數(選擇性設定) 為了方便的使用 adb 指令 可以為 windows 設定變數 開啟我的電腦 / 內容 / 左邊的"...

看著這些照片,好懷念以前的日子(詐騙程式碼全攻略)

大家好,我是奶綠茶 等了好久,我終於收到傳說中的詐騙簡訊(呼,趕上流行了) 我就在想他用什麼方法來讓我中毒 身為程式人員當然要來了解對方的手法(老師有練過的,小朋友不要亂點) 首先,他是針對 Android 的使用者 所以你用 PC,Mac,iOS 打上那個網址 都會被轉到一個無人的無名小站 使用 Android 輸入, 就下載一個為 pic.apk 的安裝程式 下載完後,千萬不要按安裝,不然就中獎了 避免這樣的情形,記得手機裡的" 不明的來源 "一定要關掉 接著我們來看看寫了些什麼 1. 他的 package 取成 com.google.android.gmss 讓你以為是正港 Google 的程式 2. 要了很多權限, 像是直接打電話 3. 他會攔截你的個人資訊,訊息,電話 然後背後送到這個網站:appvip.istmein.de 4. 他很耗電 為何會產生小額付費款項 原因如下 該軟體先取得你的手機號碼 再傳送簡訊 appvip.istmein.de/img.php 至你的電話 然後程式碼會攔截簡訊認證碼 再把認證的資訊送回他們的主機 好了,現在你的手機已經可以被別人小額付費 避免這樣的問題,記得 來路不明的程式不要安裝 手機裡的" 不明的來源 "一定要關掉 祝大家學習愉快。 小弟把他的程式碼取出來 對學習Android是有幫助的,需要的朋友可以到這兒下載 https://app.box.com/s/p2iu6n06skq46nkga9b4 轉載請註明出處

AdobeAIR Android In App Purchase

大家好,我是奶綠茶 今天來研究一下如何使用 Adobe AIR 在 Android 使用 In App Purchase, 也就是內購應用(好難翻譯,官方翻譯為:結帳服務) 奶綠茶我使用的這位作者提供的 Native Extensions https://github.com/pozirk/AndroidInAppPurchase 首先還是要了解一下 Android 的內購流程 先 K 一下官方的文章吧 http://developer.android.com/google/play/billing/index.html 流程如下 1. 成為 Android 開發者 2. 新增 AIR 的應用程式, 並在 manifestAdditions 增加內構權限 3. 編譯出 apk 檔, 並上傳到 Developer Console 成功的話,就可以看到"應用程式內產品"可以新增項目 4.新增內構的項目,有三種, 這部份就自己看一下官方文件吧 5.選擇"服務和API",找到你的 Base64 編碼 6.回到 Adobe AIR, 就可以開始寫程式了 測試的結果 不過使用 AIR NativeExtensions 在內購時,有一個問題要注意 無法付費完成後,馬上使用消耗性物件 比如說遊戲的金幣或是藥水之類的 這是因為 AIR NativeExtensions 無法得知 Android Activity 裡的 onActivityResult 事件 要改也是可以,但工程有點大 所以目前只能用在永久性商品較適合,像是升級成 Pro 之類的。 轉載請註明出處, 祝大家學習愉快

Android Custom Dialog

大家好,我是奶綠茶 這一篇來分享如何客製化 ProgressDialog 及 AlertDialog 在 github 官方的 Android App 裡,就有客製化 有興趣的朋友可以直接取得原始碼 https://github.com/github/android Github ProgressDialog 加入自定的圖示 dialog.setIndeterminateDrawable(context.getResources() .getDrawable(R.drawable.spinner)); 接著在 spinner.xml 就可以使用 rotate 來指定要旋轉的圖示 接著你還可以更改位置 @Override public void show() { super.show(); final Window window = getWindow(); window.getDecorView().setBackgroundDrawable( new ColorDrawable( 0x88ff0000 ) ); window.setGravity(Gravity.BOTTOM); WindowManager.LayoutParams params = window.getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setAttributes( params ); } 拿掉黑底, 在 Style 裡更改 <item name="android:backgroundDimEnabled">false</item> 預設的 AlertDialog 自定 AlertDialog 如果要去更改預設的 AlertDialog 樣式相當的麻煩 所以在這我就是自定一個 layout, 然後丟到 Dialog 裡最呈現 這兒有點小地方要注意 Android 3.x 前的版本,確定在左邊 3.x 後的版本,確定在右邊 所以在製作的時候要多這個判斷 轉載請註明出處 ...

Java Random Enum

亂數取得 Enum 裡的任意值 public static > T randomEnum(Class clazz){ Random random = new Random(); int x = random.nextInt(clazz.getEnumConstants().length); return clazz.getEnumConstants()[x]; } 參考文章: http://stackoverflow.com/questions/1972392/java-pick-a-random-value-from-an-enum

AIR on Android 的大Bug

大家好,我是奶綠茶 最近在熱血於 AIR 上的行動裝置開發 發現了一個大問題 在 Android 平台上, 如果你使用了 Stage3D, 小弟使用的是 Away3D 在 permission 加上這一段後 效能就會變的超差的 原因不明 可以下載筆者這個 Demo 加入這一段就可以知道了 http://milkmidi.blogspot.tw/2012/11/away3d-on-ipad-and-android.html 轉載請註明出處

Texturepacker

大家好,我是奶綠茶 在開發 Starling 或是 Html5 動畫時, 會需要把所需要的元素合成一張圖片 同時輸出一份文件檔(通常是 XML) 如果要自己製作就太慘忍了,好再有好用的工具可以使用 http://www.texturepacker.com/ TexturePacker 最好用的是,可以把 swf 丟進軟體 就幫你產生一張大圖和文件 支援 Starling、Cocos2D 等軟體 有試用版可以下載, PC , Mac 皆有 大推

(刷機)SamsungGalaxyTab8.9 P7310 吃 ICS

大家好, 我是奶綠茶 台灣的 SamsungGalaxyTab8.9 一直等不到官方的升級 4.0 所以就手動自己來刷機吧 刷機有風險, 不怕死的往下看 刷上官方的 4.0 ROM 教學都是參考這個網站 點我 4.0 跑起來比原本三星的 3.0 順很多, 呼, 值得 接著要完美演出, 再補刷三星中文輸入法 點我 如果想換個口味, 刷上 CM10 的話 點我 忘了拍照 以上二個 ROM 我都有試刷成功 祝大家使用愉快 因為平版沒有外接式 SD卡, 想在 Recovery 模式下將檔案copy 進去的話 可以使用 adb 指令 adb push "本機端檔案路徑" /sdcard/ 最後一個斜線一定要加, 不然無效 轉載請註明出處

Unity3D 呼叫 Android 端 Java 程式

大家好,我是奶綠茶 最近開始研究 Unity3D, 今天來分享如何使用 Unity3D 呼叫 Android 端的 Java 程式 或是 Android 呼叫 Unity3D 因為 Unity 編譯成 Android 平台時, 會發怖成 apk 檔, 並沒有原始碼 所以製作上有一點點的麻煩 1.新增一個新的 Android 專案 2.從 Unity 安裝路徑下 Unity\Editor\Data\PlaybackEngines\androidplayer\bin\ 複製 classes.jar 至 Android 裡的 libs 資料夾下 3.寫一個 public 的函式給 Unity 呼叫 這邊要注意一下, 當 Unity3D 呼叫 Android 的函式時, 會因為 UI Thread 安全性關系, 所以不能彈出 AlertDialog, 需要透過一個 Handler 來決解這個問題 package milkmidi.unity3d.android; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity; public class MainActivity extends UnityPlayerActivity { public static final int SHOW_ALERT_DIALOG = 0; private Handler mHandler = new Handler(){ @Override public void handleMessage( Message msg ) { super.handleMessage( msg ); switch ( msg.what ) { case SHOW...

刷機 Runny Rom - N1 Version [Sense 3.5]

大家好, 我是奶綠茶 玩 Android 的樂趣就是可以不斷的刷機, 刷出歡樂, 刷出愛 但有時會刷出磚塊。 刷機有一定風險, 後果請自行負責 機子:Nexus One  ROM:Runny Rom - N1 Version [Sense 3.5] http://forum.xda-developers.com/showthread.php?t=1580873 首先你的機子要先 root 最好先練習刷 CM7 http://www.cyanogenmod.com/blog/cm7-nightly-builds 因為好上手, 也較不會失敗 這個版本的 ROM, 就是擁有 HTC Sense, 跑起來不算快, 但還可以接受 需求: Requirements: Full wipe before install. CM7/r2 Hboot or Stock HBOOT EXT4 Partition - Minimum 1GB. HIGHLY RECOMMENDED  4EXT RECOVERY TOUCH 1. 進 Recovery , 清掉所有的資料 2. 如果你刷過 CM 系列的話, 第二個就可以不管 3. 切 SD , Partition 至少要有 1G 這篇有完整的教學: http://zakipush.blogspot.tw/2012/01/minitool-partition-wizardext3ext4.html#.UBJoLLSis1I 4.刷 4EXT Recovery , 一定要用這個版本, 不然 ROM 刷進去後也無法啟動 5.開心的把 ROM 刷進去吧, 完成後, 第一次開機會有點久, 請等待

Android 4.x, 確定與取消

大家好,我是奶綠茶 不知道大家有沒有注意到在 Android 裡的 AlertDialog  確定鍵與取消鍵 4.x版:確定鍵在右邊 其他版:確定鍵在左邊 二者是不一樣的 有時會自製 AlertDialog 這時應該也要注意一下使用者的習慣, 這樣的使用者介面才會是完美 那要怎麼決解呢? 其實很簡單的 4.x版的 layout ,只要放在 res / layout-v14 / 裡, 然後把你的確定鍵放在右邊 其他版的 layout 就放與預設的 res / layout 裡即可 系統會自動判斷使用者的 SDK 版本去抓對映的 layout

Android 超好用的 ValueAnimator Tween類別

大家好,我是奶綠茶 在開發 Android, 經常會需要做一些動畫 在新版的 SDK 裡有個 ValueAnimator 可以使用 法簡單好學, 寫起來跟 Flash 的 TweenMax 差不多, 這就是我們要的 可惜官方說需要 SDK 11 以上的機子才能跑 經過測試也還真的需要 11 以上, (11 是代號 HoneyComb) 後來想到 Android 是 OpenSource, 就把他的類別拿來改一下, 這樣就可以在 2.2 的舊機子上使用 轉載請註明出處 bounceAnim = ValueAnimator.ofFloat( 起始值, 目標值); bounceAnim.setDuration( 1500 ); // 時間 bounceAnim.addUpdateListener 偵聽更新事件。 看吧,簡單好學, 不過這樣的方法依然無法使用 ObjectAnimator 這個類別, 反正 ValueAnimator 就己經夠用了 以下程式碼是改至官方提供的 API, 我把他改成 2.2 也可以跑的範例 package milkmidi.demo; import java.util.ArrayList; import milkmidi.android.animation.ValueAnimator; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RadialGradient; import android.graphics.Shader; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; import android.os.Bundle; import android.view.View; import android.view.animation.AccelerateInterpolator; import android....

Android Apk 反組譯與加工

大家好,我是奶綠茶 今天來討論關於 Android 反組譯與加工 反組譯工具有很多,在這使用的是 apktool 下載apktool1.4.3.tar.bz2,及apktool-install-windows-r04-brut1.tar.bz2 解開後,把三個檔放在同資料夾下 進入 Command 模式 反組譯 APK。 apktool d 你的檔案.apk 輸出的資料夾名稱 然著你就可以修改裡面的檔案 重新包裝成 APK apktool b 輸出的資料夾 新的檔名.apk 寫入簽屬檔,這樣才可以上架 jarsigner -verbose -keystore 你的.keystore   新的檔名.apk   簽屬檔名稱 完成 最近有專案使用 Adobe AIR 開發,呼叫原生系統的 AlertDialog(或其他的Dialog) 時 在 Android  3.0 以上, 樣式還是長成 2.2, 客戶不喜歡 查出問題點是出在 AIR 包裝時,會在你的 AndroidMainfest.xml 加入 activity android:theme="@style/Theme.NoShadow" 就是這個 theme 語法。 但 AIR 目前又不充許你修改, 只要用上面的方法,把 theme 拿掉即可 轉載請註明出處 參考文章: http://pervasivecode.blogspot.com/2011/11/phonegap-build-editing.html

Android App 程式開發入門班

大家好,我是奶綠茶 經過每天熱血的研究 Android 小弟我終於備好課程啦 Android App 程式開發入門班 完美的入門功略 首先你要 1.至少寫過任一 OOP 物件導向程式語言 2.對 CLASS 類別有一定基礎者 3.學員需自備 Android 手機,方便實機開發,因為模擬器真的太慢了... 一起來狂熱 Android 吧 開發己上架過的 App AXE Effect   Heineken 海尼根   WP7Contact lite   WP7Contact Pro   報名處: http://www.flycan.com.tw/course/android_app.php

android C2DM 推播功能

大家好,我是奶綠茶 今天來介紹如何在 Android 寫推播功能 Android 上的正確名稱叫:C2DM 官方網址: http://code.google.com/intl/zh-TW/android/c2dm/ 看一遍,跟著做,就差不多可以完成 那要怎麼測試呢? 好在有好心人事寫了支測試程式 http://www.riaspace.com/2011/09/as3c2dm-air-native-extension-to-push-notifications-with-c2dm/ 該作者提供了一個 C2DMManager 的 AIR 桌面應用程式,方便你自己發送 經筆者測試,成功。 祝大家學習愉快

Native Android Admob Support For Adobe Air

大家好,我是奶綠茶 最近想在 Adobe AIR App 放上 Admob 的廣告 查了一下相關文章,最好的方法還是使用原生的類別 好在 AIR3.0 後已經可以呼叫原生程式 接著就可以開始來實作。 1.首先你要先知道如何在 Android 上放 Admob 參考官方教學 https://developers.google.com/mobile-ads-sdk/download 2.使用原生程式,開發出 AIR 可以呼叫的 jar 檔 這裡要注意的是,開發時要匯入 Admob的jar 但匯出時, 並不會把該 jar 包進去 所以最後還需要下個 Command 把二個 jar 合拼成一個(這個我卡了好久) 3.AIR端使用 ExtensionContext 類別 開發工具為 FlashDevelop 4.0 加上 Ant 外掛(用來快速執行Command) APK下載 轉載請註明出處 SourceCodeDownload

新案上線:Heineken海尼根 Android App

大家好,我是奶綠茶 新案上線:Heineken海尼根 (iOS/Android) 這次小弟是開發 Android 的 App. 使用原生 Java 程式寫的, 不是用 air 喔。 這次的專案,讓我經驗值大增呀 之後再來補上這次用到的技術文章 點我進入頁面