国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android自定義控件實現按鈕滾動選擇效果

2019-12-12 00:40:35
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android實現按鈕滾動選擇效果的具體代碼,供大家參考,具體內容如下

效果圖

代碼實現

package com.demo.ui.view;import android.annotation.TargetApi;import android.content.Context;import android.os.Build;import android.os.Handler;import android.support.v4.content.ContextCompat;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RelativeLayout;import android.widget.TextView;import com.demo.R;import com.demo.factory.Axis;import com.demo.utils.LogUtils;import java.util.ArrayList;import java.util.List;public class AirTemperatureView extends RelativeLayout{ private Context context; private TextView tv; private TextView tv_middle; // private TextView tv_middle_small; private RelativeLayout Auto_layout; private StringScrollPicker stringScrollPicker; private List<CharSequence> newList; private ImageView img; private ImageView img_left; private ImageView img_right; private int mPosition; private Handler handler = new Handler(); /** * 延遲線程,看是否還有下一個字符輸入 */ private Runnable delayRun = new Runnable() { @Override public void run() {  stringScrollPicker.setVisibility(INVISIBLE);  img.setBackgroundResource(R.drawable.air_temp_bg);  tv_middle.setText(newList.get(mPosition));  //tv.setText("電池剩余"+newList.get(mPosition)+"%提醒你");  tv_middle.setVisibility(VISIBLE);  img_right.setVisibility(VISIBLE);  img_left.setVisibility(VISIBLE);  if(mListener != null) {  mListener.setAirTemper(mPosition+18);  }  LogUtils.e("空調刷新===","溫度"); } }; public AirTemperatureView(Context context){ super(context); this.context = context; init(); } @TargetApi(Build.VERSION_CODES.M) public void init(){ super.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(230))); LinearLayout parent = new LinearLayout(context); parent.setOrientation(LinearLayout.VERTICAL); LayoutParams parent_Params = new LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(230)); super.addView(parent,parent_Params); RelativeLayout tv_layout = new RelativeLayout(context); LinearLayout.LayoutParams tv_layout_Params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(50)); parent.addView(tv_layout,tv_layout_Params); tv = new TextView(context); tv.setText("溫度"); tv.setTextSize(Axis.scaleTextSize(36)); tv.setTextColor(ContextCompat.getColor(context, R.color.white_70_color));// LayoutParams tv_Params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); tv_Params.addRule(RelativeLayout.CENTER_IN_PARENT); tv_layout.addView(tv,tv_Params); /**  * 滑動選擇器  */ Auto_layout = new RelativeLayout(context); LinearLayout.LayoutParams Auto_layout_Params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, Axis.scaleX(150)); Auto_layout_Params.setMargins(0,Axis.scaleX(30),0,0); parent.addView(Auto_layout,Auto_layout_Params); img = new ImageView(context); img.setId(R.id.EleRemindImage); img.setBackgroundResource(R.drawable.air_temp_bg); LayoutParams img_Params = new LayoutParams(Axis.scaleX(150), Axis.scaleX(150)); img_Params.addRule(RelativeLayout.CENTER_IN_PARENT); Auto_layout.addView(img,img_Params); img_left = new ImageView(context); img_left.setBackgroundResource(R.drawable.battery_point); LayoutParams img_left_Params = new LayoutParams(Axis.scaleX(14), Axis.scaleX(14)); img_left_Params.addRule(RelativeLayout.CENTER_VERTICAL); img_left_Params.addRule(RelativeLayout.LEFT_OF,R.id.EleRemindImage); img_left_Params.setMargins(0,0,Axis.scaleX(134),0); Auto_layout.addView(img_left,img_left_Params); img_right = new ImageView(context); img_right.setBackgroundResource(R.drawable.battery_point); LayoutParams img_right_Params = new LayoutParams(Axis.scaleX(14), Axis.scaleX(14)); img_right_Params.addRule(RelativeLayout.CENTER_VERTICAL); img_right_Params.addRule(RelativeLayout.RIGHT_OF,R.id.EleRemindImage); img_right_Params.setMargins(Axis.scaleX(134),0,0,0); Auto_layout.addView(img_right,img_right_Params); tv_middle = new TextView(context); tv_middle.setTextSize(Axis.scaleTextSize(64)); tv_middle.setGravity(Gravity.CENTER); tv_middle.setTextColor(0xFFFFFFFF); LayoutParams tv_middle_Params = new LayoutParams(Axis.scaleX(150), Axis.scaleX(150)); tv_middle_Params.addRule(RelativeLayout.CENTER_IN_PARENT); Auto_layout.addView(tv_middle,tv_middle_Params); newList = new ArrayList<>(); newList.add("18"); newList.add("19"); newList.add("20"); newList.add("21"); newList.add("22"); newList.add("23"); newList.add("24"); newList.add("25"); newList.add("26"); newList.add("27"); newList.add("28"); newList.add("29"); newList.add("30"); newList.add("31"); newList.add("32"); tv_middle.setText(newList.get(0)); stringScrollPicker = new StringScrollPicker(context); stringScrollPicker.setHorizontal(true); stringScrollPicker.setVisibleItemCount(5);//可見5個 第3個 (3-1)個位中間 stringScrollPicker.setCenterPosition(2); stringScrollPicker.setIsCirculation(true); stringScrollPicker.setCanTap(true); stringScrollPicker.setDisallowInterceptTouch(true); LayoutParams stringScrollPicker_Params = new LayoutParams(LayoutParams.MATCH_PARENT,Axis.scaleX(150)); Auto_layout.addView(stringScrollPicker,stringScrollPicker_Params); stringScrollPicker.setData(newList); stringScrollPicker.setOnSelectedListener(new ScrollPickerView.OnSelectedListener() {  @Override  public void onSelected(ScrollPickerView scrollPickerView, final int position) {  mPosition = position;  handler.postDelayed(delayRun, 1500);  } }); stringScrollPicker.setOnSelectedListener(new StringScrollPicker.OnDataSelectedListener() {  @Override  public void DataSelected(CharSequence data) {  //tv.setText("電池剩余"+data+"%提醒你");  } }); stringScrollPicker.setSelectedPosition(0,false);//中間Item位置 stringScrollPicker.setVisibility(INVISIBLE); stringScrollPicker.setOnTouchListener(new OnTouchListener() {  @Override  public boolean onTouch(View v, MotionEvent event) {  switch (event.getAction()){   case MotionEvent.ACTION_DOWN:   img.setBackgroundResource(R.drawable.battery_btn_p);   if(delayRun!=null){    handler.removeCallbacks(delayRun);   }   break;  }  return false;  } }); img.setOnClickListener(new OnClickListener() {  @Override  public void onClick(View v) {  stringScrollPicker.setVisibility(VISIBLE);  tv_middle.setVisibility(INVISIBLE);  img_right.setVisibility(INVISIBLE);  img_left.setVisibility(INVISIBLE);  img.setBackgroundResource(R.drawable.battery_btn_p);  } }); } /** * 風速設置 * @param mPosition */ public void setAirTemperature(int mPosition){ /**  * 在設置的時候不刷新  */ if(stringScrollPicker.getVisibility() == INVISIBLE){  if(mPosition > 32){  mPosition = 32;  }  stringScrollPicker.setSelectedPosition(mPosition-18,false);  tv_middle.setText(newList.get(mPosition-18)); } } public TemperatureListener mListener; public void setOnTemperatureListener (TemperatureListener listener) { mListener = listener; } public interface TemperatureListener { void setAirTemper(int temperature); }}

StringScrollPicker 類

package com.demo.ui.view;import android.annotation.TargetApi;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Build;import android.support.annotation.RequiresApi;import android.text.Layout;import android.text.StaticLayout;import android.text.TextPaint;import android.util.AttributeSet;import android.util.Log;import com.demo.factory.Axis;import com.demo.utils.ColorUtil;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class StringScrollPicker extends ScrollPickerView<CharSequence> { private int mMeasureWidth; private int mMeasureHeight; private TextPaint mPaint; // private int mMinTextSize = Axis.scaleX(64); // 最小的字體 private int mMaxTextSize = Axis.scaleX(64); // 最大的字體 // 字體漸變顏色 private int mStartColor = Color.WHITE; // 中間選中item的顏色 private int mEndColor = Color.GRAY; // 上下兩邊的顏色 private int mMaxLineWidth = -1; // 最大的行寬,默認為itemWidth.超過后文字自動換行 private Layout.Alignment mAlignment = Layout.Alignment.ALIGN_CENTER; // 對齊方式,默認居中 @TargetApi(Build.VERSION_CODES.CUPCAKE) public StringScrollPicker(Context context) { this(context, null); } @RequiresApi(api = Build.VERSION_CODES.CUPCAKE) public StringScrollPicker(Context context, AttributeSet attrs) { this(context, attrs, 0); } @RequiresApi(api = Build.VERSION_CODES.CUPCAKE) public StringScrollPicker(Context context, AttributeSet attrs,    int defStyleAttr) { super(context, attrs, defStyleAttr); mPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.FILL); mPaint.setColor(Color.BLACK); setData(new ArrayList<CharSequence>(Arrays.asList(new String[]{  "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve" }))); } /** * @param startColor 正中間的顏色 * @param endColor 上下兩邊的顏色 */ public void setColor(int startColor, int endColor) { mStartColor = startColor; mEndColor = endColor; invalidate(); } /** * item文字大小 * * @param minText 

主站蜘蛛池模板:
拉孜县|
遂平县|
吴川市|
巴青县|
青铜峡市|
都江堰市|
贵定县|
云阳县|
周宁县|
信丰县|
松桃|
北海市|
盱眙县|
水富县|
本溪市|
扎囊县|
黑水县|
古田县|
赣州市|
溆浦县|
天等县|
宜川县|
琼结县|
六安市|
龙游县|
太仆寺旗|
姜堰市|
房山区|
得荣县|
黔西|
清水河县|
宁强县|
吉木萨尔县|
永泰县|
广安市|
乌兰察布市|
电白县|
乐陵市|
广丰县|
长春市|
汕尾市|