package fr.tvbarthel.cheerleader.sampleapp; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; import android.view.ViewTreeObserver; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.ScrollView; import android.widget.TextView; import fr.tvbarthel.cheerleader.sampleapp.ui.ExtraHintEditText; /** * Simple activity used to pick an artist in order to load it into the sample activity. */ public class PickActivity extends ActionBarActivity implements TextView.OnEditorActionListener, View.OnClickListener, ViewTreeObserver.OnScrollChangedListener { private ExtraHintEditText mArtistName; private Animation mWiggle; private View mBanner; private ScrollView mScrollView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pick); mArtistName = ((ExtraHintEditText) findViewById(R.id.activity_pick_artist_edit)); View extraHintView = findViewById(R.id.activity_pick_extra_hint); mArtistName.setExtraHintView(extraHintView); mArtistName.setOnEditorActionListener(this); mScrollView = ((ScrollView) findViewById(R.id.activity_pick_scrollview)); mScrollView.getViewTreeObserver().addOnScrollChangedListener(this); mBanner = findViewById(R.id.activity_pick_banner); mWiggle = AnimationUtils.loadAnimation(this, R.anim.wiggle); findViewById(R.id.activity_pick_search_btn).setOnClickListener(this); findViewById(R.id.activity_pick_section_links_git).setOnClickListener(this); findViewById(R.id.activity_pick_section_links_web).setOnClickListener(this); } @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handle = false; if (actionId == EditorInfo.IME_ACTION_SEARCH) { if (checkField(mArtistName)) { handle = true; ArtistActivity.startActivity(this, mArtistName.getText().toString()); } } return handle; } /** * Check if the edit text is valid or not. * * @param editText field to check. * @return true if the edit text isn't empty */ private boolean checkField(EditText editText) { boolean valid = true; if (TextUtils.isEmpty(editText.getText())) { editText.startAnimation(mWiggle); editText.requestFocus(); valid = false; } return valid; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.activity_pick_search_btn: if (checkField(mArtistName)) { ArtistActivity.startActivity(this, mArtistName.getText().toString()); } break; case R.id.activity_pick_section_links_git: final Intent gitLinkIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().getString(R.string.link_git))); startActivity(gitLinkIntent); break; case R.id.activity_pick_section_links_web: final Intent websiteLinkIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getResources().getString(R.string.link_website))); startActivity(websiteLinkIntent); break; default: throw new IllegalStateException("Click not handled on " + v); } } @Override public void onScrollChanged() { mBanner.setTranslationY(-mScrollView.getScrollY() / 2f); } }