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());
}
}
}