闹钟+秒表+倒计时三合一



各位大佬,这就是秒表和倒计时和闹钟的界面。

那我们先实现界面好吗?

我们可以看到上面一行有闹钟,有计时,有倒计时,点击或者滑动就可以去到相应的界面了。

我们实现这三个界面主要用到了  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;}}


你们现在试一试,界面能不能实现出来!??
如果界面有问题的,请及时留言哦~!!
下一期我们再来界面功能的问题~!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值