在开始前: 1

修改第一个APK:

分析工程结构: 9

如何从当前activity跳转到新的activity并返回


图片可在附件中查看:

在开始前:

准备:

1、eclipse环境(网上很多相应的教程)

2、Android设备(建议实体设备)

注意点:

1、插入android设备后eclipse不能连接到相应设备(adb未能正常连接)。此种情况可以使用市面上一些pc端的手机辅助软件。360手机助手之类的(不要使用豌豆荚)打开adb(进程中查看)。然后再开启eclipse即可找到设备。也可以修改环境变量解决此问题(似乎不是很灵)

2、手机一定要打开调试模式(设置中设置此项)

3、长时间调试可以选择调试时不关闭背光

完成第一个apk:

1、打开eclipse,先配置工作环境目录(图1)。如果以后使用别人的代码不要放在工作环境目录下,会导致导入失败。可以放在别的目录即可顺利导入别人的工程。

图1

2、
点击ok后进入eclipse,选择file->new->android application project。出现图2的界面。输入apk的名字,eclipse会自动输入别的选项,这里我们把Package Name改为com.test.firstapk 。这里不改没关系,按照个人喜好就可以了。在下面分别对应了,最小需求的系统版本,目标系统版本,编译的系统版本(也就是最高支持的,当然是最新的),主题选项(选了这个ui会好看很多,所以默认选上吧)。

图2

3、下一步进入工程配置,一般没特殊需求就默认就可以了。自动创建一个启动图标、一个activity等。

图3

4、下一步后进入启动图标的配置选项,可以选择自己的图标,也可以使用文字。具体的定义试试就知道了。

图4

5、下一步后进入之前选择了自动创建一个activity的种类选项。第一个为普通的activity视图(上栏一直存在),第二个为全屏的activity(边框会自动隐藏),第三个为左边有常驻菜单栏的activity。这里也只是一个模版并不是固定的,在里面还是可以根据自己喜好进行修改的。

图5

6、配置activity的属性,activity的标签,layout的名字,导航模版(刚开始用none,别的模版都是用fragment(以后再说这个,刚开始接触从简单的开始,这个稍微麻烦一点点))。

图6

7、
点击完成后,我们就创建了第一个activity,但是还未完成,我们需要配置一下运行选项。选择菜单栏中run->run configurations。弹出图7的对话框。选择FirstApk,点击target,选择Launch on all compatible devices/AVD’s中的Activity devices。然后保存运行,选择我们的设备,点击ok后,就可以看到设备上启动你做的第一个activity。

图7

修改第一个APK:

分析工程结构:

我们时常需要关注的是src、res文件夹以及AndroidManifrest.xml(配置文件)这几个。

Src下放置的是我们的package和class(编写的程序都在这个下面,分为package和class可以更好的管理代码,让层次更加清晰,有时间可以看看MVC结构)。

Res目录下放了所有的资源文件。Drawable为图片资源(可以放置适应各个屏幕的图片)。Layout放置的为各个activity以及视图(view)的布局文件。

Values则是一些文字引用,主题之类的文件。Menu则是按钮视图配置。

如添加一个TextView,Button以及button的响应:

1、在layout中的activity_main.xml中添加一个textview和button。如果是默认配置的话,看到的将是一个相对布局(RelativeLayout ),如果是在固定的屏幕设备上的画,使用相对布局是相对容易对,但是如果考虑到设备兼容性(还是只能只用线性布局,最好的是根据不同的设备屏幕匹配不同的layout)。

从layout添加的方式有两种,一种是基于可视的,一种是xml文件。一切从简开始,我们使用直观的可视添加。如图8所示。添加完成后,我们可以去xml中看看这两个空间的编号名称分别为textview1,button1,记下这两个编号(也可以自己指定)。这样,我们就在视图上添加了我们需要的,但是程序中我们并未进行处理,因此当我们点击运行后,设备上会出现但是并不能执行任何指令。

图8

2、在程序中处理视图

public class MainActivity extends
//这个是相当于指针还未实例化千万不能直接使用
//这里需要导入textview和button的class,eclipse会帮助你自动导入
TextView text1;  //定义一个文本view
Button btn1;  //定义一个按钮
@Override
protected void
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //加载视图文件
text1 = (TextView)this.findViewById(R.id.textView1); //获得具体的对象
btn1 = (Button)this.findViewById(R.id.button1); //获得具体的对象
//添加一个按钮事件,将textview的文本改为“第一个apk”
btn1.setOnClickListener(new
@Override
public void
// TODO Auto-generated method stub
text1.setText("第一个apk");
}
});
}
@Override
public boolean
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

如何从当前activity跳转到新的activity并返回

1、在之前的工程里面的com.test.firstapk选择添加一个新的class 。如图9,新建一个activity,名字为SecondActivity,继承Activity。点击ok后就可以看到一个新的activity已经建立好。

图9

2、建立好activity后,我们还需要一个布局文件给activity使用。在目录layout中new一个Android xml。如图10。File的名字不能使用大写,选择线性布局。

图10

3、布局文件中分别添加progress bar、seek bar 、Button。

4、修改secondactivity的代码

public class SecondActivity extends
Timer timer = new Timer(); //构建一个定时器
pbar1;  //定义一个进度栏
SeekBar sbar1;  //定义一个滑动栏
Button btn1;  //定义一个按钮
boolean autoRun = false; //手动改变进度栏还是自动改变标志
@Override
protected void
super.onCreate(savedInstanceState);
setContentView(R.layout.secondacivity); //加载视图文件
pbar1 = (ProgressBar)this.findViewById(R.id.progressBar1);
sbar1 = (SeekBar)this.findViewById(R.id.seekBar1);
/*添加滑动栏改变时,如果为手动修改状态则改变progressbar*/
sbar1.setOnSeekBarChangeListener(new
@Override
public void
// TODO Auto-generated method stub
if(!autoRun)
{
pbar1.setProgress(seekBar.getProgress());
}
}
@Override
public void
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int
boolean
// TODO Auto-generated method stub
if(!autoRun)
{
pbar1.setProgress(progress);
}
}
});
btn1 = (Button)this.findViewById(R.id.button1);
/*切换手动自动模式*/
btn1.setOnClickListener(new
@Override
public void
// TODO Auto-generated method stub
if(autoRun == false)
{
autoRun=true;
btn1.setText("手动");
}
else
{
autoRun=false;
btn1.setText("自动");
}
}
});
/*建立一个定时任务,如果允许自动运行,则自动增加progressbar*/
timer.schedule(new
@Override
public void
// TODO Auto-generated method stub
if(autoRun)
{
int i=pbar1.getProgress();
if((i+1)<=100)
{
pbar1.setProgress(i+1);
}
else
{
pbar1.setProgress(0);
}
}
}}, 10, 100);
}
@Override
protected void
// TODO Auto-generated method stub
super.onDestroy();
//退出时一定要销毁进程
timer.cancel();
}
}
5、按照之前的方法在mainactivity中添加一个按钮并加入如下响应
btn2 = (Button)this.findViewById(R.id.button2);
btn2.setOnClickListener(new
@Override
public void
// TODO Auto-generated method stub
//启动一个新的activity
Intent intent =new Intent(context,SecondActivity.class);
startActivity(intent);
}
});
6、运行即可查看apk(运行后,第一个activity是木有问题的,但是我们忘了在AndroidManifest.xml中添加activity,当我们选择第二个activity的时候,杯具了,程序挂掉)
7、修改AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.firstapk"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.test.firstapk.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 还需要添加一个activity才能正常启动 -->
<activity
android:name="com.test.firstapk.SecondActivity"
android:label="@string/app_name"
></activity>
</application>
</manifest>