首頁實現(xiàn)
布局文件
首先頁面的上半部分是一個輪播圖的展現(xiàn)汛蝙,在布局文件中應該設置一個ViewPager分瘾,可以讓用戶左右切換當前的view鹿驼,還需要設置每個輪播的顯示文字以及該頁面是處于得到焦點的頁面還是失去焦點的頁面,是否處于焦點狀態(tài)可以用兩張圖片的變換來表示米者,每個頁面都有一個焦點標記韭畸,將該標記放在一個view中;在頁面的下部是功能按鈕以及對該功能按鈕的標記文字蔓搞,點擊按鈕可以進入到對應的功能中進行測試胰丁。
核心代碼展示
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="圖片標題"
android:textColor="#FF00FF"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dip"
android:orientation="horizontal" >
<View
android:id="@+id/dot_0"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_focused"/>
<View
android:id="@+id/dot_1"
android:layout_width="5dip"
android:layout_height="5dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal"/>
<!--有幾張圖片就有幾個view>
</LinearLayout>
</LinearLayout>
<!--功能測試按鈕-->
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:onClick="onHeartRateClick">
<Button
android:id="@+id/heartbtn"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerVertical="true"
android:background="@drawable/heart_rate"
android:onClick="onHeartRateClick" />
<TextView
android:id="@+id/hearttextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="40dp"
android:layout_toRightOf="@id/heartbtn"
android:text="心率測試"
android:textColor="@color/red"
android:textSize="20sp" />
</RelativeLayout>
Activity文件
在main_activity中要對輪播圖的邏輯予以實現(xiàn)喂分,ViewPager類需要一個PagerAdapter適配器類給它提供數(shù)據(jù)锦庸,所以需要在其中實現(xiàn)適配器類
main_activity代碼:
public class MainActivity extends BaseActivity {
private ViewPager mViewPaper;
private List<ImageView> images;
private List<View> dots;
private int currentItem;
//記錄上一次點的位置
private int oldPosition = 0;
//存放圖片的id
private int[] imageIds = new int[]{
R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d
};
//存放圖片的標題
private String[] titles = new String[]{
"生命在于運動",
"常吃燕麥有益心臟健康",
"保護聽力從我做起",
"清肺養(yǎng)肺,常吃這些"
};
private TextView title;
private ViewPagerAdapter adapter;
private ScheduledExecutorService scheduledExecutorService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//設置主界面布局
setContentView(R.layout.activity_main);
mViewPaper = (ViewPager) findViewById(R.id.vp);
//顯示的圖片
images = new ArrayList<ImageView>();
for(int i = 0; i < imageIds.length; i++){
ImageView imageView = new ImageView(this);
imageView.setBackgroundResource(imageIds[i]);
images.add(imageView);
}
//顯示的小點
dots = new ArrayList<View>();
dots.add(findViewById(R.id.dot_0));
dots.add(findViewById(R.id.dot_1));
dots.add(findViewById(R.id.dot_2));
dots.add(findViewById(R.id.dot_3));
title = (TextView) findViewById(R.id.title);
title.setText(titles[0]);
adapter = new ViewPagerAdapter();
mViewPaper.setAdapter(adapter);
mViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
title.setText(titles[position]);
dots.get(position).setBackgroundResource(R.drawable.dot_focused);
dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);
oldPosition = position;
currentItem = position;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
//主界面上“心率檢測”的點擊事件
public void onHeartRateClick(View view) {
startActivity(new Intent(this, HeartRateActivity.class));//打開“心率檢測”界面
}
//主界面上“聽力測試”的點擊事件
public void onEarListenClick(View view) {
startActivity(new Intent(this, EarListenActivity.class)); //打開“聽力測試”界面
}
//主界面上“呼吸頻率”的點擊事件
public void onBreathSpeedClick(View view) {
startActivity(new Intent(this, BreathSpeedActivity.class));//打開“呼吸頻率”界面
}
/**
* 自定義Adapter
* @author liuyazhuang
*
*/
private class ViewPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return images.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
// TODO Auto-generated method stub
// super.destroyItem(container, position, object);
// view.removeView(view.getChildAt(position));
// view.removeViewAt(position);
view.removeView(images.get(position));
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
// TODO Auto-generated method stub
view.addView(images.get(position));
return images.get(position);
}
}
/**
* 利用線程池定時執(zhí)行動畫輪播
*/
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleWithFixedDelay(
new ViewPageTask(),
2,
2,
TimeUnit.SECONDS);
}
/**
* 圖片輪播任務
* @author liuyazhuang
*
*/
private class ViewPageTask implements Runnable{
@Override
public void run() {
currentItem = (currentItem + 1) % imageIds.length;
mHandler.sendEmptyMessage(0);
}
}
/**
* 接收子線程傳遞過來的數(shù)據(jù)
*/
private Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
mViewPaper.setCurrentItem(currentItem);
};
};
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if(scheduledExecutorService != null){
scheduledExecutorService.shutdown();
scheduledExecutorService = null;
}
}
}