Ⅰ 求一個android實例,跟隨手指的小球,要詳細!!!!!!
這是我之前寫的一個按鈕跟隨手指的,你可以看下,界面的話很簡單,就一個按鈕,主要是通過Activity本身自帶的事件來實現的。
package com.chapter4;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.AbsoluteLayout;
import android.widget.Button;
public class Activity2 extends Activity{
/** Called when the activity is first created. */
final static int WRAP_CONTENT=-2;//表示WRAP_CONTENT的常量
final static int X_MODIFY=4;//在非全屏模式下X坐標的修正值
final static int Y_MODIFY=52;//在非全屏模式下Y坐標的修正值
int xSpan;//在觸控筆點擊按鈕的情況下相對於按鈕自己坐標系的
int ySpan;//X,Y位置
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2_main);
Button bok=(Button)this.findViewById(R.id.Button01);
bok.setOnTouchListener(
new OnTouchListener()
{
public boolean onTouch(View view, MotionEvent event) {
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN://觸控筆按下
xSpan=(int)event.getX();
ySpan=(int)event.getY();
break;
case MotionEvent.ACTION_MOVE://觸控筆移動
Button bok=(Button)findViewById(R.id.Button01);
//讓按鈕隨著觸控筆的移動一起移動
ViewGroup.LayoutParams lp=
new AbsoluteLayout.LayoutParams
(
WRAP_CONTENT,
WRAP_CONTENT,
(int)event.getRawX()-xSpan-X_MODIFY,
(int)event.getRawY()-ySpan-Y_MODIFY
) ;
bok.setLayoutParams(lp);
break;
}
return true;
}
}
);
}
@Override
public boolean onKeyDown (int keyCode, KeyEvent event)
{//鍵盤鍵按下的方法
Button bok=(Button)this.findViewById(R.id.Button01);
bok.setText(keyCode+" Down");
return true;
}
@Override
public boolean onKeyUp (int keyCode, KeyEvent event)
{//鍵盤鍵抬起的方法
Button bok=(Button)this.findViewById(R.id.Button01);
bok.setText(keyCode+" Up");
return true;
}
public boolean onTouchEvent (MotionEvent event)
{
//讓按鈕隨著觸控筆的移動一起移動
Button bok=(Button)this.findViewById(R.id.Button01);
ViewGroup.LayoutParams lp=
new AbsoluteLayout.LayoutParams
(
WRAP_CONTENT,
WRAP_CONTENT,
(int)event.getRawX()-xSpan-X_MODIFY,
(int)event.getRawY()-ySpan-Y_MODIFY
) ;
bok.setLayoutParams(lp);
return true;
}
}
Ⅱ 設計一個Android程序,包含一個TextView和一個Button,每次單擊Button時,
1、首先在layout文件夾下面的xml布局文件中,添加代碼來建立Button。
Ⅲ android採用什麼方式管理activity實例
Android採用任務線(Task)的方式來管理Activity的實例搭模。
在開發Android應用時,經常會涉及一些消耗大量系統內存的情況,例如視頻播放、大量圖片或者程序中開啟多個Activity沒有及時關閉等,會導致程序出現錯誤。為了避免這種問題,Google提供了一套完整的機制讓開發人員控制 Android中的任務線。
Android系統中的任務線,類似於一個容器,用於管理所有的Activity實例。在存放Activity時,滿足「先進後出 (First-In/Last-Out )"的原則。
但是使用任務線有以下缺點:粗枝鏈
每開啟一次頁面都會在任務棧中添加一個岩孫Activity,而只有任務棧中的Activity全部清除出線時,任務線被銷毀,程序才會退出。這樣就造成了用戶體驗差, 需要點擊多次返回才可以把程序退出。
每開啟一次頁面都會在任務棧中添加一個Activity還會造成數據冗餘, 重復數據太多, 會導致內存溢出的問題(OOM)。為了解決任務棧產生的問題,Android為Activity設計了啟動模式。
在實際開發中,應根據特定的需求為每個Activity指定恰當的啟動模式。Activity的啟動模式有4種,分別是standard、singleTop、singleTask和singlelnstance。在AndroidManifest.xml中,通過<activity>標簽的android:launchMode屬性可以設置啟動模式。
Ⅳ android 五大應用開發框架是什麼
android應用開發框架是 Application Framework,其系統架構由5部分組成,分別是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
1、Linux Kernel (Linux內核)
Android基於Linux 2.6提供核心系統服務,例如:安全、內存管理、進程管理、網路 堆棧、驅動模型。Linux Kernel也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。
2、Android Runtime (運行庫)
Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。
Dalvik虛擬機設計成,在一個設備可以高效地運行多個虛擬機。Dalvik虛擬機可執行文件格式是.dex,dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。 大多數虛擬機包括JVM都是基於棧的,而Dalvik虛擬機則是基於寄存器的。
3、Libraries (程序庫)
Android包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程序框架(application framework)暴露給開發者。
4、Application Framework (應用框架層)
通過提供開放的開發平台,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬體優勢、訪問位置信息、運行後台服務、設置鬧鍾、向狀態欄添加通知等等,很多很多。 開發者可以完全使用核心應用程序所使用的框架APIs。
應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布他的功能且任何其他應用程序可以使用這些功能(需要服從框架執行的安全限制)。這一機制允許用戶替換組件。
5、Applications(應用層)
Android裝配一個核心應用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯系人和其他設置。所有應用程序都是用Java編程語言寫的。Android本身是一套軟體堆迭(Software Stack),或稱為「軟體迭層架構」,迭層主要分成三層:操作系統、中間件、應用程序。
(4)android實常式序擴展閱讀
開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性限制)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。
隱藏在每個應用後面的是一系列的服務和系統,其中包括;
豐富而又可擴展的視圖(Views),可以用來構建應用程序,它包括列表(lists),網格(grids),文本框(textBoxes),按鈕(buttons),甚至可嵌入的web瀏覽器。
內容提供器(ContentProviders)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫),或者共享它們自己的數據
資源管理器(ResourceManager)提供非代碼資源的訪問,如本地字元串,圖形,和布局文件(layoutfiles)。
通知管理器(NotificationManager)使得應用程序可以在狀態欄中顯示自定義的提示信息。
活動管理器(ActivityManager)用來管理應用程序生命周期並提供常用的導航回退功能。