第三篇 androidstudio 注册ui的点击事件
上一篇中我们讲到了注册界面的ui,也绑定了控件id现在我们应用一下id执行一点事情
我们先定义两坨动画
//这里定义一个方法执行动画
//这里方法里面多了两条 final 和 View
//final 我也不明确它的功能,我认为是可执行的,具体得听你们老师
//View 他可以定义一个控件,这里是设定传进来的控件
public void wteui(final View v) {
ObjectAnimator animator = ObjectAnimator.ofFloat(v, "scaleX", 0.93f);animator.setDuration(300);animator.start();//横轴缩放0.93倍
ObjectAnimator animatuo = ObjectAnimator.ofFloat(v, "scaleY", 0.93f);animatuo.setDuration(300);animatuo.start();//竖轴缩放0.93倍
//定义一个存在内存泄露的线程
new Thread(new Runnable(){
@Override
public void run() {
try {
//线程休眠350毫秒
Thread.sleep(350);
} catch (InterruptedException e) {}
runOnUiThread(new Runnable(){
@Override
public void run() {
ObjectAnimator animatori = ObjectAnimator.ofFloat(v, "scaleX", 1f);animatori.setDuration(200);animatori.start();//还原
ObjectAnimator animatuoi = ObjectAnimator.ofFloat(v, "scaleY", 1f);animatuoi.setDuration(200);animatuoi.start();//还原
}
});
}
}).start();
}
//此时此刻那个按钮点击之后,弹出来的那个提示控件,太死板,我重新给它写个动画
public void hshs(String a,final int b) {
if(b==1){
t0.setTextColor(0xff69F0AE);
}
t0.setText(a);
ObjectAnimator animator = ObjectAnimator.ofFloat(bn_uigo, "translationY", 20);animator.setDuration(300);animator.start();//下移20dp
ObjectAnimator animertr = ObjectAnimator.ofFloat(kekew, "translationY", 20);animertr.setDuration(400);animertr.start();
lin_uui.setVisibility(View.VISIBLE);
new Thread(new Runnable(){
@Override
public void run() {
try {
if(b==1){
Thread.sleep(4000);
}else{
Thread.sleep(600);
}
} catch (InterruptedException e) {}
runOnUiThread(new Runnable(){
@Override
public void run() {
ObjectAnimator animator = ObjectAnimator.ofFloat(bn_uigo, "translationY", -40);animator.setDuration(300);animator.start();//上移40dp
ObjectAnimator animertr = ObjectAnimator.ofFloat(kekew, "translationY", -40);animertr.setDuration(400);animertr.start();
if(b==1){
finish();
}
lin_uui.setVisibility(View.INVISIBLE);
}
});
}
}).start();
}
再弄一个可以让文字变色的方法
//定义一个能把文子搞成渐变色的方法
private void setTextViewStyles(TextView textView,String a,String b) {
LinearGradient mLinearGradient = new LinearGradient(0, 0, textView.getPaint().getTextSize() * textView.getText().length(), 0, Color.parseColor(a), Color.parseColor(b), Shader.TileMode.CLAMP);
textView.getPaint().setShader(mLinearGradient);
textView.invalidate();
}
定一个可以判断输入是否合格的判断方法
public void ifhuo(){
if(edi1.getText().toString().equals("")){
hshs("账号不能为空",0);
return;
}else{
if(edi2.getText().toString().equals("")){
hshs("密码不能为空",0);
return;
}else{
if(edi2.getText().toString().length()<6){
hshs("密码最少为6位",0);
}else{
//这里是定义储存器编辑方法
SharedPreferences.Editor edit=mshart.edit();
edit.putString("account",edi1.getText().toString());//引号里面是储存账号的储存名
edit.putString("password",edi2.getText().toString());//引号里面是储存密码的储存名
edit.commit();
hshs("注册成功",1);
}
}
}
}
给编辑框加上写入事件
edi1.addTextChangedListener(new TextWatcher(){
@Override
public void beforeTextChanged(CharSequence p1, int p2, int p3, int p4) {
wteui(edi1);
}
@Override
public void onTextChanged(CharSequence p1, int p2, int p3, int p4) {
}
@Override
public void afterTextChanged(Editable p1) {
}
});
edi2.addTextChangedListener(new TextWatcher(){
@Override
public void beforeTextChanged(CharSequence p1, int p2, int p3, int p4) {
wteui(edi2);
}
@Override
public void onTextChanged(CharSequence p1, int p2, int p3, int p4) {
}
@Override
public void afterTextChanged(Editable p1) {
}
});
按钮的点击事件
bn_uigo.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View p1) {
wteui(bn_uigo);
ifhuo();
}
});
左下角文字点击事件
//textview 充当返回键
t9.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View p1) {
finish();
}
});
载入事件的时候我们初始化一下
//把文字弄成渐变色
setTextViewStyles(t1,"#5CAB7D","#F68657");
setTextViewStyles(t2,"#7CE084","#50BF1C");
//把储存器实例化
// mshart=this.getSharedPreferences("这里是它的文件名",MODE_PRIVATE);
mshart=this.getSharedPreferences("User_uigo",MODE_PRIVATE);
//先给按钮加载上移动画,让它覆盖掉提示内容
ObjectAnimator animator = ObjectAnimator.ofFloat(bn_uigo, "translationY", -40);animator.setDuration(600);animator.start();//横轴缩放0.3倍
ObjectAnimator animertr = ObjectAnimator.ofFloat(kekew, "translationY", -40);animertr.setDuration(600);animertr.start();
下一篇中我们讲登录ui的控件应该执行的方法