android 带刻度的滑动条_Android实现滑动刻度尺效果,选择身高体重和生日
1 packagenet.loonggg.rulerdemo;23 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Date;67 importandroid.app.Activity;8 importandroid.os.Bundle;9 importandroid.os.Ha
1 packagenet.loonggg.rulerdemo;2
3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Date;6
7 importandroid.app.Activity;8 importandroid.os.Bundle;9 importandroid.os.Handler;10 importandroid.view.LayoutInflater;11 importandroid.view.MotionEvent;12 importandroid.view.View;13 importandroid.view.View.OnTouchListener;14 importandroid.view.ViewGroup.LayoutParams;15 importandroid.widget.HorizontalScrollView;16 importandroid.widget.LinearLayout;17 importandroid.widget.TextView;18
19 public class MainActivity extendsActivity {20 privateHorizontalScrollView ruler;21 privateLinearLayout rulerlayout, all_layout;22 privateTextView user_birth_value;23 private intbeginYear;24
25 private String birthyear = "1970";26 private long time = 0;27 private intscreenWidth;28 private boolean isFirst = true;29
30 @Override31 protected voidonCreate(Bundle savedInstanceState) {32 super.onCreate(savedInstanceState);33 setContentView(R.layout.activity_main);34 user_birth_value =(TextView) findViewById(R.id.user_birth_value);35 user_birth_value.setText("1970");36 ruler =(HorizontalScrollView) findViewById(R.id.birthruler);37 rulerlayout =(LinearLayout) findViewById(R.id.ruler_layout);38 ruler.setOnTouchListener(newOnTouchListener() {39
40 @Override41 public booleanonTouch(View v, MotionEvent event) {42 int action =event.getAction();43 user_birth_value.setText(String.valueOf(beginYear44 + (int) Math.ceil((ruler.getScrollX()) / 20)));45 switch(action) {46 caseMotionEvent.ACTION_DOWN:47 caseMotionEvent.ACTION_MOVE:48 break;49 caseMotionEvent.ACTION_UP:50 new Handler().postDelayed(newRunnable() {51 @Override52 public voidrun() {53 user_birth_value.setText(String.valueOf(beginYear54 + (int) Math.ceil((ruler.getScrollX()) / 20)));55 birthyear = String.valueOf((int) (beginYear +Math56 .ceil((ruler.getScrollX()) / 20)));57 try{58 time = (new SimpleDateFormat("yyyy")59 .parse(String.valueOf(birthyear)))60 .getTime();61 } catch(ParseException e) {62 e.printStackTrace();63 }64 }65 }, 1000);66 break;67 }68 return false;69 }70
71 });72 }73
74 @Override75 public void onWindowFocusChanged(booleanhasFocus) {76 super.onWindowFocusChanged(hasFocus);77 if(isFirst) {78 screenWidth =ruler.getWidth();79 constructRuler();80 isFirst = false;81 }82 }83
84 @Override85 protected voidonResume() {86 super.onResume();87 new Handler().postDelayed(newRunnable() {88 @Override89 public voidrun() {90 scroll();91 }92 }, 100);93 }94
95 private voidscroll() {96 ruler.smoothScrollTo((1970 - beginYear) * 20, 0);97 }98
99 @SuppressWarnings("deprecation")100 private voidconstructRuler() {101 int year = newDate().getYear();102 if (year < 2015)103 year = 2010;104 beginYear = year / 10 * 10 - 150;105 View leftview = (View) LayoutInflater.from(this).inflate(106 R.layout.blankhrulerunit, null);107 leftview.setLayoutParams(new LayoutParams(screenWidth / 2,108 LayoutParams.MATCH_PARENT));109 rulerlayout.addView(leftview);110 for (int i = 0; i < 16; i++) {111 View view = (View) LayoutInflater.from(this).inflate(112 R.layout.hrulerunit, null);113 view.setLayoutParams(new LayoutParams(200,114 LayoutParams.MATCH_PARENT));115 TextView tv =(TextView) view.findViewById(R.id.hrulerunit);116 tv.setText(String.valueOf(beginYear + i * 10));117 rulerlayout.addView(view);118 }119 View rightview = (View) LayoutInflater.from(this).inflate(120 R.layout.blankhrulerunit, null);121 rightview.setLayoutParams(new LayoutParams(screenWidth / 2,122 LayoutParams.MATCH_PARENT));123 rulerlayout.addView(rightview);124 }125
126 }
更多推荐
所有评论(0)