最近接觸了Android自訂控制項,涉及到自訂xml中得屬性(attribute),其實也很簡單,但是寫著寫著,發現代碼不完美了,就是在attrs.xml這個檔案中,發現屬性冗餘,於是就想有沒有類似屬性繼承或者include之類的方法.本文將就declare-stylable中屬性重用記錄一下.不完美的代碼複製代碼 代碼如下:<?xml version="1.0" encoding="utf-8"?><resources>
Android的設定介面實現比較簡單,有時甚至只需要使用一個簡單的xml檔案即可.聲明簡單,但是如何從PreferenceScreen或者PreferenceCategory中刪除一個Preference會簡單麼.為什麼有些人寫的就無法刪除成功呢?本文將從Android源碼實現來分析一下.聲明檔案複製代碼 代碼如下:<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android=
曾經遇到過這樣的問題,在My Code中使用了通知欄,一切都正常,但是就是進行中的通知欄中屬於我的程式的那一條總是上下跳來跳去,一閃一閃的。感覺使用者體驗很不好,於是Google一下,找到瞭解決方法。在My Code,我是這樣寫的。複製代碼 代碼如下:notification.when =
在Android中引用其他程式的文本資源並不是很常見,但是有時候還是很是有需要的,通常引用的多半是系統的程式的文本資源.下面以一個超簡單的例子,來展示以下如何?.複製代碼 代碼如下:public void testUseAndroidString() { Context context = getContext(); Resources res = null; try
蘋果的Touch Icon相對我們都比較熟悉,是蘋果為了支援網路應用(或者說網頁)添加到案頭需要的表徵圖,有了這些Touch Icon的網頁連結更加和Native應用更相像了。由於蘋果裝置IPod,IPhone,IPad等裝置廣泛,很多網頁都提供了touch icon這種表徵圖資源。由於Android中並沒有及早的有一份這樣的標準,當我們想把網頁添加到案頭時,仍然需要使用蘋果的Touch Icon。Touch
作為Android開發人員,為程式增加許可權是在正常不過的事情了,做法必然是在mainifest中,寫入類似這樣<uses-permission android:name="android.permission.INTERNET" />的資訊. 以靜態申請的形式來完成.
很多人遇到過廣播收不到的問題,比如Google Play推廣安裝廣播沒有收到等,諸如這些問題,又都是什麼原因呢,這篇文章將進行回答.從Android 3.1(HoneyComb) 也就是API 12開始,Android引入了一套新的啟動控制,這就是程式的停止狀態.那讓我們看一下Google對於程式的停止狀態的描述.什麼是程式的停止狀態複製代碼 代碼如下:Starting from Android 3.1, the system's package manager keeps track of
寫這篇文章,做份備忘,簡單滴展示一個帶進度條的Webview樣本,進度條位於Webview上面.樣本圖如下:主Activity代碼:複製代碼 代碼如下:package com.droidyue.demo.webviewprogressbar;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import
這篇文章從系統原始碼分析,講述如何將程式建立的多媒體檔案加入系統的媒體庫,如何從媒體庫刪除,以及大多數程式開發人員經常遇到的無法添加到媒體庫的問題等。本人將通過對原始碼的分析,一一解釋這些問題。Android中的多媒體檔案掃描機制Android提供了一個很棒的程式來處理將多媒體檔案加入的媒體庫中。這個程式就是MediaProvider,現在我們簡單看以下這個程式。首先看一下它的Receiver複製代碼 代碼如下: <receiver
如果在Android中判斷某個線程是否是主線程?對於這個問題,你可能說根據線程的名字,當然這個可以解決問題,但是這樣是最可靠的嗎?萬一某天Google一下子將線程的名字改稱其他神馬東西呢。方法揭曉下面的方法是最可靠的解決方案。複製代碼 代碼如下:public static boolean isInMainThread() { return Looper.myLooper() == Looper.getMainLooper();}實際上,
本文以一個簡單的執行個體為大家介紹Android編程的入門知識,該案例是屬於較早期的執行個體程式,讀者可以對比學習,全面的瞭解Android程式的演化,以加深對Android程式設計的理解。程式運行平台為Android SDK 1.5 + Eclipse +
本文執行個體簡述了Android中Socket通訊的實現方法,具體內容如下:一、socket通訊概述通俗的來說通訊端(socket)是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。它是網路通訊過程中端點的抽象表示,包含進行網路通訊必須的五種資訊:串連使用的協議,本地主機的IP地址,本地進程的協議連接埠,遠地主機的IP地址,遠地進程的協議連接埠。應用程式層通過傳輸層進行資料通訊時,TCP會遇到同時為多個應用程式進程提供並發服務的問題。多個TCP串連或多個應用程式進程可能需要通過同一個
一、首先下載Jar包https://github.com/square/okhttp 如果使用android studio只需要加入依賴compile 'com.squareup.okhttp3:okhttp:3.2.0' 二、下載一張圖片並顯示使用的是hanlder的方式 package com.liunan.okhttpdemo2;import android.graphics.Bitmap;import
本文執行個體講述了Android中AlarmManager基本用法。分享給大家供大家參考,具體如下:AlarmManager的作用文檔中的解釋是:在特定的時刻為我們廣播一個指定的Intent。簡單的說就是我們設定一個時間,然後在該時間到來時,AlarmManager為我們廣播一個我們設定的Intent。對應AlarmManager更深層的瞭解可以參考:http://www.jb51.net/article/90491.htmandroid提供了四種類型的鬧鐘:①
本文執行個體講述了Android鬧鈴服務AlarmManager用法。分享給大家供大家參考,具體如下:對應AlarmManage有一個AlarmManagerServie服務程 序,該服務程式才是正真提供鬧鈴服務的,它主要維護應用程式註冊下來的各類鬧鈴並適時的設定即將觸發的鬧鈴給鬧鈴裝置(在系統中,linux實現的裝置名稱 為"/dev/alarm"),並且一直監聽鬧鈴裝置,一旦有鬧鈴觸發或者是鬧鈴事件發生,AlarmManagerServie服務程式就會遍曆鬧鈴列
Android中WebView的一些簡單用法一直想寫一個關於 WebView 控制項的 一些簡單運用,都沒什麼時間,這次也是擠出時間寫的,裡面的一些基礎知識就等有時間再更新講解一下,今天就先把項目出來做一些簡單介紹,過多的內容可以看我的源碼,都傳到github上了。下面是項目的效果圖:應用用到的是 MVP 設計模式,對這種模式還不太瞭解的可以先自行google一下,不然項目估計會看的暈,雖然My Code都很簡潔的。對於MVP 可以帶著一個思路看源碼,那就是 activity(或其他組件)通過
前言對於移動開發人員來說,“將耗時的任務放到子線程去執行,以保證UI線程的流暢性”是線程編程的第一金科玉律,但這條鐵則往往也是UI線程不怎麼流暢的主因。我們在督促自己更多的使用線程的同時,還需要時刻提醒自己怎麼避免線程失控。多線程編程之所以複雜原因之一在於其並行的特性,人腦的工作方式更符合單線程串列的特點。一個接著一個的處理任務是大腦最舒服的狀態,頻繁的在任務之間切換會產生“頭痛”這類系統異常。人腦的多任務和電腦的多任務效能差異太大導致我們在設計並行的商務邏輯之時,很容易犯錯。另一個複雜點在於線
看見網上一些回調的解釋都很複雜的,特別基於Android的自訂回調,感覺一頭霧水,於是乎,我也寫了這篇基於我對回調的解釋。先來看一個簡單的例子:有兩個類 ClassA ,和 ClassB, ClassA調用ClassB裡面的方法,public class ClassB { public void method_from_classB(){ for(int i=0;i<10;i++) System.out.print("..."+i); }}public
service組件跟activity組件及其類似,可以說service是沒有介面的activity,當然service的生命週期和activity還是有一定的差別的。 service組件一般用在什麼地方的,上面講了service組件沒有介面,不用跟使用者直接互動,所以service組件一般運行在後台。比如做一些不需要介面的資料處理等等。開發service需要兩個步驟:
一 Paint ,Canvaspublic class drawView extends View{ private Paint paint1; public drawView(Context context,AttributeSet set ){ super(context,set); } public void onDraw(Canvas canvas){ super.onDraw(canvas); //new 一個畫筆對象