wangwei2043869的专栏

首先还是先看一下效果

不说废话,直接上代码:

调用处代码,就这两句,放在要调用的onclick方法中:

birth = new SelectBirthday(PersonalProfileActivity.this); birth.showAtLocation(PersonalProfileActivity.this.findViewById(R.id.activity_root),//这里标红要注意下,在你当前activity的页面xml中最外层的父节点定义一个id,不会的可以参照原版资源 Gravity.BOTTOM, 0, 0);

下面贴插件代码,这个代码也是我从网上下的,为了适应项目有改动,原版只是一个展示效果,拿到任何一个项目都是用不了的,等下我会把原版资源分享出来,要用的时候直接把原版资源拷贝进项目里,再参照我改的插件代码处修改就行,改动处我会标红

package com.qcsj.jiajiabang.views;import java.util.Calendar;import com.qcsj.jiajiabang.R;import com.qcsj.jiajiabang.widget.NumericWheelAdapter;import com.qcsj.jiajiabang.widget.OnWheelChangedListener;import com.qcsj.jiajiabang.widget.WheelView;import android.R.integer;import android.app.Activity;import android.content.Context;import android.graphics.Typeface;import android.graphics.drawable.ColorDrawable;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.PopupWindow;import android.widget.TextView;import android.widget.Toast;import android.widget.ViewFlipper;public class SelectBirthday extends PopupWindow implements OnClickListener { private TextView ageText;//年龄 private TextView birthdayText;//生日 private Activity mContext; private View mMenuView; private ViewFlipper viewfipper; private Button btn_submit, btn_cancel; private String age; private DateNumericAdapter monthAdapter, dayAdapter, yearAdapter; private WheelView year, month, day; private int mCurYear = 80, mCurMonth = 5, mCurDay = 14; private int Years; private String[] dateType; public SelectBirthday(Activity context) { super(context); mContext = context; this.age = "2012-9-25"; birthdayText = (TextView) context.findViewById(R.id.user_brithday); ageText= (TextView) context.findViewById(R.id.user_age); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenuView = inflater.inflate(R.layout.birthday, null); viewfipper = new ViewFlipper(context); viewfipper.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); year = (WheelView) mMenuView.findViewById(R.id.year); month = (WheelView) mMenuView.findViewById(R.id.month); day = (WheelView) mMenuView.findViewById(R.id.day); btn_submit = (Button) mMenuView.findViewById(R.id.submit); btn_cancel = (Button) mMenuView.findViewById(R.id.cancel); btn_submit.setOnClickListener(this); btn_cancel.setOnClickListener(this); Calendar calendar = Calendar.getInstance(); OnWheelChangedListener listener = new OnWheelChangedListener() { public void onChanged(WheelView wheel, int oldValue, int newValue) { updateDays(year, month, day); } }; int curYear = calendar.get(Calendar.YEAR); if (age != null && age.contains("-")) { String str[] = age.split("-"); mCurYear = 100 – (curYear – Integer.parseInt(str[0])); mCurMonth = Integer.parseInt(str[1]) – 1; mCurDay = Integer.parseInt(str[2]) – 1; ; } dateType = mContext.getResources().getStringArray(R.array.date); monthAdapter = new DateNumericAdapter(context, 1, 12, 5); monthAdapter.setTextType(dateType[1]); month.setViewAdapter(monthAdapter); month.setCurrentItem(mCurMonth); month.addChangingListener(listener); // year yearAdapter = new DateNumericAdapter(context, curYear – 100, curYear+100, 100 – 20); yearAdapter.setTextType(dateType[0]); year.setViewAdapter(yearAdapter); year.setCurrentItem(mCurYear); year.addChangingListener(listener); // day updateDays(year, month, day); day.setCurrentItem(mCurDay); updateDays(year, month, day); day.addChangingListener(listener); viewfipper.addView(mMenuView); viewfipper.setFlipInterval(6000000); this.setContentView(viewfipper); this.setWidth(LayoutParams.FILL_PARENT); this.setHeight(LayoutParams.WRAP_CONTENT); this.setFocusable(true); ColorDrawable dw = new ColorDrawable(0x00000000); this.setBackgroundDrawable(dw); this.update(); } @Override public void showAtLocation(View parent, int gravity, int x, int y) { super.showAtLocation(parent, gravity, x, y); viewfipper.startFlipping(); } private void updateDays(WheelView year, WheelView month, WheelView day) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) + year.getCurrentItem()); calendar.set(Calendar.MONTH, month.getCurrentItem()); int maxDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); dayAdapter = new DateNumericAdapter(mContext, 1, maxDays, calendar.get(Calendar.DAY_OF_MONTH) – 1); dayAdapter.setTextType(dateType[2]); day.setViewAdapter(dayAdapter); int curDay = Math.min(maxDays, day.getCurrentItem() + 1); day.setCurrentItem(curDay – 1, true); int years = calendar.get(Calendar.YEAR) – 100; age = years + "-" + (month.getCurrentItem() + 1) + "-" + (day.getCurrentItem() + 1); Years = years; } /** * Adapter for numeric wheels. Highlights the current value. */ private class DateNumericAdapter extends NumericWheelAdapter { // Index of current item int currentItem; // Index of item to be highlighted int currentValue; /** * Constructor */ public DateNumericAdapter(Context context, int minValue, int maxValue, int current) { super(context, minValue, maxValue); this.currentValue = current; setTextSize(24); } protected void configureTextView(TextView view) { super.configureTextView(view); view.setTypeface(Typeface.SANS_SERIF); } public CharSequence getItemText(int index) { currentItem = index; return super.getItemText(index); } } public void onClick(View v) { int id = v.getId(); switch (id) { //完成 case R.id.submit: birthdayText.setText(age); ageText.setText(getAge(Years)); this.dismiss(); break; //取消 case R.id.cancel: this.dismiss(); break; default: break; } } private String getAge(int year) { Calendar calendar = Calendar.getInstance(); int currentYear = calendar.get(Calendar.YEAR); int age = currentYear – year; return age + "岁"; }}基本上标红的都是新加的东西,下面贴原版资源下载链接

,我要准备好行李启程了,谢谢关心我的家人和朋友,

wangwei2043869的专栏

相关文章:

你感兴趣的文章:

标签云: