package com.aincc.libtest.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.concurrent.atomic.AtomicBoolean; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.Toast; import com.aincc.lib.common.BaseActivity; import com.aincc.lib.common.annotation.InjectView; import com.aincc.lib.ui.anim.Animationz; import com.aincc.lib.ui.widget.button.AButton; import com.aincc.lib.ui.widget.list.pulltorefresh.PullToRefreshBase.OnRefreshListener; import com.aincc.lib.ui.widget.list.pulltorefresh.PullToRefreshListView; import com.aincc.lib.util.Utils; import com.aincc.libtest.R; public class PathTest extends BaseActivity implements OnClickListener { @InjectView(id = R.id.plus_button) private Button menu; @InjectView private ImageView plus; private AtomicBoolean onoff = new AtomicBoolean(false); private ArrayList<AButton> subs = new ArrayList<AButton>(); @InjectView private RelativeLayout testLayout; @InjectView private ImageView screen; @InjectView private ImageView screenBack; @InjectView private AButton test; @InjectView private PullToRefreshListView pulltorefresh; private ArrayList<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>(); private View contentView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.path_test); mappingViews(this); initializeUI(); } @Override protected void initializeUI() { super.initializeUI(); contentView = findViewById(android.R.id.content); menu.setOnClickListener(this); subs.add((AButton) findViewById(R.id.camera)); subs.add((AButton) findViewById(R.id.with)); subs.add((AButton) findViewById(R.id.place)); subs.add((AButton) findViewById(R.id.music)); subs.add((AButton) findViewById(R.id.thought)); subs.add((AButton) findViewById(R.id.sleep)); for (AButton btn : subs) { btn.setOnClickListener(this); } ListView actualListView = pulltorefresh.getRefreshableView(); actualListView.setAdapter(new SimpleAdapter(this, data, android.R.layout.simple_list_item_1, new String[] { "Title" }, new int[] { android.R.id.text1 })); pulltorefresh.setRefreshingLabel("정신줄 갱신중"); pulltorefresh.setReleaseLabel("놓으면 정신줄 갱신..."); pulltorefresh.setPullLabel("갱신할거면 정신줄을 당겨..."); pulltorefresh.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { (new RefreshTask()).execute(); } }); test.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 간단한 애니메이션 테스트 // Animation rotate = Animationz.rotate(getBaseContext(), 0, 360, 900, android.R.anim.accelerate_interpolator, true); // Animation scale = Animationz.scale(getBaseContext(), new PointF(1.0f, 1.0f), new PointF(0.0f, 0.0f), 900, android.R.anim.bounce_interpolator, true); // AnimationSet anim = new AnimationSet(false); // anim.addAnimation(rotate); // anim.addAnimation(scale); // testLayout.startAnimation(anim); // // ImageUtil.recycleImageView(screen); // Bitmap bmp = ImageUtil.takeScreenShot(contentView); // screen.setImageBitmap(bmp); // Flip 애니메이션 테스트 Utils.recycleImageView(screen); Bitmap bmp = Utils.takeScreenShot(contentView); screen.setImageBitmap(bmp); Animationz.performFlip(testLayout, screen, screenBack, screenBack.getWidth() / 2, screenBack.getHeight() / 2); } }); } class RefreshTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { (new Handler()).post(new Runnable() { @Override public void run() { HashMap<String, String> map = new HashMap<String, String>(); map.put("Title", "Test...."); data.add(map); pulltorefresh.onRefreshComplete(); } }); super.onPostExecute(result); } } private final int distance = 200; private final int menuDuration = 100; private final int subsDuration = 200; private final int gapOffset = 30; @Override public void onClick(View v) { switch (v.getId()) { case R.id.plus_button: { onoff.set(!onoff.get()); menuOpenClose(); } break; case R.id.camera: { onoff.set(!onoff.get()); Animationz.performPathStyleSubMenuSelect(this, plus, subs, 0, subsDuration); Toast.makeText(this, "camera clicked", Toast.LENGTH_SHORT).show(); } break; case R.id.with: { onoff.set(!onoff.get()); Animationz.performPathStyleSubMenuSelect(this, plus, subs, 1, subsDuration); Toast.makeText(this, "with clicked", Toast.LENGTH_SHORT).show(); } break; case R.id.place: { onoff.set(!onoff.get()); Animationz.performPathStyleSubMenuSelect(this, plus, subs, 2, subsDuration); Toast.makeText(this, "place clicked", Toast.LENGTH_SHORT).show(); } break; case R.id.music: { onoff.set(!onoff.get()); Animationz.performPathStyleSubMenuSelect(this, plus, subs, 3, subsDuration); Toast.makeText(this, "music clicked", Toast.LENGTH_SHORT).show(); } break; case R.id.thought: { onoff.set(!onoff.get()); Animationz.performPathStyleSubMenuSelect(this, plus, subs, 4, subsDuration); Toast.makeText(this, "thought clicked", Toast.LENGTH_SHORT).show(); } break; case R.id.sleep: { onoff.set(!onoff.get()); Animationz.performPathStyleSubMenuSelect(this, plus, subs, 5, subsDuration); Toast.makeText(this, "sleep clicked", Toast.LENGTH_SHORT).show(); } break; } } /** * * @since 1.0.0 */ private void menuOpenClose() { Animationz.performPathStyleMenu(this, plus, menuDuration, onoff.get()); for (int ii = 0; ii < subs.size(); ii++) { Animationz.performPathStyleSubMenu(this, subs, ii, distance, subsDuration, gapOffset, onoff.get()); } } }