各位大佬,這就是秒表和倒計時和鬧鐘的界面。
那我們先實作界面好嗎?
我們可以看到上面一行有鬧鐘,有計時,有倒計時,點選或者滑動就可以去到相應的界面了。
我們實作這三個界面主要用到了 Fragment+Viewpager //碎片(類似Activity)
viewpager的使用一定要用到它獨特的擴充卡,這個擴充卡适配了三個Fragment。
主Activity上面放一個Tab.layout,主體放一個Viewpager元件。看看下面Acivitiy的代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/back"//背景貓
tools:context="com.bbg.myclock.MainActivity">
<include
android:id="@+id/tabBar"
layout="@layout/tab" /> //鬧鐘計時...那幾個字
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/tabBar">
</android.support.v4.view.ViewPager>
</RelativeLayout>
tab的代碼如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:clipToPadding="true"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tab1"
android:textColor="@color/colorPrimary"
android:textSize="18sp"
android:gravity="center"
android:layout_width="0dp"
android:text="@string/page1name" //鬧鐘
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/tab2"
android:textColor="@color/colorPrimary"
android:textSize="18sp"
android:gravity="center"
android:layout_width="0dp"
android:text="@string/page2name" //計時
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/tab3"
android:textColor="@color/colorPrimary"
android:textSize="18sp"
android:gravity="center"
android:layout_width="0dp"
android:text="@string/timer" //倒計時
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
那現在看看第一個鬧鐘的界面XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AnalogClock //一個元件,可以看到時鐘的
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ac"
android:layout_centerHorizontal="true"/>
<Button
android:backgroundTint="@color/transparentblue" //最下面添加按鈕
android:text="@string/add"
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
<ListView
android:divider="@color/divider"
android:dividerHeight="1sp"
android:layout_above="@id/btn1" //鬧鐘的清單
android:layout_below="@id/ac"
android:id="@+id/naozhonglv"
android:layout_width="wrap_content"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
下面是計時的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_centerHorizontal="true"
android:layout_height="match_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_centerHorizontal="true"
android:id="@+id/cm"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:gravity="center"
android:layout_weight="3"
android:text="0"
android:textSize="48sp"
android:textColor="@color/white"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/minute"/>
<TextView
android:layout_weight="1"
android:text=":"
android:textSize="48sp"
android:textColor="@color/white"
android:layout_width="0dp"
android:layout_height="wrap_content"
/>
<TextView
android:gravity="center"
android:layout_weight="3"
android:text="0"
android:textSize="48sp"
android:textColor="@color/white"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/second"/>
<TextView
android:layout_weight="1"
android:text="."
android:textSize="48sp"
android:textColor="@color/white"
android:layout_width="0dp"
android:layout_height="wrap_content"
/>
<TextView
android:gravity="center"
android:layout_weight="3"
android:text="0"
android:textSize="48sp"
android:textColor="@color/white"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/mills"/>
</LinearLayout>
<android.support.v7.widget.ButtonBarLayout
android:layout_width="match_parent"
android:id="@+id/btnbar"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content">
<Button
android:text="@string/reset"
android:backgroundTint="@color/transparent"
android:id="@+id/reset"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:textColor="@color/colorAccent"
android:text="@string/stopT"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/transparent"
android:id="@+id/stopT"/>
<Button
android:textColor="@color/green"
android:backgroundTint="@color/transparent"
android:text="@string/startT"
android:layout_weight="2"
android:id="@+id/startT"
android:layout_width="0dp"
android:layout_height="wrap_content"
/>
</android.support.v7.widget.ButtonBarLayout>
<ListView
android:layout_above="@id/btnbar"
android:layout_below="@+id/cm"
android:layout_width="match_parent"
android:id="@+id/lv2"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
下面是倒計時的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:focusableInTouchMode="true"
android:focusable="true"
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<com.bbg.myclock.mynumberpicker
android:overScrollMode="always"
android:id="@+id/hour"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content">
</com.bbg.myclock.mynumberpicker>
<TextView
android:textColor="@color/white"
android:id="@+id/tv1"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text=":"
android:textSize="26sp"
android:textStyle="bold" />
<com.bbg.myclock.mynumberpicker //可用自帶的numberpicker
android:id="@+id/minute"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content">
</com.bbg.myclock.mynumberpicker>
<TextView
android:text=":"
android:textColor="@color/white"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textSize="26sp"
android:textStyle="bold" />
<com.bbg.myclock.mynumberpicker
android:id="@+id/second"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="wrap_content">
</com.bbg.myclock.mynumberpicker>
</LinearLayout>
<Button
android:text="@string/startCount"
android:id="@+id/btnok"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="26sp"
android:textColor="@color/white"
android:backgroundTint="#836e"/>
<ProgressBar
android:layout_margin="10dp"
android:id="@+id/pb"
android:backgroundTint="#a94d"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_above="@id/btnok"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"/>
<TextView
android:textColor="@color/white"
android:textSize="48sp"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/pb"
android:id="@+id/num"/>
</RelativeLayout>
好,那現在界面的XMl都有啦,現在把三個界面添加到Activity吧!
Activity中主要是有Viewpager,Viewpager有三個頁面。
看看Activity!
public class MainActivity extends AppCompatActivity {
TextView tv1,tv2,tv3;
ViewPager viewPager;
MyPageadapter pageadapter; //這個在下面的類裡
long exit=0;//可忽略
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initStatus(); //這個是使得狀态欄透明
pageadapter=new MyPageadapter(getSupportFragmentManager());
FindID();
tv1.setTextColor(getResources().getColor(R.color.textselected));
tv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initTabColor();
tv1.setTextColor(getResources().getColor(R.color.textselected));
viewPager.setCurrentItem(0);
}
});
tv2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initTabColor();
tv2.setTextColor(getResources().getColor(R.color.textselected));
viewPager.setCurrentItem(1);
}
});
tv3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initTabColor();
tv3.setTextColor(getResources().getColor(R.color.textselected));
viewPager.setCurrentItem(2);
}
});
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
if (state==2){
switch (viewPager.getCurrentItem()){
case 0:
initTabColor();
tv1.setTextColor(getResources().getColor(R.color.textselected));
viewPager.setCurrentItem(0);
break;
case 1:
initTabColor();
tv2.setTextColor(getResources().getColor(R.color.textselected));
viewPager.setCurrentItem(1);
break;
case 2:
initTabColor();
tv3.setTextColor(getResources().getColor(R.color.textselected));
viewPager.setCurrentItem(2);
break;
}
}
}
});
}
public void FindID(){
tv1=(TextView)findViewById(R.id.tab1);
tv2=(TextView)findViewById(R.id.tab2);
tv3=(TextView)findViewById(R.id.tab3);
viewPager=(ViewPager)findViewById(R.id.viewpager);
viewPager.setAdapter(pageadapter);
viewPager.setCurrentItem(0);
}
public void initStatus(){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
public void initTabColor(){
tv1.setTextColor(getResources().getColor(R.color.colorPrimary));
tv2.setTextColor(getResources().getColor(R.color.colorPrimary));
tv3.setTextColor(getResources().getColor(R.color.colorPrimary));
} }
下面的MypagerAdatper的java:
public class MyPageadapter extends FragmentPagerAdapter {
FragClock fragClock = null;
FragJishi fragJishi = null;
FragCalendar fragCalendar=null;//沒用
FragTimer fragTimer=null;
public MyPageadapter(FragmentManager fm) {
super(fm);
fragClock=new FragClock();
fragJishi=new FragJishi();
fragCalendar=new FragCalendar();//沒用
fragTimer=new FragTimer();
}
@Override
public Fragment getItem(int position) {
Fragment fragment=null;
switch (position){
case 0:
fragment=fragClock;
break;
case 1:
fragment=fragJishi;
break;
case 2:
fragment=fragTimer;
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container,position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container,position,object);
}
}
我們這一次先把界面實作了,下次實作功能。
這個是鬧鐘的
public class FragClock extends Fragment {
@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, final Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.naozhong, null);
return view;}
}
這個是秒表,計時的。
public class FragJishi extends Fragment {
@Nullable
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, final Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.jishi, null);return view;}}
這個是倒計時Timer:
public class FragTimer extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.timer, container, false);return view;}}
你們現在試一試,界面能不能實作出來!??
如果界面有問題的,請及時留言哦~!!
下一期我們再來界面功能的問題~!