滾動中文選擇控件

有時候要用到中文的滾動選擇,但網上都是wheelview控件寫的,比較繁瑣,自己把Android 4.0風格的日期控件改寫成中文選擇控件,界面比較簡潔美觀,喜歡的朋友可以下載看看。地址:http://download.csdn.net/detail/aiyuan0204/7062417

package com.ycf.blog_06_chinesepickerdemo.Chinese;

import com.ycf.blog_06_chinesepickerdemo.R;

import android.content.Context;
import android.widget.FrameLayout;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;

public class ChinesePicker extends FrameLayout
{
	private final NumberPicker mWeekSpinner;
	private final NumberPicker mBeginSpinner;
	private final NumberPicker mEndSpinner;
    private String mWeek,mBegin,mEnd; 
    private OnChooseChangedListener mOnChooseChangedListener;

    private String[] week = { "週一", "週二","週三", "週四", "週五", "週六", "周天"};
    private String[] begin = { "第一節", "第二節","第三節", "第四節", "第五節", "第六節", "第七節", "第八節", "第九節", "第十節"};
    private String[] end = { "第一節", "第二節","第三節", "第四節", "第五節", "第六節", "第七節", "第八節", "第九節", "第十節"};
    
    public ChinesePicker(Context context)
	{
    	super(context);
    	 inflate(context, R.layout.chinesedialog, this);
    	 
    	 mWeekSpinner=(NumberPicker)this.findViewById(R.id.week);
    	 mWeekSpinner.setMaxValue(6);
    	 mWeekSpinner.setMinValue(0);
    	 mWeekSpinner.setDisplayedValues(week);
	     mWeekSpinner.invalidate();
    	 mWeekSpinner.setOnValueChangedListener(mOnWeekChangedListener);
    	 
    	 mBeginSpinner=(NumberPicker)this.findViewById(R.id.begin);
    	 mBeginSpinner.setMaxValue(9);
    	 mBeginSpinner.setMinValue(0);
    	 mBeginSpinner.setDisplayedValues(begin);
    	 mBeginSpinner.invalidate();
    	 mBeginSpinner.setOnValueChangedListener(mOnBeginChangedListener);
    	 
    	 mEndSpinner=(NumberPicker)this.findViewById(R.id.end);
    	 mEndSpinner.setMaxValue(9);
    	 mEndSpinner.setMinValue(0);
    	 mEndSpinner.setDisplayedValues(end);
    	 mEndSpinner.invalidate();
    	 mEndSpinner.setOnValueChangedListener(mOnEndChangedListener);
	}
    
    private NumberPicker.OnValueChangeListener mOnWeekChangedListener=new OnValueChangeListener()
	{
		@Override
		public void onValueChange(NumberPicker picker, int oldVal, int newVal)
		{
			setContent();
		}
	};
    
    private NumberPicker.OnValueChangeListener mOnBeginChangedListener=new OnValueChangeListener()
	{
		@Override
		public void onValueChange(NumberPicker picker, int oldVal, int newVal)
		{
			setContent();
		}
	};
	
	  private NumberPicker.OnValueChangeListener mOnEndChangedListener=new OnValueChangeListener()
		{
			@Override
			public void onValueChange(NumberPicker picker, int oldVal, int newVal)
			{
				setContent();
			}
		};
	
		
	public void setContent()
	{
		mWeek=week[mWeekSpinner.getValue()];
		mBegin=begin[mBeginSpinner.getValue()];
		mEnd=end[mEndSpinner.getValue()];
		onChooseChanged();
	}
		
	  public interface OnChooseChangedListener 
	  {
	     void onChooseChanged(ChinesePicker view, String week, String begin, String end);
	  }
	
	  public void setOnChooseChangedListener(OnChooseChangedListener callback) 
	  {
	        mOnChooseChangedListener = callback;
	  }
	  
	  private void onChooseChanged() 
	  {
        if (mOnChooseChangedListener != null)
        {
            mOnChooseChangedListener.onChooseChanged(this, mWeek,mBegin, mEnd);
        }
	  }
}

package com.ycf.blog_06_chinesepickerdemo.Chinese;
import com.ycf.blog_06_chinesepickerdemo.Chinese.ChinesePicker.OnChooseChangedListener;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;

public class ChinesePickerDialog extends AlertDialog implements OnClickListener
{
    private ChinesePicker mChoosePicker;
    private String mWeek="週一";
    private String mBegin="第一節";
    private String mEnd="第一節";
    
    private OnChooseSetListener mOnChooseSetListener;
    
	@SuppressWarnings("deprecation")
	public ChinesePickerDialog(Context context) 
	{
		super(context);
		mChoosePicker = new ChinesePicker(context);
	    setView(mChoosePicker);
	    
	    mChoosePicker.setOnChooseChangedListener(new OnChooseChangedListener()
		{
			@Override
			public void onChooseChanged(ChinesePicker view, String week, String begin, String end)
			{
				mWeek=week;
				mBegin=begin;
				mEnd=end;
				updateTitle(mWeek,mBegin,mEnd); 		
			}
		});
	    
	    setButton("設置", this);
        setButton2("取消", (OnClickListener)null);
        updateTitle(mWeek,mBegin,mEnd); 
	}
	
	public interface OnChooseSetListener 
    {
        void OnChooseSet(AlertDialog dialog, String week,String begin, String end);
    }
	
	private void updateTitle(String week,String begin,String end) 
    {
        setTitle("您選擇的是:"+week+" "+begin+"到"+end);
    }
	
	public void setOnChooseSetListener(OnChooseSetListener callBack)
    {
        mOnChooseSetListener = callBack;
    }
	 
	public void onClick(DialogInterface arg0, int arg1)
    {
        if (mOnChooseSetListener != null) 
        {
            mOnChooseSetListener.OnChooseSet(this, mWeek,mBegin,mEnd);
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章