自定义edittext,酷炫效果
来源:互联网 发布:做美工的配置要多少? 编辑:程序博客网 时间:2024/05/29 03:20
原创个人edittext实现inputlayout效果
项目上突然让写个动效的edittext,就是5.0的那个design,然后,要圆角,绿边,字体悬浮,还要隐藏一段空白,效果待会截图,瞬间感觉不能再爱了。
然后,跑去看了textinputlayout,继承的linearlayout有木有,用的valueanimal有木有,textview,editext集成有木有,瞬间感觉google很坑爹有木有,然后,果断自定义一个控件,屌屌的有木有。
话不多说,上代码:
控件的代码
package com.example.admin.mynewedittext;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.LinearInterpolator;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
/**
* Created by admin on 2016/10/5.
*/
public class MyNewEditText extends RelativeLayout {
private TextView contentTv;
private EditText contentEdt;
private LinearLayout lin;
private Integer DurationTime = 200;
private String hintStr;
private final int DEFAULT_PADDING = 0;
private int colorSelectTv = getResources().getColor(R.color.red);
private int backGround;
private int left, right, top, bottom;
private int hintLinColor;
private final int DEFAULT_COLOR = getResources().getColor(R.color.white);
public MyNewEditText(Context context) { super(context); init();}public MyNewEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); initView(attrs);}public MyNewEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); initView(attrs);}@TargetApi(Build.VERSION_CODES.LOLLIPOP)public MyNewEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(); initView(attrs);}public void init() { View v = LayoutInflater.from(getContext()).inflate(R.layout.new_edittext, this); contentEdt = (EditText) v.findViewById(R.id.edt_content); contentTv = (TextView) v.findViewById(R.id.tv_content); lin = (LinearLayout) v.findViewById(R.id.lin); lin.setVisibility(GONE); hintStr = contentEdt.getHint().toString(); setContentEdtOnTouch();}public void initView(AttributeSet attrs) { TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MyNewEditText); hintStr = a.getString(R.styleable.MyNewEditText_hintText); backGround = a.getResourceId(R.styleable.MyNewEditText_hintBackGround, -1); if (hintStr.isEmpty()) { hintStr = contentEdt.getHint().toString(); } else { contentEdt.setHint(hintStr); } contentTv.setText(hintStr); if (backGround != -1) { setContentEdtBackGround(backGround); } left = a.getDimensionPixelSize(R.styleable.MyNewEditText_paddingLeft, DEFAULT_PADDING); right = a.getDimensionPixelSize(R.styleable.MyNewEditText_paddingRight, DEFAULT_PADDING); top = a.getDimensionPixelSize(R.styleable.MyNewEditText_paddingTop, DEFAULT_PADDING); bottom = a.getDimensionPixelSize(R.styleable.MyNewEditText_paddingBotton, DEFAULT_PADDING); hintLinColor = a.getColor(R.styleable.MyNewEditText_hintLinColor, DEFAULT_COLOR); lin.setBackgroundColor(hintLinColor); contentEdt.setPadding(left, top, right, bottom); contentTv.setPadding(contentEdt.getCompoundPaddingLeft(), contentEdt.getCompoundPaddingTop(), contentEdt.getCompoundPaddingRight(), contentEdt.getCompoundPaddingBottom());}public void setContentEdtOnTouch() { contentEdt.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { contentEdt.setHint(""); } setContentTvAnimal(hasFocus); } });}public void setContentTvAnimal(boolean isFocus) { if (isFocus) { if (contentEdt.getText().toString().length() == 0) { AnimalIsFocus(); } } else { if (contentEdt.getText().toString().length() == 0) { AnimalNotFocus(); } }}public void AnimalIsFocus() { contentTv.setVisibility(View.VISIBLE); contentTv.setTextColor(colorSelectTv); AnimationSet set = new AnimationSet(true); TranslateAnimation translateAnimation = new TranslateAnimation(0, contentTv.getCompoundPaddingLeft(), 0, -contentEdt.getHeight() / 3 * 2); ScaleAnimation scaleAnimation = new ScaleAnimation(1f, 0.6f, 1f, 0.6f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f); set.addAnimation(translateAnimation); set.addAnimation(scaleAnimation); set.setInterpolator(new LinearInterpolator()); set.setDuration(DurationTime); set.setFillAfter(true); contentTv.startAnimation(set); set.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { LayoutParams rl = (LayoutParams) lin.getLayoutParams(); rl.width = (int) (contentTv.getWidth() * 0.6); rl.leftMargin = contentTv.getCompoundPaddingLeft(); lin.setLayoutParams(rl); lin.setVisibility(VISIBLE); } @Override public void onAnimationRepeat(Animation animation) { } });}public void AnimalNotFocus() { AnimationSet set = new AnimationSet(true); contentTv.setTextColor(contentEdt.getHintTextColors()); TranslateAnimation translateAnimation = new TranslateAnimation(contentTv.getCompoundPaddingLeft(), 0, -contentEdt.getHeight() / 3 * 2, 0); ScaleAnimation scaleAnimation = new ScaleAnimation(0.6f, 1f, 0.6f, 1f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0f); set.addAnimation(translateAnimation); set.addAnimation(scaleAnimation); set.setFillAfter(true); set.setDuration(DurationTime); set.setInterpolator(new LinearInterpolator()); contentTv.startAnimation(set); translateAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { contentTv.setVisibility(View.GONE); contentEdt.setHint(hintStr); lin.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } });}/** * 设置选中色 * * @param color */public void setColorSelectTv(int color) { colorSelectTv = color;}/** * 动态设置背景 * * @param backGround */public void setContentEdtBackGround(int backGround) { contentEdt.setBackgroundResource(backGround); contentTv.setPadding(contentEdt.getCompoundPaddingLeft(), contentEdt.getCompoundPaddingTop(), contentEdt.getCompoundPaddingRight(), contentEdt.getCompoundPaddingBottom());}public String getContent() { return contentEdt.getText().toString();}
}
页面布局的代码
属性的代码
然后是效果
上代码http://download.csdn.net/detail/sinat_18883365/9646325
- 自定义edittext,酷炫效果
- 自定义控件EditText,添加收件人效果
- Android自定义EditText,实现分割输入内容效果
- Android自定义EditText,实现分割输入内容效果
- 自定义EditText实现输入错误变红的效果
- Android 带清除 和 晃动效果的 自定义 EditText 解析
- 自定义EditText实现未输入文字动画提醒效果
- 自定义带删除按钮的 Edittext 并伴随动画效果
- Android 自定义 EditText 达到从右边输入的效果
- EditText自定义
- 自定义EditText
- 自定义EditText
- 自定义EditText
- 自定义EditText
- 自定义EditText
- 自定义EditText
- 自定义buttonView的酷炫效果
- 自定义Toast实现各种炫酷效果
- Burp 1.6 无法抓取HTTPS解决办法
- 1003-Max Sum
- MD5 工具类
- 【codevs 3012】线段覆盖 4
- android studio 获取 SHA1与MD5
- 自定义edittext,酷炫效果
- Dubbo之HelloWorld
- 设置登录用户cookie值
- 广东国庆旅游
- Codeforces 455A Boredom【dp】
- CentOS 安装 supervisor 进程管理工具
- 用户以及文件管理基本命令
- Android多渠道打包(六):maven&gradle
- Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别