当前位置:首页 » 安卓系统 » 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);
}

热点内容
易语言问道源码 发布:2025-02-09 12:59:03 浏览:661
ip和服务器有关吗 发布:2025-02-09 12:51:26 浏览:950
极光免费脚本 发布:2025-02-09 12:50:33 浏览:394
c存储过程返回结果集 发布:2025-02-09 12:42:00 浏览:150
gs哪个配置性价比高 发布:2025-02-09 12:35:57 浏览:283
java栈数组 发布:2025-02-09 12:33:37 浏览:557
php上传文件form 发布:2025-02-09 12:33:31 浏览:157
冠道如何选择配置 发布:2025-02-09 12:20:21 浏览:971
为什么安卓手机wearpro搜不到手表 发布:2025-02-09 12:16:07 浏览:671
服务器安全怎么做 发布:2025-02-09 12:08:08 浏览:485