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

首頁實現(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;
    }
}

}

效果圖


健康寶首頁實現(xiàn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒲祈,一起剝皮案震驚了整個濱河市甘萧,隨后出現(xiàn)的幾起案子萝嘁,更是在濱河造成了極大的恐慌,老刑警劉巖扬卷,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牙言,死亡現(xiàn)場離奇詭異,居然都是意外死亡怪得,警方通過查閱死者的電腦和手機咱枉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汇恤,“玉大人庞钢,你說我怎么就攤上這事拔恰∫蚧眩” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵颜懊,是天一觀的道長财岔。 經(jīng)常有香客問我,道長河爹,這世上最難降的妖魔是什么匠璧? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮咸这,結(jié)果婚禮上夷恍,老公的妹妹穿的比我還像新娘。我一直安慰自己媳维,他們只是感情好酿雪,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侄刽,像睡著了一般指黎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上州丹,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天醋安,我揣著相機與錄音,去河邊找鬼墓毒。 笑死吓揪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的所计。 我是一名探鬼主播柠辞,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼醉箕!你這毒婦竟也來了钾腺?” 一聲冷哼從身側(cè)響起徙垫,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎放棒,沒想到半個月后姻报,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡间螟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年吴旋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厢破。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡荣瑟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摩泪,到底是詐尸還是另有隱情笆焰,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布见坑,位于F島的核電站嚷掠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏荞驴。R本人自食惡果不足惜不皆,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熊楼。 院中可真熱鬧霹娄,春花似錦、人聲如沸鲫骗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挎峦。三九已至香追,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坦胶,已是汗流浹背透典。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留顿苇,地道東北人峭咒。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像纪岁,于是被迫代替她去往敵國和親凑队。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

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