欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android登陸界面實現(xiàn)清除輸入框內(nèi)容和震動效果

 更新時間:2015年12月13日 15:23:04   作者:徐劉根  
這篇文章主要介紹了Android登陸界面實現(xiàn)清除輸入框內(nèi)容和震動效果,感興趣的小伙伴們可以參考一下

本文為大家分享Android登陸界面實現(xiàn)清除輸入框內(nèi)容和震動效果的全部代碼,具體內(nèi)容如下:

效果圖:

主要代碼如下

自定義的一個EditText,用于實現(xiàn)有文字的時候顯示可以清楚的按鈕:

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.CycleInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.EditText;

public class ClearEditText extends EditText implements View.OnFocusChangeListener,TextWatcher{

   //刪除按鈕的引用
  private Drawable mClearDrawable;

  //控件是否有焦點
  private boolean hasFoucs;

  public ClearEditText(Context context) {
    this(context, null);
  }

  public ClearEditText(Context context, AttributeSet attrs) {
    // 這里構(gòu)造方法也很重要,不加這個很多屬性不能再XML里面定義
    this(context, attrs, android.R.attr.editTextStyle);
  }

  public ClearEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
  }

   private void init() {
      //獲取EditText的DrawableRight,假如沒有設(shè)置我們就使用默認(rèn)的圖片
      mClearDrawable = getCompoundDrawables()[2];
      if (mClearDrawable == null) {
        // throw new NullPointerException("You can add drawableRight attribute in XML");
        mClearDrawable = getResources().getDrawable(R.drawable.selector_ic_delete);
      }

      //getIntrinsicWidth()取得的是Drawable在手機上的寬度,所以不同分辨率下獲取到的值是不同的,關(guān)鍵所在處
      mClearDrawable.setBounds(0, 0, mClearDrawable.getIntrinsicWidth(), mClearDrawable.getIntrinsicHeight());

      //默認(rèn)設(shè)置隱藏圖標(biāo)
      setClearIconVisible(false);
      //設(shè)置焦點改變的監(jiān)聽
      setOnFocusChangeListener(this);
      //設(shè)置輸入框里面內(nèi)容發(fā)生改變的監(jiān)聽
      addTextChangedListener(this);
    }

    /**
     * 因為我們不能直接給EditText設(shè)置點擊事件,所以我們用記住我們按下的位置來模擬點擊事件
     * 當(dāng)我們按下的位置 在 EditText的寬度 - 圖標(biāo)到控件右邊的間距 - 圖標(biāo)的寬度 和
     * EditText的寬度 - 圖標(biāo)到控件右邊的間距之間我們就算點擊了圖標(biāo),豎直方向就沒有考慮
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
      if (event.getAction() == MotionEvent.ACTION_UP) {
        if (getCompoundDrawables()[2] != null) {

          boolean touchable = event.getX() > (getWidth() - getTotalPaddingRight())
              && (event.getX() < ((getWidth() - getPaddingRight())));

          if (touchable) {
            this.setText("");
          }
        }
      }

      return super.onTouchEvent(event);
    }

    /**
     * 當(dāng)ClearEditText焦點發(fā)生變化的時候,判斷里面字符串長度設(shè)置清除圖標(biāo)的顯示與隱藏
     */
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
      this.hasFoucs = hasFocus;
      if (hasFocus) {
        setClearIconVisible(getText().length() > 0);
      } else {
        setClearIconVisible(false);
      }
    }


    /**
     * 設(shè)置清除圖標(biāo)的顯示與隱藏,調(diào)用setCompoundDrawables為EditText繪制上去
     * @param visible
     */
    protected void setClearIconVisible(boolean visible) {
      Drawable right = visible ? mClearDrawable : null;
      setCompoundDrawables(getCompoundDrawables()[0],
          getCompoundDrawables()[1], right, getCompoundDrawables()[3]);
    }


    /**
     * 當(dāng)輸入框里面內(nèi)容發(fā)生變化的時候回調(diào)的方法
     */
    @Override
    public void onTextChanged(CharSequence s, int start, int count,int after) {
      if(hasFoucs){
        setClearIconVisible(s.length() > 0);
      }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,int after) {

    }

    @Override
    public void afterTextChanged(Editable s) {

    }


    /**
     * 設(shè)置晃動動畫
     */
    public void setShakeAnimation(){
      this.setAnimation(shakeAnimation(5));
    }

    /**
     * 晃動動畫
     * @param counts 1秒鐘晃動多少下
     * @return
     */
    public static Animation shakeAnimation(int counts){
      Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);
      translateAnimation.setInterpolator(new CycleInterpolator(counts));
      translateAnimation.setDuration(1000);
      return translateAnimation;
    }
}

MainActivity.java 主要是彈出一句話表示按鈕的點擊事件

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.app.Activity;

public class MainActivity extends Activity {

  private Button btnLogin;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    btnLogin = (Button) this.findViewById(R.id.btnLogin);
  }

  public void login(View view) {
    Toast.makeText(this, "登陸", Toast.LENGTH_LONG).show();

  }
}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#ffffffff"
  android:orientation="vertical"
  android:padding="4.0dip" >

  <com.xuliugen.clearedittext.ClearEditText
    android:id="@+id/etxtEmail"
    style="@style/editText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="30.0dip"
    android:drawableLeft="@drawable/icon_reg_name"
    android:drawablePadding="10.0dip"
    android:hint="使用郵箱登陸" />

  <com.xuliugen.clearedittext.ClearEditText
    android:id="@+id/etxtPwd"
    style="@style/editText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20.0dip"
    android:drawableLeft="@drawable/icon_reg_password"
    android:drawablePadding="10.0dip"
    android:hint="輸入登陸密碼"
    android:inputType="textPassword" />

  <Button
    android:id="@+id/btnLogin"
    style="@style/bigGreenButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20.0dip"
    android:onClick="login"
    android:text="登陸" />

</LinearLayout>

另外還有一些selector文件,圖片資源等:
bg_btn_style_green.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_enabled="false"><shape android:shape="rectangle">
      <corners android:radius="2.0dip" />

      <solid android:color="@color/green_btn_color_disable" />
    </shape></item>
  <item android:state_pressed="true"><shape android:shape="rectangle">
      <corners android:radius="2.0dip" />

      <solid android:color="@color/green_btn_color_pressed" />
    </shape></item>
  <item><shape android:shape="rectangle">
      <corners android:radius="2.0dip" />

      <solid android:color="@color/green_btn_color_normal" />
    </shape></item>

</selector>

bg_edittext_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:drawable="@drawable/input_bar_bg_active" android:state_focused="true"/>
  <item android:drawable="@drawable/input_bar_bg_normal"/>

</selector>

以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)Android軟件編程有所幫助。

相關(guān)文章

  • UiOS開發(fā)中ITextView回收或關(guān)閉鍵盤使用方法總結(jié)

    UiOS開發(fā)中ITextView回收或關(guān)閉鍵盤使用方法總結(jié)

    iOS開發(fā)中,發(fā)現(xiàn)UITextView沒有像UITextField中textFieldShouldReturn:這樣的方法,那么要實現(xiàn)UITextView關(guān)閉鍵盤,必須使用其他的方法,下面是可以使用的幾種方法,需要的朋友參考下吧
    2016-11-11
  • Android中實現(xiàn)用命令行同步網(wǎng)絡(luò)時間

    Android中實現(xiàn)用命令行同步網(wǎng)絡(luò)時間

    這篇文章主要介紹了Android中實現(xiàn)用命令行同步網(wǎng)絡(luò)時間,本文講解使用BusyBox實現(xiàn)同步網(wǎng)絡(luò)時間,并給出了詳細操作步驟,需要的朋友可以參考下
    2015-07-07
  • Android中Listview點贊功能的實現(xiàn)

    Android中Listview點贊功能的實現(xiàn)

    最近一段時間在研究android方面的知識,利用listview實現(xiàn)點贊功能,下面小編通過本文給大家介紹下基本思路,需要的朋友可以參考下
    2016-11-11
  • Kotlin中的一些技巧與迂回操作分享

    Kotlin中的一些技巧與迂回操作分享

    這篇文章主要給大家介紹了關(guān)于Kotlin中的一些技巧與迂回操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用kotlin具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Android編程實現(xiàn)仿心跳動畫效果的方法

    Android編程實現(xiàn)仿心跳動畫效果的方法

    這篇文章主要介紹了Android編程實現(xiàn)仿心跳動畫效果的方法,實例分析了Android基于線程實現(xiàn)動畫過度效果的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 懸浮對話框Android代碼實現(xiàn)

    懸浮對話框Android代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了懸浮對話框Android代碼實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android仿微信發(fā)朋友圈瀏覽圖片效果

    Android仿微信發(fā)朋友圈瀏覽圖片效果

    這篇文章主要介紹了Android仿微信發(fā)朋友圈瀏覽圖片效果的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Android 獲取手機信息實例詳解

    Android 獲取手機信息實例詳解

    這篇文章主要介紹了Android 獲取手機信息實例詳解的相關(guān)資料,這里附有實例代碼及實現(xiàn)效果圖,需要的朋友可以參考下
    2017-01-01
  • Android開發(fā)使用Handler的PostDelayed方法實現(xiàn)圖片輪播功能

    Android開發(fā)使用Handler的PostDelayed方法實現(xiàn)圖片輪播功能

    這篇文章主要介紹了Android開發(fā)使用Handler的PostDelayed方法實現(xiàn)圖片輪播功能,結(jié)合實例形式分析了Android基于Handler的PostDelayed方法實現(xiàn)圖片輪播功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Flutter 底部彈窗如何實現(xiàn)多項選擇

    Flutter 底部彈窗如何實現(xiàn)多項選擇

    在Flutter中提供了一個showModelBottomSheet方法用于彈出底部彈窗,本篇基于這個方法介紹實現(xiàn)底部彈窗多選的思路和方式。
    2021-06-06

最新評論