仿小米闹钟日期选择

 

日期选择页面功能源码:

package com.android.deskclock;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class AlarmItemRelativeLayout extends Activity {

    RelativeLayout alarm_item_everyday_layout;
    RelativeLayout alarm_item_weekday_layout;
    
    Button alarm_item_confirm_button;
    Button alarm_item_cancle_button;
    
    ListView mListView;

    RepeatAdapter listAdapter;
    String[] day_list;
    List<String> listEveryday;

    HashMap<Integer, Boolean> isSelected;

    ViewHolder holder;

    Intent intent;
    
    boolean[] boolResult;
    boolean[] cancleResult;

    int ALARM_ITEM_FOR_RESULT=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm_item_relativelayout);
        day_list = new String[] { this.getResources().getString(R.string.alarm_item_list_monday),
                this.getResources().getString(R.string.alarm_item_list_tuesday),
                this.getResources().getString(R.string.alarm_item_list_wednesday),
                this.getResources().getString(R.string.alarm_item_list_thursday),
                this.getResources().getString(R.string.alarm_item_list_friday),
                this.getResources().getString(R.string.alarm_item_list_saturday),
                this.getResources().getString(R.string.alarm_item_list_sunday) };

        mListView = (ListView) findViewById(R.id.listviewrepeat);

        listEveryday = new ArrayList<String>();
        listAdapter = new RepeatAdapter((ArrayList) listEveryday, this);

        mListView.setAdapter(listAdapter);

        alarm_item_everyday_layout = (RelativeLayout) findViewById(R.id.alarm_item_everyday);
        alarm_item_weekday_layout = (RelativeLayout) findViewById(R.id.alarm_item_weekday);
        
        alarm_item_confirm_button=(Button)findViewById(R.id.alarm_item_confirm_button);
        alarm_item_cancle_button=(Button)findViewById(R.id.alarm_item_cancle_button);
        

        intent = getIntent();
        boolResult=intent.getBooleanArrayExtra("boolresult");
        cancleResult=boolResult;
        
        for (int i = 0; i < day_list.length; i++) {
            listEveryday.add(day_list[i]);
        }

        isSelected = new HashMap<Integer, Boolean>();

        for (int i = 0; i < listEveryday.size(); i++) {
            isSelected.put(i, (Boolean)boolResult[i]);
        }

        mListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

                ViewHolder holder = (ViewHolder) arg1.getTag();
                holder.checkDay.toggle();
                isSelected.put(arg2, holder.checkDay.isChecked());

                listAdapter.notifyDataSetChanged();
            }

        });



        alarm_item_everyday_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                for (int i = 0; i < listEveryday.size(); i++) {
                    isSelected.put(i, true);
                }
                listAdapter.notifyDataSetChanged();
            }
        });

        alarm_item_weekday_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                for (int i = 0; i < listEveryday.size() - 2; i++) {
                    isSelected.put(i, true);
                }
                isSelected.put(listEveryday.size() - 2, false);
                isSelected.put(listEveryday.size() - 1, false);
                listAdapter.notifyDataSetChanged();
            }
        });

        alarm_item_confirm_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean[] getBoolean = new boolean[7];
                for (int i = 0; i < getBoolean.length; i++) {
                    getBoolean[i] =isSelected.get(i);
                }
                intent.putExtra("boolresult", getBoolean);
                
                setResult(ALARM_ITEM_FOR_RESULT, intent);
                finish();
            }
        });
        
        
        alarm_item_cancle_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean[] getBoolean = new boolean[7];
        
                intent.putExtra("boolresult", cancleResult);
                
                setResult(ALARM_ITEM_FOR_RESULT, intent);
                finish();
            }
        });
    }

    public class RepeatAdapter extends BaseAdapter {

        private ArrayList<String> list;
        private LayoutInflater inflater = null;
        private Context context;

        public RepeatAdapter(ArrayList<String> list, Context context) {
            this.context = context;
            this.list = list;
            inflater = LayoutInflater.from(context);

        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return listEveryday.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return listEveryday.get(position);
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            if (convertView == null) {
                holder = new ViewHolder();
                convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.alarm_item_relativelayout_listview,
                        null);
                holder.weekDay = (TextView) convertView.findViewById(R.id.alarm_item_linear_listview_text);
                holder.checkDay = (CheckBox) convertView.findViewById(R.id.alarm_item_linear_listview_checkbox);

                LayoutParams lp = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                        alarm_item_everyday_layout.getHeight()/165*135);
                convertView.setLayoutParams(lp);

                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.weekDay.setText(listEveryday.get(position));
            holder.checkDay.setChecked(isSelected.get(position));
            return convertView;
        }
    }

    class ViewHolder {
        TextView weekDay;
        CheckBox checkDay;
    }
}

日期选择页面布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".LinearLayoutActivity" >

    <RelativeLayout
        android:id="@+id/alarm_item_header_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:orientation="vertical" >

        <RelativeLayout
            android:id="@+id/alarm_item_everyday"
            android:layout_width="match_parent"
            android:layout_height="@dimen/list_item"
            android:layout_alignParentTop="true"
            android:background="@drawable/alarmitemlinear"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/bottom_button_margin_left"
                android:text="@string/alarm_item_everyday_text"
                android:textColor="@color/black_3"
                android:textSize="@dimen/prize_normal"
                android:typeface="serif" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/alarm_item_weekday"
            android:layout_width="match_parent"
            android:layout_height="@dimen/list_item"
            android:layout_below="@id/alarm_item_everyday"
            android:background="@drawable/alarmitemlinear" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/bottom_button_margin_left"
                android:text="@string/alarm_item_weekday_text"
                android:textColor="@color/black_3"
                android:textSize="@dimen/prize_normal"
                android:typeface="serif" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/alarm_item_custom"
            android:layout_width="match_parent"
            android:layout_height="@dimen/list_item"
            android:layout_below="@+id/alarm_item_weekday"
            android:background="@drawable/alarmitemlinear_up"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/bottom_button_margin_left"
                android:text="@string/alarm_item_custom_text"
                android:textColor="@color/black_3"
                android:textSize="@dimen/prize_normal"
                android:typeface="serif" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="@dimen/bottom_button_margin_left"
                android:adjustViewBounds="true"
                android:src="@drawable/alarm_item_relativelayout_custome" />
        </RelativeLayout>
    </RelativeLayout>

    <ListView
        android:id="@+id/listviewrepeat"
        android:layout_width="match_parent"
        android:layout_height="@dimen/list_item"
        android:layout_above="@+id/alarm_item_confirm_cancle_layout"
        android:layout_below="@+id/alarm_item_header_layout"
        android:background="#FFFFFF"
        android:divider="#FFFFFF"
        android:dividerHeight="1px"
        android:listSelector="#00000000" >
    </ListView>

    <LinearLayout
        android:id="@+id/alarm_item_confirm_cancle_layout"
        android:layout_width="match_parent"
        android:layout_height="@dimen/button_layout"
        android:layout_alignParentBottom="true"
        android:background="#FFFFFF"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/alarm_item_confirm_button"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/button_bottom"
            android:layout_gravity="center"
            android:layout_marginLeft="@dimen/bottom_button_margin_left"
            android:layout_weight="1"
            android:background="@drawable/alarm_item_relativelayout_button_confirm_style"
            android:gravity="center"
            android:text="@string/alarm_item_confirm_text"
            android:textAllCaps="true"
            android:textColor="@color/black_3"
            android:textSize="@dimen/prize_normal"
            android:typeface="serif" />

        <Button
            android:id="@+id/alarm_item_cancle_button"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/button_bottom"
            android:layout_gravity="center"
            android:layout_marginRight="@dimen/bottom_button_margin_left"
            android:layout_weight="1"
            android:background="@drawable/alarm_item_relativelayout_button_cancle_style"
            android:gravity="center"
            android:text="@string/alarm_item_cancle_text"
            android:textAllCaps="true"
            android:textColor="@color/black_3"
            android:textSize="@dimen/prize_normal"
            android:typeface="serif" />
    </LinearLayout>

</RelativeLayout>


listview item布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:background="@drawable/alarmitemlinear">

    <TextView
        android:id="@+id/alarm_item_linear_listview_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:gravity="center_vertical"
        android:layout_centerVertical="true"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:textColor="@color/black_3"
        android:textSize="@dimen/prize_content"
        android:layout_marginLeft="@dimen/bottom_button_margin_left"
        android:typeface="serif" />

    <CheckBox
        android:id="@+id/alarm_item_linear_listview_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:clickable="false"
        android:focusable="false"
        android:layout_centerVertical="true"
        android:layout_marginRight="@dimen/bottom_button_margin_left"
        style="@style/CustomAlarmItemRelativelayoutCheckboxTheme"
        android:focusableInTouchMode="false"
        android:gravity="center_vertical" />

</RelativeLayout>

 

从fragment跳转到日期选择页面,并且接收返回值

        first_linear.setOnClickListener(new View.OnClickListener() {
             public void onClick(View arg0) {
                 Intent intent=new Intent();
                intent.setClass(getActivity(), AlarmItemRelativeLayout.class);
                intent.putExtra("boolresult", dateBool);
                startActivityForResult(intent, 1);
             }
         });
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            switch (requestCode) {
                case REQUEST_CODE_RINGTONE:
                    if(FeatureOption.MTK_DESKCLOCK_NEW_UI){
                        newSaveRingtonUri(data);
                    }else{
                        saveRingtoneUri(data);
                    }
                    break;
                default:
                    LogUtils.w("Unhandled request code in onActivityResult: " + requestCode);
            }
        }else if(resultCode == ALARM_ITEM_FOR_RESULT){
            dateBool=(boolean[])data.getExtras().get("boolresult");
            for(int i=0;i<dateBool.length;i++){
                if(i!=dateBool.length-1){
                    
                    alarm.daysOfWeek.setDaysOfWeek(dateBool[i], NEW_DAY_ORDER[i+1]);
                }else{
                    alarm.daysOfWeek.setDaysOfWeek(dateBool[i], NEW_DAY_ORDER[0]);
                }
            }
            
             final String daysOfWeekStr = alarm.daysOfWeek.toString(AlarmClockFragment.this.getActivity(), false);
            if (daysOfWeekStr.isEmpty()) {
                first_linear_alldays.setText(getActivity().getResources().getString(R.string.only_once));
            } else {
                first_linear_alldays.setText(daysOfWeekStr);
            }
        }
    }

 

posted @ 2015-10-22 11:54  comkingfly  阅读(376)  评论(0编辑  收藏  举报