健康寶——呼吸頻率部分開發(三)

首頁實現


布局文件


首先頁面的上半部分是一個輪播圖的展現,在布局文件中應該設置一個ViewPager,可以讓用戶左右切換當前的view,還需要設置每個輪播的顯示文字以及該頁面是處于得到焦點的頁面還是失去焦點的頁面,是否處于焦點狀態可以用兩張圖片的變換來表示,每個頁面都有一個焦點標記,將該標記放在一個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中要對輪播圖的邏輯予以實現,ViewPager類需要一個PagerAdapter適配器類給它提供數據,所以需要在其中實現適配器類

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[]{
        "生命在于運動",
        "常吃燕麥有益心臟健康",
        "保護聽力從我做起",
        "清肺養肺,常吃這些"
};
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);
    }

}

/**
 * 利用線程池定時執行動畫輪播
 */
@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);
    }
}

/**
 * 接收子線程傳遞過來的數據
 */
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;
    }
}

}

效果圖


健康寶首頁實現
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,677評論 25 708
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,855評論 22 665
  • 出自:財魚管家#app#十大理財新技能 亮點:新功能點的文案與圖片表達清晰 應用:點評管家等新功能介紹頁
    小不點_767f閱讀 129評論 0 0
  • 今天你追劇了嗎?楚喬傳里頻頻出現的“燕北”一詞,大家都不陌生,但是真有燕北這個地方嗎,真有煙熏柿子說的辣么...
    雪落無語閱讀 1,643評論 2 0
  • #幸福是需要修出來的~每天進步1%~幸福實修08班~06~李玉珍# 20170819(63/99) 【幸福三朵玫瑰...
    stx2010閱讀 94評論 0 1