當前位置:首頁 » 安卓系統 » android鍵值表

android鍵值表

發布時間: 2023-06-01 21:00:05

Ⅰ android xml資源數組的問題 xml文件內容如下,我要怎麼獲取item鍵值對中name這個

假設准備好的xml是
<string-array name="names">
<item >shanghai</item>
<item >beijing</item>
<item >hongkong</item>
</string-array>
<string-array name="values">
<item >021</item>
<item >010</item>
<item >00852</item>
</string-array>
假設要獲得 "shanghai"對應的值,可以參考以下函數:

public String getAreaCode(String cityName) {
String[] names = getResources().getStringArray(R.array.names);
String[] values = getResources().getStringArray(R.array.values);
for (int i = 0; i < names.length; i++) {
if (names[i].equals(cityName)) {
return values[i];
}
}
return null;
}

Ⅱ android HOME長按之後的鍵值是多少

home鍵在KeyEvent中的鍵值為3.

ublic static final int KEYCODE_HOME = 3;

當用戶按下home鍵的時候(包括長按),程序會進入到PhoneWindowManager.java類中的public boolean interceptKeyBeforeDispatching(WindowState win, int action, int flags,int keyCode, int scanCode, int metaState, int repeatCount, int policyFlags)這個方法中進行處理。如果用戶是連續點擊home,此時就要執行長按home事件了。


即執行mHandler.postDelayed(mHomeLongPress,ViewConfiguration.getGlobalActionKeyTimeout());對應的代碼。也就會跳轉到mHomeLongPress這個Runnable接著往下執行。


interceptKeyBeforeDispatching這個方法位於PhoneWindowManager.java中。


位置為:frameworks.java

(WindowStatewin,intaction,intflags,
intkeyCode,intscanCode,intmetaState,intrepeatCount,intpolicyFlags){
finalbooleandown=(action==KeyEvent.ACTION_DOWN);
...
//4、用戶按下home,然後馬上釋放。此時這個條件成立。將之前postDelayed的事件remove掉。此時就不會執行長按home事件。
if((keyCode==KeyEvent.KEYCODE_HOME)&&!down){
mHandler.removeCallbacks(mHomeLongPress);
}
//5、第一次按下home,mHomePressed為false。
if(mHomePressed){
if(keyCode==KeyEvent.KEYCODE_HOME){
//a、如果用戶連續按下home,此時暫時沒有up事件。所以就不走這里。
//b、如果用戶沒有連續按下home,此時過來的是up(move或者http://www.tiecou.com/)事件。即!down為true,執行該方法
if(!down){
mHomePressed=false;
if(!canceled){
booleanincomingRinging=false;
try{
ITelephonytelephonyService=getTelephonyService();
if(telephonyService!=null){
incomingRinging=telephonyService.isRinging();
}
}catch(RemoteExceptionex){
Log.w(TAG,"()",ex);
}

if(incomingRinging){
Log.i(TAG,"IgnoringHOME;there'saringingincomingcall.");
}else{
//單擊home處理
launchHomeFromHotKey();
}
}else{
Log.i(TAG,"IgnoringHOME;eventcanceled.");
}
}
}
returntrue;
}

...

//1、第一次處理home按下
if(keyCode==KeyEvent.KEYCODE_HOME){

//Ifasystemwindowhasfocus,thenitdoesn'tmakesense
//.
WindowManager.LayoutParamsattrs=win!=null?win.getAttrs():null;
if(attrs!=null){
finalinttype=attrs.type;
if(type==WindowManager.LayoutParams.TYPE_KEYGUARD
||type==WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG){
//the"app"iskeyguard,sogiveitthekey
returnfalse;
}
finalinttypeCount=WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length;
for(inti=0;i<typeCount;i++){
if(type==WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[i]){
//don'tdoanything,butalsodon'tpassittotheapp
returntrue;
}
}
}
//2、第一次按下home,會調用postDelayed發送一個延時處理的操作。同時將mHomePressed置為true。
//如果第5步沒有進入if(!down),此時就要執行長按home方法了。
if(down&&repeatCount==0){
if(!keyguardOn){
mHandler.postDelayed(mHomeLongPress,ViewConfiguration.getGlobalActionKeyTimeout());
}
mHomePressed=true;
}
returntrue;
}//其他鍵的處理
elseif(...){...}

Ⅲ Android基礎知識

一、activity

1.一個activity就是一個類,繼承activity;

2.需要復寫onCreate()方法;

3.每一個activity都需要在AndroidMainfest.xml清單上進行配置;

4.為activity添加必要的控制項。

二、布局

線性布局:LinearLayout

1.填滿父空間:fill_parent、match_parent

2.文本多大空間就有多大:warp_content

3.文字對齊方式:gravity

4.占屏幕的比例:layout_weight="1"  水平方向,則width=0,垂直方向,則height=0

5.一行顯示,空間不夠會省略:singleLine="ture"  false會換行

6.背景:background="#ffffff"

7.水平布局:orientation="horizontal"

垂直布局:orientation="vertivcal"

表格布局:TableLayout

1.內邊距:padding

2.外邊距:marginLeft\Start、Right\End、Top、Bottom

三、RelativeLayout相對布局

layout_above 將該控制項的底部置於給定ID控制項之上

layout_below 將該控制項的頂部置於給定ID控制項之下

layout_toLeftOf 將該控制項的右邊緣和給定ID控制項的左邊緣對齊

layout_toRightOf 將該控制項的左邊緣和給定ID控制項的右邊緣對齊

layout_alignBaseline 該控制項的baseline和給定ID的控制項的Baseline對齊

layout_alignBottom 該控制項的底部邊緣和給定ID的控制項的底部邊緣對齊

layout_alignLeft 該控制項的左邊緣和給定ID的控制項的左邊緣對齊

layout_alignRight 該控制項的右邊緣和給定ID的控制項的右邊緣對齊

layout_alignTop 該控制項的頂部邊緣和給定ID的控制項的頂部邊緣對齊

layout_alignparentBottom 如果該值為true,則該控制項的底部和父控制項的底部對齊layout_alignParentLeft 如果該值為true,則該控制項的左邊和父控制項的左邊對齊

layout_alignParentRight 如果該值為true,則該控制項的右邊和父控制項的右邊對齊

layout_alignParentTop 如果該值為true,則該控制項的上邊和父控制項的上邊對齊

layout_centerHorizontal 如果該值為true,則該控制項將被置於水平方向的中央

layout_centerInParent 如果該值為true,則該控制項將被置於父控制項水平和垂直方向的中央

layout_centerVertival 如果該值為true,則該控制項將被置於垂直方向的中央

四、一個Intent對象包含一組信息

1.Component name

2.Action

3.Data

4.Category

5.Extras

6.Flags

Intent intent = new Intent(this, SecondActivity.class);

startActivity(intent);  //startActivity方法

intent.putExtra("Key", "Value");  //鍵值對

intent = getIntent();

String value = intent.getStringExtra("Key");    //通過鍵提取數據

五、初級控制項:EditText、TextView、Button

1.獲取EditText的值

String value = EditText.getText().toString();

2.將值放到Intent對象中

Intent intent = new Intent();

intent.putExtra("one",value )

intent.setCalss(Activity.this, OtherActivity.class);

3.使用這個Intent對象來啟動Otheractivity

Activity.this.startActivity(intent);

4.將監聽器的對象綁定到按鈕對象上

button.setOnclickListener(new Listener());

5.得到Intent對象當中的值

Intent intent = getIntent();

String value1 = intent.getStringExtra("one");

int value2 = Integer.parseInt(value);

六、其他初級控制項使用

①ImageView

②RadioGroup和RadioButton

setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener())

③Checkbox

setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener())

④Menu

1.當客戶點擊MENU按鈕的時候,調用onCreateOptionMenu()方法

public boolean onCreateOptionMenu(Menu menu){

menu.add(0,1,1,R.string.id);

}

2.當客戶點擊MENU內部的具體某一個選項時,調用onOptionItemSelected()方法

public boolean onOptionItemSelected(MenuItem item){

if(item.getItemId() == 1){

finish();

}

return super.onOptionItemSelected(item);

}

七、Activity的生命周期

1.第一次創建時調用

protected void onCreat(Bundle saveInstanceState);

2.顯示出來時調用

protected void onStrat();

3.獲得用戶焦點時調用(可操作)

protected void onResume();

4.點擊彈出第二個Activity時調用

protected void onPause();

5.當第一個Activity不可見時調用

protected void onStop();

6.當返回第一個Activity時調用,代替OnCreate,因為沒被銷毀

protected void onRestart();

7.當返回第一個Activity時調用(先執行onStop,在執行,因為第二個Activity被銷毀,不能返回獲取,只能通過onCreat,onStart,onResume再創建)

protected void onDestory();

八、Task

1.Task是存放Activity的Stack棧。當點擊啟動第二個Activiry時,第一個Activtiy會被壓入Stack棧當中,第二個Activity會位於棧的頂部;當返回第一個Activtiy時,第二個Activity會被彈出Stack,第一個Activity會位於棧的頂部,以此類推。

注釋:當調用finish()時,當前的Activity會被Destory掉,棧中的Activity會消失。

2.當Activity都從Stack退出後,則就不存在Task。

九、高級控制項

①進度條ProgressBar

水平進度條style="?android:attr/progressBarStyleHorizontal"

圓圈進度條style="?android:attr/progressBarStyle"

用戶可視的visibility="gone"

②列表ListView

十、其他控制項

A.下拉菜單Spinner

1.創建一個ArrayAdapter:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(

this, //指上下文對象

R.array.plant_array, //引用了在文件中定義的String數組

android.R.layout.simple_spinner_item);//用來指定Spinner的樣式,可替換自定義

adapter.setDropDownViewResource(

android.R.layout.simple_spinner_dropdown_item);//設置Spinner當中每個條目的樣式

2.得到Spinner對象,並設置數據:

spinner=(spinner)findViewById(R.id.spinnerId);

spinner.setAdapter(adapter);

spinner.setPrompt("測試");//標題

3.創建監聽器

class SpinnerOnSelectListener implements OnItemSelectedListener{

@override

public void onItemSelected(

AdapterView<?> adapterView,//整個列表對象

View view,//被選中的具體條目對象

int position,//位置

long id){ //id

String selected = adapterView.getItemAtPosition(position).toString();

}

@override

public void onNothingSelected(AdapterView<?> adapterView){

S.o.p("nothingSelected");

}

}

4.綁定監聽器

spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());

註:第二種動態設計

1.創建ArrayList對象

List<String> list = new ArrayList<String>();

list.add("test1");

2. 調用方法

ArrayAdapter adapter = new ArrayAdapter(

this, //指上下文對象

R.layout.item, //引用了指定了下拉菜單的自定義布局文件

R.id.textViewId,//id

list);//數據

3.得到Spinner對象,並設置對象

spinner.setAdapter(adapter);

spinner.setPrompt("測試");//標題

3.創建監聽器

class SpinnerOnSelectListener implements OnItemSelectedListener{

@override

public void onItemSelected(

AdapterView<?> adapterView,//整個列表對象

View view,//被選中的具體條目對象

int position,//位置

long id){ //id

String selected = adapterView.getItemAtPosition(position).toString();

}

@override

public void onNothingSelected(AdapterView<?> adapterView){

S.o.p("nothingSelected");

}

}

4.綁定監聽器

spinner.setOnItemSelectedListener(new SpinnerOnSelectListener());

B.DatePicker和DatePickerDialog

1.聲明一個監聽器,使用匿名內部類

DatePickerDialog.OnDateSetListener onDateSetListener

= new DatePivkerDialog.OnDateSetListener(){

public void onDateSet(

DatePicker view,

int year,

int monthOfYear,

int dayOfMonth){

S.o.p(year+"-"+motnOfYear+"-"+dayOfMonth)

}

}

2.復寫onCreateDialog(int id)方法:

@override

protected Dialog onCreateDialog(int id){

switch(id){

case DATE_PICKER_ID:

return new DatePickerDialog(this,onDateSetListener,2019,11,25);

}

return null;

}

3.使用時調用showDialog()方法

showDialog(DATE_PICKER_ID);

C.AutoCompleteTextView

B.Widget

C.Animatin

十一、實現ContentProvider過程

1.定義一個CONTENT_URI常量

2.定義一個類,繼承ContentProvider

3.實現query、insert、update、delete、getType和onCreate方法

4.在AndroidManifest.xml當中進行聲明

Ⅳ Android Retrofit詳解

Retrofit 是一個 RESTful 的 HTTP 網路請求框架的封裝,網路請求的工作本質上是 OkHttp 完成,而 Retrofit 僅負責 網大知絡祥橘請求介面的封裝

1.添加Retrofit庫的依賴:

後面三個是可選的,分別是數據解析器和gson,以及rxjava支持的依賴

2.創建 用於描述網路請求 的介面
Retrofit將 Http請求 抽象成 Java介面:採用 註解 描述網路請求參數 和配置網路請求參數

3.創建Retrofit實例

4.發送請求
請求分為同步請求和非同步請求

response.body()就是Reception對象,網路請求的完整 Url =在創建Retrofit實例時通過滾宴消.baseUrl()設置 +網路請求介面的註解設置(下面稱 「path「 )
整合的規則如下:

上面我們用了@GET註解來發送Get請求,Retrofit還提供了很多其他的註解類型

1.@GET、@POST、@PUT、@DELETE、@HEAD分別對應 HTTP中的網路請求方式
2.@HTTP替換@GET、@POST、@PUT、@DELETE、@HEAD註解的作用 及 更多功能拓展
具體使用:通過屬性method、path、hasBody進行設置

1.@FormUrlEncoded
表示發送form-encoded的數據,每個鍵值對需要用@Filed來註解鍵名,隨後的對象需要提供值。
2.@Multipart
表示發送form-encoded的數據(適用於 有文件 上傳的場景),每個鍵值對需要用@Part來註解鍵名,隨後的對象需要提供值。

1.@Header & @Headers
添加請求頭 &添加不固定的請求頭

2.@Body
以 Post方式 傳遞 自定義數據類型 給伺服器,如果提交的是一個Map,那麼作用相當於 @Field,不過Map要經過 FormBody.Builder 類處理成為符合 Okhttp 格式的表單,如:

3.@Field & @FieldMap
發送 Post請求 時提交請求的表單欄位,與 @FormUrlEncoded 註解配合使用

4.@Part & @PartMap
發送 Post請求 時提交請求的表單欄位,與@Field的區別:功能相同,但攜帶的參數類型更加豐富,包括數據流,所以適用於 有文件上傳 的場景,與 @Multipart 註解配合使用

5.@Query和@QueryMap
用於 @GET 方法的查詢參數(Query = Url 中 『?』 後面的 key-value)
如:url = http://www.println.net/?cate=android ,其中,Query = cate
配置時只需要在介面方法中增加一個參數即可:

6.@Path
URL地址的預設值

7.@Url
直接傳入一個請求的 URL變數 用於URL設置

Ⅳ android的手機,鍵盤定義fn鍵,用作數字和字母切換,請問這個鍵值應該定義成多少

如果是自定義鍵盤裡面的話,xml文件裡面的簡直可以是-3,如下內容:
<Key android:codes="-3" android:keyWidth="20%p"
android:keyIcon="@drawable/sym_keyboard_done"
android:keyEdgeFlags="left" />

Ⅵ Android初學 Map<String,String>是什麼

Map是一個介面 代表一個key-value 鍵值對 <string,string>表示 key和value都是String類型的
既可以通過key查找對應的value也可以反過來查找,Map中都提供了對應的方法。
Map是java中的一種數據結構,所以可能比較陌生。可以通過深入了解java語言特性掌握

Ⅶ android、java解析string中的鍵值對問題

不可直接使用JSON解析,你可以通過字元串處理先將數據轉成JSON格式,然後再解析,需要轉換成JSON格式如下:

network:{ ssid:"nn6yywifi1" , psk:"88888888" , key_mgmt:"WPA-PSK" , priority:"218"}

Ⅷ 請教如何查看android鍵值定義

在代碼里看就可以,如

public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 查看android鍵值定義
KeyEvent.(按Alt+/查看所有定義的)
return super.onKeyDown(keyCode, event);
}

熱點內容
安卓43怎麼升級44 發布:2025-02-09 09:51:33 瀏覽:463
美國雲伺服器快還是香港快 發布:2025-02-09 09:34:33 瀏覽:988
怎麼解壓qq文件 發布:2025-02-09 09:18:14 瀏覽:581
安卓最新怎麼調靈敏度更穩 發布:2025-02-09 09:12:44 瀏覽:400
豌豆莢如何用安卓手機下載 發布:2025-02-09 09:11:57 瀏覽:213
吃雞腳本輔助 發布:2025-02-09 09:09:29 瀏覽:6
sessionidpython 發布:2025-02-09 09:08:53 瀏覽:276
華為手機驗證碼和密碼忘了是多少 發布:2025-02-09 08:53:53 瀏覽:799
逆戰筆記哪個配置好玩 發布:2025-02-09 08:53:04 瀏覽:600
怎麼打開電腦雲伺服器 發布:2025-02-09 08:36:01 瀏覽:220