目前分類:Android筆記 (435)

瀏覽方式: 標題列表 簡短摘要

示例1:简单的AlertDialog

 215036982  

 
1
2
3
4
5
6
7

戮克 發表在 痞客邦 留言(0) 人氣()

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://cinderella7.blog.51cto.com/7607653/1281178

   一:Dialog

   对话框我们在手机中经常看到,比如当你要退出某个应用时,弹出提示框,问你是不是确定退出,这就是提示框,他可以给出提示信息,也可以让用户选择从而进行某些操作。

  ◆ 分类:

   (1)AlertDialog:提示对话框,给出提示信息

       ①简单提示对话框:仅给出提示信息

       ②可交互提示对话框:添加了按钮之后,与用户交互的提示对话框

       ③自定义界面的提示对话框

   (2)ProgressDialog:进度对话框,比如下载时的提示框

   (3)DatePickerDialog:日期选择对话框,给出日期,供用户选择

戮克 發表在 痞客邦 留言(0) 人氣()

1.平移动画

 

2.旋转动画

3.伸缩动画

4.翻页动画

戮克 發表在 痞客邦 留言(0) 人氣()

privatevoidnoSoftInput(finalEditTextet){

//1、EditText有焦點(focusable為true)阻止輸入法彈出
et.setOnTouchListener(newOnTouchListener(){
//@Override
publicbooleanonTouch(Viewv,MotionEventevent){
//TODOAuto-generatedmethodstub
mCurrentEdit=et;
et.setInputType(InputType.TYPE_Null);//關閉軟鍵盤
returnfalse;
}

戮克 發表在 痞客邦 留言(0) 人氣()

转载:http://www.daniel-journey.com/archives/97

GC的概念

GC是一种自动内存管理程序,与之相对应的是C++采用的内存管理方式。GC主要的职责就是分配内存;保证被引用的对象始终在内存中;把不被应用的对象从内存中释放。被引用的对象称之为Live 对象;不被引用的对象就是Dead对象,是需要回收的。任何事物都有光面和黑暗两面,原因很简单GC是一个很复杂的东西:-)。

GC会自动计算对象被引用的情况,只要对象不在被引用,相应的内存就会被回收,而C++中需要开发人员通过代码来“显示”地回收内存,如果程序员没有回收就会导致内存的泄露(内存泄露的原因有很多种这只是其中一个)。C++中还有经常出现的一个问题是一个对象在还有其他引用存在的情况下,就被程序给回收了,导致其他引用访问该对象时出现严重错误。另外,GC非常重要的一点就避免内存碎片,道理跟windows的磁盘整理一样,把使用中各个内存块整合起来,这样才能保证有足够的空间来存储大对象。

理想的GC

一个理想的GC要能够满足以下几点:

  • 该回收的回收,不改回收的绝不回收
  • GC要快而且GC运行的时候不能导致应用程序的停顿。
  • 限制内存碎片,对象被回收以后,所使用的内存会被回收,如果不加处理内存中就会出现大量的内存碎片,这样就有可能导致因为没有足够的连续空间分配给某些大对象而导致OutofMemory。消除内存碎片的的手段之一就是“内存压缩”。
  • 可扩展性(Scalability),内存的分配和回收都不能成为应用程序的瓶颈。
GC的设计选择
  • 串行回收(Serial)VS并行回收(Parallel)。串行就是不管有多少个CPU,始终只有一个CPU用来执行回收操作,而并行就是把整个回收工作拆分成多个,由多个CPU同时执行。并行回收执行会快,但复杂度增加,另外也有其他一些副作用,比如内存碎片会增加。
  • 并发执行(Concurrent)VS应用程序停止(Stop-the-world)。Stop-the-world的GC方式在执行GC的同时会导致应用程序的暂停。并发执行的GC虽然不会导致应用程序的暂停,但由于并发执行GC要解决和应用程序的执行冲突(应用程序可能会在GC的过称中修改对象),并发执行GC执行的消耗会高于Stop-the-world,而且执行也需要更多的内存堆。
  • 压缩(Compacting)VS不压缩(Non-compacting)VS拷贝(Copying)。为了减少内存碎片,支持压缩的GC会把所有的活对象搬迁到一起,然后将之前占用的内存全部回收。不压缩式的GC顾名思义就是在GC的过程中不压缩内存,较之压缩式的GC,不压缩式的GC回收内存快了,而分配内存慢了,而且无法解决内存碎片的问题。拷贝式的GC会将活对象拷贝到不同的内存区域中,这种方式的优点是源数据可以被认为已经清空并可以用来分配,缺点也很明显,需要拷贝数据和额外的内存。
GC的性能评判标准
  • 生产力(Throughput)—全部时间中不用于GC的比例。
  • GC的开销—全部时间中用于GC的比例。
  • 暂停时间—GC过程中应用程序执行暂停的时间。
  • GC的频率—通过跟应用程序的执行比较来得到GC的执行频率。
  • 支持GC运行所需使用的内存大小—例如heap的大小。
  • GC的及时性(Promptness)—一个对象从被废弃到内存被回收之间的时间差。

戮克 發表在 痞客邦 留言(0) 人氣()

 boolean showSoftInput(View view, int flags, ResultReceiver resultReceiver) boolean showSoftInput(View view, int flags) void showSoftInputFromInputMethod(IBinder token, int flags)public void toggleSoftInput (int showFlags, int hideFlags) public void toggleSoftInputFromWindow (IBinder windowToken, int showFlags, int hideFlags)但是上面InputMethodManager的方法在oncreate(),和onResume()中調用會沒有作用。

  留意:可能是由於View還沒有預備好,所以不起作用。網上找來的理由說是:軟體盤是要在所有view畫完才能顯示。

  可以採用timer或Handler延遲在執行。Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { InputMethodManager imm = (InputMethodManager)vv.getContext().getSystemServi ce(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);Toast.makeText(test.this, "show", Toast.LENGTH_SHORT).show(); } }, 1000);

  調用InputMethodManager的以下方法可以封閉軟鍵盤

  void hideSoftInputFromInputMethod(IBinder token, int flags)

戮克 發表在 痞客邦 留言(0) 人氣()

1.Basic

LocationManager lm = (LocationManager) getSystemService (LOCATION_SERVICE);
String p = lm.getBestProvider (new Criteria () and true);
lm.requestLocationUpdates (p, 10000 and 0, this);  
Location location = lm.getLastKnownLocation (p);

Acquiring in every 10 seconds, because it is position interval zero, when we want being spot with the position, you use zero.

Expedient of position specification Edit

As for Android 2 systems having as an expedient of position specification, the [zatsukuri] position which used the information of telecommunication network and the accurate version which used the radio wave of GPS and there is two. Perhaps manifest

<uses-permission android: name= " android.permission.ACCESS_COARSE_LOCATION "/>
<uses-permission android: name= " android.permission.ACCESS_FINE_LOCATION "/>

It is thought that it is corresponding.

As for network edition position specification being quick, the response is good, but rather about 100m being unconcerned with [zatsukuri], it slips. The version of GPS specifies accurately in the error about of 15m, but because time is required to for circumstance plug specification very, it does not face to the application which is moved ill-smelling when and, it enters into the shadow of the thing, becoming unable to use directly, also stability is low.

As the name of Provider

LocationManager.GPS_PROVIDER

With

LocationManager.NETWORK_PROVIDER

Is given

GPS_PROVIDER

戮克 發表在 痞客邦 留言(0) 人氣()

判斷快捷方式是否已經建立,快捷方式訊息是儲存在com.android.launcher的launcher.db的favorites表中,

java程式碼:

  1. boolean isInstallShortcut = false ;
  2. final ContentResolver cr = context.getContentResolver();
  3. final String AUTHORITY = "com.android.launcher.settings";
  4. final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true");
  5. Cursor c = cr.query(CONTENT_URI, new String[] {"title","iconResource" }, "title=?",
  6. new String[] {"XXX" }, null);//XXX表示應用名稱。
  7. if(c!=null && c.getCount()>0){
  8. isInstallShortcut = true ;
  9. }
  10. /*try {
  11. while (c.moveToNext()) {
  12. String tmp = "";
  13. tmp = c.getString(0);
  14. }
  15. } catch (Exception e) {
  16. } finally {
  17. c.close();
  18. }*/
  19. return isInstallShortcut ;
  20. }

戮克 發表在 痞客邦 留言(0) 人氣()

轉載自 http://www.uml.org.cn/jmshj/201303115.asp

 

样式

設備和顯示器

Android有百萬計的手機、平板電腦和其他設備,這些設備都有各種屏幕尺寸。利用Android的靈活的布局系統,您可以創建小到手機大到平板的各種應用程序。

變通

拉伸和壓縮布局,以适應不同的高度和寬度。

優化布局

在大型設備中有額外的屏幕空間利用。但在移動手持設備上需要創建复合的視圖,結合多個視圖來顯示更多的內容,並且是這些視圖易於導航。

戮克 發表在 痞客邦 留言(0) 人氣()

http://www.race604.com/android-studio-with-ndk/

 

Android Studio中NDK开发

05 January 2015 on Android之前有人问到怎么使用Android Studio进行NDK开发,经过网上搜索,自己也尝试了一下,用Android Studio进行NDK开发比Eclipse更加灵活方便。

 

以下是翻译自NDK With Android Studio这篇文章。

在ADT中进行NDK开发非常简单,在Android Studio进行NDK开发也同样的容易。NDK开发主要有两中情况:一种是使用已经编译好的.so动态库;一种是使用c/c++源代码开发。下面分别介绍。

使用预编译好的.so动态库

你可以先用ndk-build工具先编译好.so,然后在Android Studio中引用。 这种情况比较件简单,只要把的.so文件放到相应的目录即可。如下所示:

  • [module_name]
    • [src]
      • [main]
        • [jniLibs]
          • [armeabi]
          • [armeabi-v7a]
          • [x86]
          • [mips]

注意jniLibs目录是放在module下面,在Android Studio中效果如下: jniLibsPath

现在就可以在代码中直接载入此库了,如下:

String libName = "helloNDK"; // 库名, 注意没有前缀lib和后缀.so  
System.loadLibrary( libName );  

如果你不想把.so放在上面的默认路径,可以在buid.gradle中进行如下配置:

戮克 發表在 痞客邦 留言(0) 人氣()

41a956a3bbf2eb65ecfe93f536f4d08d  

package B.domp;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

戮克 發表在 痞客邦 留言(0) 人氣()

分享到 新浪微博騰訊微博收藏+13 踩 頂 0 SAX是一種佔用記憶體少且解析速度快的解析器,它採用的是事件啟動,它不需要解析完整個文檔,而是按照內容順序 看文檔某個部分是否符合xml語法,如果符合就觸發相應的事件,所謂的事件就是些回檔方法(callback),這些方法 定義在ContentHandler中,下面是其主要方法:



startDocument:當遇到文檔的時候就觸發這個事件 調用這個方法 可以在其中做些預處理工作
startElement: (String namespaceURI,String localName,String qName,Attributes atts)當遇開始標籤的時候就會觸發這個方法。
endElement(String uri,String localName,String name):當遇到結束標籤時觸發這個事件,調用此法可以做些善後工作。
charachers(char [] ch,int start,int length):當遇到xml內容時觸發這個方法,用new String(ch,start,length)可以接受內容。



戮克 發表在 痞客邦 留言(0) 人氣()

07132644_16NB  
本來想直接看sdk中的doc文檔來學習android的,結果發現裡面的英文資料,學起來速度有點慢,遂買了本android的教程書回來學習,剛好看到一個書裡面一個使用java.net.URL訪問網頁的例子,之前在做採集的時候,使用了html解析器jsoup來獲取頁面所有連結,順便試下把jsoup放進android中使用下,發現jsoup在android中能直接使用,測試例子代碼(本文只作了簡單測試):
tt.jsp頁面
HTTP://www.blogjava.net/pengo/archive/2011/03/14/346176.html
01<%@ page language="java" contentType="text/html; charset=UTF-8"

 

02 pageEncoding="UTF-8"%>

 

03 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "HTTP://www.w3.org/TR/html4/loose.dtd">

戮克 發表在 痞客邦 留言(0) 人氣()

在音樂跟電視的專案中,很多都是使用了典型的按照介面規範的流程處理方式。05174753_MOMn  


例如上圖,用戶端發送一個request請求,服務端就會以xml的資料格式返回一個response回應。但是在用戶端介面展示xml資料並不是那麼人性化與現實,所以在此之前,會對xml進行資料解析。縱觀軟終端的大部分專案中,在用戶端進行資料解析採用的是SAX(Simple API for XML),這是有道理的。

 

SAX的工作原理簡單地說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束、文檔(document)結束等地方時通知事件處理函數,由事件處理函數做相應動作,然後繼續同樣的掃描,直至文檔結束。

 

大多數SAX實現都會產生以下類型的事件:
在文檔內每一XML元素接受解析的前後觸發元素事件。
在文檔的開始和結束時觸發文檔處理事件。
在處理文檔的DTD或Schema時產生DTD或Schema事件。
任何中繼資料通常都由單獨的事件交付。

戮克 發表在 痞客邦 留言(0) 人氣()

本實例解析xml使用的是繼承DefaultHandler類,此類就是java中封裝好的xml解析器類,下面看代碼詳細說明:

 

第一步:首先說明下xml文件,Java Sax解析是按照xml文件的順序一步一步的來解析,在解析xml文件之前,我們要先了解xml文件的節點的種類,一種是ElementNode,一種是TextNode。如下面的這段people.xml,其中,像<people>、<person>這種節點就屬於ElementNode,而張三這種就屬於TextNode,001屬於Attributes的值

 

 

<?xml version="1.0" encoding="UTF-8"?>
<people> 
  <person personid="001"> 
    <name>張三</name> 
    <tel>12345</tel> 
  </person> 
    
  <person personid="002"> 
    <name>李四</name> 
    <tel>678910</tel> 
  </person> 
</people> 

 

 

第二步:我們为了代碼的复用性高點我們先繼承DefaultHandler創建一個BaseHandler基礎的解析器抽象類,詳細說明和代碼如下:

 

 

戮克 發表在 痞客邦 留言(0) 人氣()

什麼是ALSA 

ALSA是Advanced Linux Sound Architecture,高級Linux聲音架構的簡稱,它在Linux作業系統上提供了音訊和MIDI(Musical Instrument Digital Interface,音樂設備數位化介面)的支援。在2.6系列內核中,ALSA已經成為預設的聲音子系統,用來替換2.4系列內核中的OSS(Open Sound System,開放聲音系統)。  ALSA的主要特性包括:高效地支援從消費類入門級音效卡到專業級音訊裝置所有類型的音訊介面,完全模組化的設計, 支援對稱多處理(SMP)和執行緒安全,對OSS的向後相容,以及提供了使用者空間的alsa-lib庫來簡化應用程式的開發。

 

Gentoo上的ALSA
從歷史上來說,Gentoo提供了兩種方法可以使ALSA運行在您的系統上:內核自帶的驅動和外部的alsa-driver套裝軟體。這兩種方案基本上完成的是同一項任務;這使得提供對外部套裝軟體的支援異常困難和耗時。Gentoo維護者決定不再繼續對alsa-driver套裝軟體進行支援,而是將他們的資源集中在Linux內核中的ALSA驅動部分。這份指南將只集仲介紹如何通過在內核自帶的驅動來配置ALSA。  Jaroslav Kysela過去是這個專案的領導者,這個專案開始于為1998年Gravis Ultrasound所開發的驅動,它一直作為一個單獨的套裝軟體開發,直到2002年他被引進入 linux內核的開發版本 (2.5.4-2.5.5)1。從2.6 版本開始ALSA成為Linux內核中預設的標準音頻驅動程式集,OSS則被標記為廢棄。  ALSA是一個完全開放原始碼的音訊驅動程式集,除了像OSS那樣提供了一組內核驅動程式模組之外,ALSA還專門為簡化應用程式的編寫提供了相應的函式程式庫,與OSS提供的基於ioctl的原始程式設計介面相比,ALSA函式程式庫使用起來要更加方便一些。利用該函式程式庫,開發人員可以方便快捷的開發出自己的應用程式,細節則留給函式程式庫內部處理。當然 ALSA也提供了類似于OSS的系統介面,不過ALSA的開發者建議應用程式開發者使用音訊函式程式庫而不是驅動程式的API。  Linux中ALSA的主要檔:  include/sound/driver.h  sound/core/*.c




  注:OSS(Open Sound System)是Linux中的另外一個音訊驅動程式框架。




來自百度百科:HTTP://baike.baidu.com/view/1558228.htm




文章標籤

戮克 發表在 痞客邦 留言(0) 人氣()

Table of Contents

 

簡介
國際化
版本資訊
對於休眠(suspend)的簡單介紹
Linux Suspend 的流程
相關的檔:
準備, 凍結進程
文章標籤

戮克 發表在 痞客邦 留言(0) 人氣()

《Android相机、相册获取图片显示并保存到SD卡》中说明了在直接调用Android相机拍照时返回Bitmap所引发的一个问题。今天,把在上篇附上的Demo加强了一下,增加了截图的功能。具体需求是:拍照或相册选取完毕后,先进入系统裁剪界面,裁剪完毕后再显示或保存图片,下面看下截图部分所要调用的代码:

[java] view plaincopy

 

 
  1. //截取图片
  2.     public void cropImage(Uri uri, int outputX, int outputY, int requestCode){
  3.         //裁剪图片意图
  4.         Intent intent = new Intent("com.android.camera.action.CROP");
  5.         intent.setDataAndType(uri, "image/*");
  6.         intent.putExtra("crop""true");
  7.         //裁剪框的比例,1:1
  8.         intent.putExtra("aspectX"1);
  9.         intent.putExtra("aspectY"1);
  10.         //裁剪后输出图片的尺寸大小
  11.         intent.putExtra("outputX", outputX);
  12.         intent.putExtra("outputY", outputY);
  13.         //图片格式
  14.         intent.putExtra("outputFormat""JPEG");
  15.         intent.putExtra("noFaceDetection"true);
  16.         intent.putExtra("return-data"true);
  17.         startActivityForResult(intent, requestCode);
  18.     }

例如,从相册选择图片后先调用裁剪功能代码如下:

[java] view plaincopy

 

 

戮克 發表在 痞客邦 留言(0) 人氣()

如题,这个需求本不是一个很复杂的过程,但是却存在一些隐患,我也是最近在项目中碰到这个问题,将Android通过相机或相册获取图片并最终显示在界面上做了一个小研究,现将一些结果和附上的一个Demo叙述如下:

做过类似需求的同学都知道,在Activity中通过如下代码可以启动相机,然后在重写的onActivityResult方法中可以获取到返回的照片数据:

[java] view plaincopy

 

 
  1. Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  2. startActivityForResult(openCameraIntent, TAKE_PICTURE);

问题来了,不知大家是否有发现,在onActivityResult方法里通过Intent的getData方法获取的数据转换成bitmap并显示在界面上,有时候会有取不到数据,或者显示的bitmap会非常小,如果将bitmap保存到sd卡后会发现,图片的分辨率很低,并且图片大小也是经过压缩的,不管将相机的像素设置多高,最后通过这种方式返回的bitmap总是经过压缩了的。如果想获得理想的照片大小和分辨率改如何处理呢?以下是我的处理方法,虽然不是最好,但是帮我解决了这个需求。我先来简述一下为什么返回的图片是经过了压缩的。

大家都知道,现在手机像素少则500W或800W,多则4KW(某亚),就拿常见的800W像素的相机拍出来的照片来说,分辨率大概在3200*2400左右,我的测试机型是LG optimus 2x,2.3.7的系统,用800W像素拍出来大概就是这个分辨率,照片大小在2M左右。试想一下,在Android系统中bitmap占用4个字节,3200*2400*4=?,结果大家自己算算,如果为了一张图片,耗用这么大的内存,肯定是不合理的,并且,官方文档中有说明,Android系统分配给每个应用的最大内存是16M,所以,系统为了防止应用内存占用过大,对于在应用内通过相机拍摄的图片最终返回来的结果进行了压缩,压缩后的图片变得很小,通过之前说的getData的方式只能满足比如显示个头像这样的需求,如果要显示大图,就会出现模糊的情况。那如何获取清晰的大图呢?我的解决思路如下:

1.拍照时,将拍得的照片先保存在本地,通过修改之前的代码如下:

戮克 發表在 痞客邦 留言(0) 人氣()

自定义控件的步骤

1.自定义类继承自View或View的子类;

2.重写构造方法

(1)MyView(Context);  // 在代码中new 对象时调用此方法

(2)MyView(Context,AttributeSet);  // 在XML布局文件中声明此View,创建对象时,由系统自动调用

(3)MyView(Context,AttributeSet,int);  // 与方法2用法一样,只是多了一个参数:默认样式

3.重写相关方法,实现我们的需求,一般要重写的方法:

(1)onMeasure(int,int);  // 系统测量控件大小时调用该方法

(2)onLayout(boolean,int,int,int,int);  // 系统为该view 指定位置时调用此方法,子view的位置,自身只有建议权,决定权在父view的手中。一般不需要重写。

(3)onDraw(Canvas);  // 为本view绘制内容时,调用该方法。

戮克 發表在 痞客邦 留言(0) 人氣()