1 功能需求及技术可行性分析
在开始编码之前,我们需要先对程序进行需求分析,想一想APP中应该具备哪些功能。将这些功能全部整理出来之后,我们才好动手去一一实现。这里我认为APP中至少应该具备以下功能。
1. 有一个引导界面。
2. 可以罗列出水果,蔬菜,植物,动物。
3. 可以看到图片及文字。
4. 可以返回上一页面。
想要全部实现这些功能却需要用到UI、线性布局、页面跳转等。所有图片资源提前准备好,放入drawable-hdpi中。这里还需要建立一个APP项目,然后再建立一个com.example.app.adapter包,用来放项目中的.adapter文件。创建一个自定义的适配器,这个适配器继承自PagerAdapter。新建类GuideAdapter,代码如下:
public class GuideAdapter extends PagerAdapter{
private List<View> views;
public GuideAdapter(List<View> views) {
super();
this.views = views;
}
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position));
return views.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
}
}
然后建立一个WelcomeActivity类,这是一打开APP时出现的一个闪屏界面;
public class WeclomeActivity extends Activity
{
private RelativeLayout layoutWecome;
private ImageView ivMonkey;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weclome);
layoutWecome=(RelativeLayout) findViewById(R.id.layoutWelcome);
AlphaAnimation alphaAnimation=new AlphaAnimation(0.0f, 1.0f);
alphaAnimation.setDuration(1000);
layoutWecome.startAnimation(alphaAnimation);
ivMonkey=(ImageView) findViewById(R.id.ivMonkey);
RotateAnimation rotateAnimation=new RotateAnimation(0,360);
rotateAnimation.setDuration(2000);
rotateAnimation.setRepeatCount(2);
ivMonkey.startAnimation(rotateAnimation);
rotateAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
Intent intent=new Intent(WeclomeActivity.this,GuideActivity.class);
startActivity(intent);
finish();
}
});
}
}
相对的,我们也需要建立一个布局文件activity_welcome,这里只需要一个添加ImageView控件,ImageView是用于在界面中展示图片的一个控件,通过它可以让程序界面更加丰富多彩,代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layoutWelcome"
android:background="@drawable/bg"
tools:context=".WeclomeActivity" >
<ImageView
android:id="@+id/ivMonkey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/monkey" />
</RelativeLayout>
里面添加了一个ImageView控件,这是个转动的小动物。
想要该项目一打开就是欢迎界面,那么,我们就需要对WelcomeActivity活动进行注册,修改项目的AndroidManifest.xml中的代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="20" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.app.WeclomeActivity"
android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
接着,开始着手引导界面,首先在res中添加一个文件夹drawable,里面放入引导页面下方用来显示当前是第几个引导页面的小圆点。
这是不在当前显示的引导页面所对应的小圆点的状态:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<size
android:width="8dp"
android:height="8dp"/>
<solid
android:color="@color/black"/>
</shape>
这是在当前显示的引导页面所对应的小圆点的状态:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<size
android:width="8dp"
android:height="8dp"/>
<solid
android:color="@color/yellow"/>
</shape>
下面我们来建立引导页面的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/guide_1"
android:orientation="vertical" >
</LinearLayout>
第二个引导页面和第一个类同:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/guide_2"
android:orientation="vertical" >
</LinearLayout>
因为第三个引导页面是最后一个页面,需要添加一个按钮,用来跳转进入主活动页面:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/guide_3"
android:orientation="vertical" >
<TextView
android:id="@+id/tvGo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="16dp"
android:layout_marginRight="19dp"
android:background="@drawable/start_select"
android:gravity="center"
android:text="Go"
android:clickable="true"
android:onClick="jumpMain"
android:textColor="#ffffff"
android:textSize="30sp" />
</RelativeLayout>
这时我们运行程序可以看到如下效果: