1.在res目录下新建目录values-zh-rCN,并在values-zh-rCN目录下新建strings.xml,可以根据安卓系统的操作语言的不同显示相应的语言。
2.LogCat(后台日志监控):
5个打印级别:
verbose详细,debug调试,info通知,warn警告,error错误
过滤器
增加System.out过滤器
3.签名的意义:为了保证每个应用程序开发商合法ID,防止部分开放商可以通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。
签名的步骤:a)创建key;b)使用步骤a产生的key对apk的签名
4.反编译apk:
(1).解压apk文件,提取classes.dex文件复制到dex2jar的安装目录下,使用dex2jar在windows终端进行反编译:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>e:
E:\学习软件>cd dex2jar
E:\学习软件\dex2jar>cd dex2jar-0.0.9.15
E:\学习软件\dex2jar\dex2jar-0.0.9.15>d2j-dex2jar.bat classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
E:\学习软件\dex2jar\dex2jar-0.0.9.15>
classes.dex文件反编译后生成classes-dex2jar.jar文件。
(2).运行jd-gui,直接把classes-dex2jar.jar拖拽到面板内就可看到java信息,进行保存。
5.常见事件相应的实现方式:
常见事件:单击事件onClickListener、长按事件onLongClickListener、滑动事件onTouchListener、键盘事件onKeyListener、焦点事件setOnFocusChangeListender
A).单击事件
(1).动态设置(最常用方式)
button.setOnClickListener(new OnClickListener()
{
@Override
public void OnClick(View v)
{
System.out.println("button发生点击事件~~");
}
});
(2).配置方式 仅限于onclick
<Button
android:id="@+id/buuton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="test2"
/>
在activity中实现test2方法,如下:
public void test2(View view) {
}
3.可复用方式:
在onclick方法中判断哪些组件发生了相应事件。
例如:
首先在activity_mian.xml中添加按钮,并给每个按钮取相应的名字。
在onCreate方法中:
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
button1.setOnClickListener(MyBtnListener);
button2.setOnClickListener(MyBtnListener);
button3.setOnClickListener(MyBtnListener);
在onCreate方法外:
private View.OnClickListener MyBtnListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.button1:Toast.makeText(MainActivity.this, "button1被点击", Toast.LENGTH_SHORT).show();
break;
case R.id.button2:Toast.makeText(MainActivity.this, "button2被点击", Toast.LENGTH_SHORT).show();
break;
case R.id.button3:Toast.makeText(MainActivity.this, "button3被点击", Toast.LENGTH_SHORT).show();
break;
}
}
};
B).长按事件
Button button4 = (Button) findViewById(R.id.button4);
button4.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "LongClick", Toast.LENGTH_SHORT).show();
return true;
}
});
C)滑动事件
元事件:action_down,action_move,action_up
Event对象记录事件发生的现场情况。
在onCreate方法中:
Button button = (Button) findViewById(R.id.button1);
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// TODO Auto-generated method stub
int actionType = event.getAction();
if(actionType == MotionEvent.ACTION_DOWN)
{
System.out.println("按下...");
}
else if(actionType == MotionEvent.ACTION_MOVE)
{
System.out.println("移动...");
}
else if(actionType == MotionEvent.ACTION_UP)
{
System.out.println("松开...");
}
else
{
}
return true;
}
});
按钮随鼠标而移动:
final Button button = (Button) findViewById(R.id.button1);
ViewGroup vg = (ViewGroup) findViewById(R.id.container);
//viewgroup==div view==button...
vg.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// TODO Auto-generated method stub
int actionType = event.getAction();
if(actionType == MotionEvent.ACTION_DOWN)
{
System.out.println("按下...");
}
else if(actionType == MotionEvent.ACTION_MOVE)
{
System.out.println("移动...");
button.setX(event.getX());
button.setY(event.getY());
}
else if(actionType == MotionEvent.ACTION_UP)
{
System.out.println("松开...");
}
else
{
}
return true;
}
});
D).键盘事件:
final Button button = (Button) findViewById(R.id.button1);
button.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
System.out.println(keyCode);
//a:29 w:51 s:47 d:32
if(keyCode == 29) {
button.setX(v.getX()-10);
}else if(keyCode == 51) {
button.setY(v.getY()-10);
}else if(keyCode == 47) {
button.setY(v.getY()+10);
}else if(keyCode == 32) {
button.setX(v.getX()+10);
}else {
}
return false;
}
});
E).焦点事件
在onCreate方法中:
Button button = (Button) findViewById(R.id.button1);
button.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean b) {
System.out.println("focus");
}
});
通过按键盘上的tab键来获取焦点。