Android开发仿咸鱼键盘DEMO(修改版)
在这里布局我就不贴出来了
/**
*最终被调用的修改价格dialog
*/
protectedvoideditPriceDialog(){
//TODOAuto-generatedmethodstub
editPriceView=View.inflate(this,R.layout.dialog_price_input_keyboard,null);
priceDialog=newDialog(this,R.style.contactdialog);
priceDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowPriceDialogwindow=priceDialog.getWindow();
PriceDialogwindow.setGravity(Gravity.BOTTOM);
priceDialog.setContentView(editPriceView);
priceDialog.getWindow().getAttributes().windowAnimations=R.style.DialogAnimation;
priceDialog.show();
tv_softkb_point=(TextView)editPriceView.findViewById(R.id.tv_softkb_point);
buffer=newStringBuffer();
stringbuffer=buffer.toString();
buffer2=newStringBuffer();
stringbuffer2=buffer2.toString();
etGoodsPrice=(EditText)editPriceView.findViewById(R.id.et_goodsPrice);
etGoodsPrice.addTextChangedListener(newTextWatcher(){
privateStringetPricetrim;
@Override
publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
etPricetrim=s.toString().trim();
if(etPricetrim.length()==1&&s.toString().equals(".")){//如果edittext的长度为1并且用户只输入了一个.那么buffer里追加"0"+"."同时删除我们输入的点
//如果不删除的在则buffer里的数据会是.0.
buffer.append("0").append(".").deleteCharAt(0);
etGoodsPrice.setText(buffer.toString());
}
if(s.toString().contains(".")){//如果s里包含点
if(s.length()-1-s.toString().indexOf(".")>2){
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(false);
}
if(buffer!=null&&buffer.length()>=1){
buffer.deleteCharAt(buffer.length()-1);
}
s=s.toString().subSequence(0,s.toString().indexOf(".")+3);
etGoodsPrice.setText(s);
etGoodsPrice.setSelection(s.length());
}
elseif(s.length()-1-s.toString().indexOf(".")<=2){
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(false);
}
}
}
else{
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(true);
tv_softkb_point.setEnabled(true);
}
}
if(s.toString().startsWith("0")&&s.toString().trim().length()>1){//如果以0开头长度大于1第二个元素不是.
if(!s.toString().substring(1,2).equals(".")){
buffer.deleteCharAt(1);
etGoodsPrice.setText(s.subSequence(0,1));
etGoodsPrice.setSelection(1);
return;
}
}
}
@Override
publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){
}
@Override
publicvoidafterTextChanged(Editables){
intlength=etPricetrim.length();
if(length>=1){
etGoodsPrice.setSelection(length);
}else{
etGoodsPrice.setSelection(0);
}
//Toast.makeText(PostIssueActivity.this,s.toString(),0).show();
if(s.toString()!=null&&s.toString().contains(".")){//通过s取出当前editext上的传来判断是否包含.如果包含的话则把clickbale设置成false同时置为不可点击
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(false);
tv_softkb_point.setEnabled(false);
}
}
//if(s.toString().length()==1&&s.toString().equals("0")){//如果长度是1并且是以0开头这个时候光标是定位在0后则删除buffer
////里的第一个char并设置
//
////buffer.deleteCharAt(0);
////etGoodsPrice.setText(buffer.toString());
//
//}
}
});
if(!iPriceEdit.getText().toString().substring(1,iPriceEdit.getText().length()).toString().equals("0.00")){
etGoodsPrice
.setText(iPriceEdit.getText().toString().substring(1,iPriceEdit.getText().length()).toString());
etGoodsPrice.setSelection(etGoodsPrice.length());
buffer.append(iPriceEdit.getText().toString().substring(1,iPriceEdit.getText().length()).toString());
}else{
etGoodsPrice.setText("");
etGoodsPrice.setHint("0.00");
buffer.append("");
}
etOriginalPrice=(EditText)editPriceView.findViewById(R.id.et_originalPrice);
etOriginalPrice.addTextChangedListener(newTextWatcher(){
privateStringtrim;
@Override
publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
trim=s.toString().trim();
if(etOriginalPrice.length()==1&&s.toString().equals(".")){
buffer2.append("0").append(".").deleteCharAt(0);
etOriginalPrice.setText(buffer2.toString());
}
if(s.toString().contains(".")){
if(s.length()-1-s.toString().indexOf(".")>2){
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(false);
}
if(buffer2!=null&&buffer2.length()>=1){
buffer2.deleteCharAt(buffer2.length()-1);
}
s=s.toString().subSequence(0,s.toString().indexOf(".")+3);
etOriginalPrice.setText(s);
etOriginalPrice.setSelection(s.length());
}
elseif(s.length()-1-s.toString().indexOf(".")<=2){
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(false);
}
}
}
else{
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(true);
tv_softkb_point.setEnabled(true);
}
}
if(s.toString().startsWith("0")&&s.toString().trim().length()>1){
if(!s.toString().substring(1,2).equals(".")){
buffer2.deleteCharAt(1);
etOriginalPrice.setText(s.subSequence(0,1));
etOriginalPrice.setSelection(1);
return;
}
}
}
@Override
publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidafterTextChanged(Editables){
//TODOAuto-generatedmethodstub
intlength=trim.length();
if(length>=1){
etOriginalPrice.setSelection(length);
}else{
etOriginalPrice.setSelection(0);
}
if(s.toString()!=null&&s.toString().contains(".")){
if(tv_softkb_point!=null){
tv_softkb_point.setClickable(false);
tv_softkb_point.setEnabled(false);
}
}
//if(s.toString().length()==1&&s.toString().equals("0")){//如果长度是1并且是以0开头这个时候光标是定位在0后则删除buffer
////里的第一个char并设置
//
//buffer2.deleteCharAt(0);
//etOriginalPrice.setText(buffer2.toString());
//
//}
}
});
etOriginalPrice.setSelection(etOriginalPrice.length());
if(!iOldPriceEdit.getText().subSequence(1,iOldPriceEdit.getText().length()).toString().equals("0.00")){
etOriginalPrice
.setText(iOldPriceEdit.getText().subSequence(1,iOldPriceEdit.getText().length()).toString());
buffer2.append(iOldPriceEdit.getText().subSequence(1,iOldPriceEdit.getText().length()).toString());
}else{
etOriginalPrice.setText("");
etOriginalPrice.setHint("0.00");
buffer2.append("");
}
//etOriginalPrice.requestFocus();
//etOriginalPrice.setSelection(etGoodsPrice.getText().length());
ImageViewtv_softkb_hiddenkb=(ImageView)editPriceView.findViewById(R.id.tv_softkb_hiddenkb);
ImageViewivDelete=(ImageView)editPriceView.findViewById(R.id.iv_delete);
ivDelete.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//Toast.makeText(PostIssueActivity.this,"dddd",0).show();
delNumber();
}
});
//长按删除键事件
ivDelete.setOnLongClickListener(newOnLongClickListener(){
@Override
publicbooleanonLongClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.delete(0,etGoodsPrice.getText().length());
//if(etGoodsPrice.getText().length()>=1){
//buffer.deleteCharAt(etGoodsPrice.getText().length()-1);
//}
stringbuffer=buffer.toString();
etGoodsPrice.setText(stringbuffer.substring(0,stringbuffer.length()));
}
if(etOriginalPrice.hasFocus()){
buffer2.delete(0,etOriginalPrice.getText().length());
//if(etOriginalPrice.getText().length()>=1){
//buffer2.deleteCharAt(etOriginalPrice.getText().length()-1);
//}
stringbuffer2=buffer2.toString();
etOriginalPrice.setText(stringbuffer2.substring(0,stringbuffer2.length()));
}
returnfalse;
}
});
setNumber(buffer,buffer2,etGoodsPrice,etOriginalPrice);
tv_softkb_hiddenkb.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
editPriceView.clearAnimation();
priceDialog.cancel();
}
});
TextViewconfirmKB=(TextView)editPriceView.findViewById(R.id.tv_confirmKB);
hiddenSoftKB(etGoodsPrice,etOriginalPrice);
confirmKB.setOnClickListener(newOnClickListener(){
@SuppressLint("NewApi")
@Override
publicvoidonClick(Viewv){
//iPriceEdit
//iOldPriceEdit
if(buffer!=null){
//iPriceEdit.setText("¥"+buffer.toString());
iPriceEdit.setText("¥"+etGoodsPrice.getText().toString());
if(etGoodsPrice.getText().toString().equals("")){
iPriceEdit.setText("¥"+"0.00");
}
}
if(buffer2!=null){
//iOldPriceEdit.setText("¥"+buffer2.toString());
iOldPriceEdit.setText("¥"+etOriginalPrice.getText().toString());
if(etOriginalPrice.getText().toString().equals("")){
iOldPriceEdit.setText("¥"+"0.00");
}
}
if(etGoodsPrice.getText().toString().equals("")){
etGoodsPrice.setText("0.00");
}
if(etOriginalPrice.getText().toString().equals("")){
etOriginalPrice.setText("0.00");
}
if(Double.valueOf(etGoodsPrice.getText().toString())>Double.valueOf(etOriginalPrice.getText().toString())){
//Toast.makeText(PostIssueActivity.this,"售价高于原价,是否确认?",0).show();
PublicDialogPriceIsMaxDialog=PublicDialog.createDialog(PostIssueActivity.this,newDialogBtnClickListener(){
@Override
publicvoidonClick(Viewview){
switch(view.getId()){
caseR.id.public_dialog_cancel:
editPriceView.clearAnimation();
priceDialog.cancel();
break;
caseR.id.public_dialog_confirm:
editPriceView.clearAnimation();
priceDialog.cancel();
break;
default:
break;
}
}
});
Windowdialogwindow=PriceIsMaxDialog.getWindow();
Displaydisplay=getWindowManager().getDefaultDisplay();
WindowManager.LayoutParamslp=dialogwindow.getAttributes();
lp.width=(int)(display.getWidth()*0.99);
dialogwindow.setAttributes(lp);
PriceIsMaxDialog.show();
LinearLayoutllPublic=(LinearLayout)PriceIsMaxDialog.findViewById(R.id.ll_public_dialog);
llPublic.setBackground(getResources().getDrawable(R.drawable.public_dialog_botom_corner_shape_wite));
PriceIsMaxDialog.onWindowFocusChanged(true);
//Viewsplitling=PriceIsMaxDialog.findViewById(R.id.v_line);
//splitling.setBackgroundColor(color.color_eaeaea);
PriceIsMaxDialog.setLineColor(Color.parseColor("#E9E9EB"));
PriceIsMaxDialog.setTitle("提示");
PriceIsMaxDialog.setContent("出价高于原价,是否确认?");
PriceIsMaxDialog.setTitleVisibility(true);
TextViewcontentView=PriceIsMaxDialog.getContentView();
contentView.setTextSize(16);
contentView.setGravity(Gravity.CENTER);
contentView.setPadding(0,0,0,10);
android.view.ViewGroup.LayoutParamslayout=contentView.getLayoutParams();
layout.width=lp.MATCH_PARENT;
layout.height=120;
contentView.setLayoutParams(layout);
TextViewpublicdialogCancle=(TextView)PriceIsMaxDialog.findViewById(R.id.public_dialog_cancel);
publicdialogCancle.setText("否");
PriceIsMaxDialog.setCancelTextColor(Color.parseColor("#037BFE"));
//PriceIsMaxDialog.setCancelBackGround(Color.parseColor("#ffffff"));
//publicdialogCancle.setTextColor(color.app_green);
TextViewpublicdialogConfirm=(TextView)PriceIsMaxDialog.findViewById(R.id.public_dialog_confirm);
publicdialogConfirm.setText("是");
PriceIsMaxDialog.setConfirmTextColor(Color.parseColor("#037BFE"));
//PriceIsMaxDialog.setConfirmBackGround(Color.parseColor("#ffffff"));
//publicdialogConfirm.setTextColor(color.app_green);
//publicdialogConfirm.setBackground(getResources().getDrawable(R.drawable.coners_save_bg));
PriceIsMaxDialog.findViewById(R.id.vv_hor).setVisibility(View.VISIBLE);
}
editPriceView.clearAnimation();
priceDialog.cancel();
}
});
}
/**
*删除输入的金额
*/
protectedvoiddelNumber(){
if(etGoodsPrice.hasFocus()){
//buffer.delete(0,etGoodsPrice.getText().length());
if(etGoodsPrice.getText().length()>=1){
buffer.deleteCharAt(etGoodsPrice.getText().length()-1);
//buffer.deleteCharAt(etGoodsPrice.getText().length());
}
stringbuffer=buffer.toString();
etGoodsPrice.setText(stringbuffer.substring(0,stringbuffer.length()));
etGoodsPrice.setSelection(etGoodsPrice.length());
}
if(etOriginalPrice.hasFocus()){
//buffer2.delete(0,etOriginalPrice.getText().length());
if(etOriginalPrice.getText().length()>=1){
buffer2.deleteCharAt(etOriginalPrice.getText().length()-1);
//buffer2.deleteCharAt(etOriginalPrice.getText().length());
}
stringbuffer2=buffer2.toString();
etOriginalPrice.setText(stringbuffer2.substring(0,stringbuffer2.length()));
etOriginalPrice.setSelection(etOriginalPrice.length());
}
}
/**
*输入金额
*
*@parambuffer
*@parambuffer2
*@parametGoodsPrice
*@parametOriginalPrice
*/
privatevoidsetNumber(finalStringBufferbuffer,finalStringBufferbuffer2,finalEditTextetGoodsPrice,
finalEditTextetOriginalPrice){
TextViewtv_softkb_1=(TextView)editPriceView.findViewById(R.id.tv_softkb_1);
tv_softkb_1.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("1");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("1");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_2=(TextView)editPriceView.findViewById(R.id.tv_softkb_2);
tv_softkb_2.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("2");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("2");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_3=(TextView)editPriceView.findViewById(R.id.tv_softkb_3);
tv_softkb_3.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("3");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("3");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_4=(TextView)editPriceView.findViewById(R.id.tv_softkb_4);
tv_softkb_4.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("4");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("4");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_5=(TextView)editPriceView.findViewById(R.id.tv_softkb_5);
tv_softkb_5.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("5");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("5");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_6=(TextView)editPriceView.findViewById(R.id.tv_softkb_6);
tv_softkb_6.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("6");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("6");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_7=(TextView)editPriceView.findViewById(R.id.tv_softkb_7);
tv_softkb_7.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("7");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("7");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_8=(TextView)editPriceView.findViewById(R.id.tv_softkb_8);
tv_softkb_8.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("8");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("8");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_9=(TextView)editPriceView.findViewById(R.id.tv_softkb_9);
tv_softkb_9.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("9");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("9");
etOriginalPrice.setText(buffer2.toString());
}
}
});
TextViewtv_softkb_0=(TextView)editPriceView.findViewById(R.id.tv_softkb_0);
tv_softkb_0.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append("0");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append("0");
etOriginalPrice.setText(buffer2.toString());
}
}
});
tv_softkb_point.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(etGoodsPrice.hasFocus()){
buffer.append(".");
etGoodsPrice.setText(buffer.toString());
}
if(etOriginalPrice.hasFocus()){
buffer2.append(".");
etOriginalPrice.setText(buffer2.toString());
}
}
});
}
/**
*使用edittext获取焦点弹不出软件键盘
*
*@parametGoodsPrice
*@parametOriginalPrice
*/
privatevoidhiddenSoftKB(finalEditTextetGoodsPrice,finalEditTextetOriginalPrice){
etGoodsPrice.setOnTouchListener(newOnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
intinType=etGoodsPrice.getInputType();//backuptheinput
//type
etGoodsPrice.setInputType(InputType.TYPE_NULL);//disablesoft
//input
etGoodsPrice.onTouchEvent(event);//callnativehandler
etGoodsPrice.setInputType(inType);//restoreinputtype
etGoodsPrice.setSelection(etGoodsPrice.getText().length());
returntrue;
}
});
etOriginalPrice.setOnTouchListener(newOnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
intinType=etOriginalPrice.getInputType();//backuptheinput
//type
etOriginalPrice.setInputType(InputType.TYPE_NULL);//disable
//soft
//input
etOriginalPrice.onTouchEvent(event);//callnativehandler
etOriginalPrice.setInputType(inType);//restoreinputtype
etOriginalPrice.setSelection(etOriginalPrice.getText().length());
returntrue;
}
});
}
/**
*输入原价和价格dialog
*/
privatevoidshowMofityPrice(){
//TODOAuto-generatedmethodstub
mofityPrice.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
//iPriceEdit
//iOldPriceEdit
//iPriceEdit.setFocusable(true);
hiddenKeyboard();
editPriceDialog();
}
});
}
以上所述是小编给大家介绍的Android开发仿咸鱼键盘修改版,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!