Skip to content

Instantly share code, notes, and snippets.

Created January 31, 2013 08:22
Show Gist options
  • Save anonymous/4681265 to your computer and use it in GitHub Desktop.
Save anonymous/4681265 to your computer and use it in GitHub Desktop.
package com.example.android_03;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private LinearLayout rootLayout;
private ScrollerLinearLayout sideSlideLayout;
private ListView listView;
private final String[] menuTitles = {"メニュー1",
"メニュー2",
"メニュー3",
"メニュー4",
"メニュー5",
"メニュー6"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
setMenuButton();
setListView();
//setContent(0);
}
private void init(){
this.sideSlideLayout = (ScrollerLinearLayout) findViewById(R.id.menu_content_side_slide_layout);
this.rootLayout = (LinearLayout) findViewById(R.id.menu_content_root);
}
private void setMenuButton(){
Button menuButton = (Button) findViewById(R.id.main_tmp_button);
menuButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
sideSlideLayout.scroll();
}
});
}
private void setListView() {
ArrayList<String> items = new ArrayList<String>();
for (int i = 0; i < menuTitles.length; i++) {
items.add(menuTitles[i]);
}
listView = (ListView) findViewById(R.id.menu_content_menulist);
//listView.setFadingEdgeLength(0);
MenuAdapter menuAdapter = new MenuAdapter(this, items, this);
listView.setAdapter(menuAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
{
// TODO Auto-generated method stub
//setContent(arg2);
sideSlideLayout.scroll();
}
});
}
//private void setContent(int position){
// rootLayout.removeAllViews();
//TextView tmpText = new TextView(this);
//tmpText.setText(menuTitles[position]);
//rootLayout.addView(tmpText);
//}
}
package com.example.android_03;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MenuAdapter extends BaseAdapter {
private Context context;
private ArrayList<String> items;
private LayoutInflater inflater;
public MenuAdapter(Context context, ArrayList<String> items, Activity act) {
this.context = context;
this.items = items;
this.inflater = LayoutInflater.from(context);
}
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.item_menu, null);
TextView title = (TextView) convertView.findViewById(R.id.menu_title);
title.setText(getItem(position));
return convertView;
}
public int getCount() {
return items.size();
}
public String getItem(int position) {
return items.get(position);
}
public long getItemId(int position) {
return position;
}
}
package com.example.android_03;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.Scroller;
public class ScrollerLinearLayout extends LinearLayout {
private Context context;
private Scroller scroller;
private float density;
private int scrollSizeWidth;
public ScrollerLinearLayout(Context context) {
super(context);
this.context = context;
init();
}
public ScrollerLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
init();
}
private void init(){
scroller = new Scroller(context);
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
int screenWidth = disp.getWidth();
DisplayMetrics metrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
this.density = metrics.density;
scrollSizeWidth = (int)(screenWidth-(48*density));
}
public void scroll(){
animationStart();
}
@Override
public void computeScroll() {
if(scroller.computeScrollOffset()){
// Scrollerから移動位置を決定する
scrollTo(scroller.getCurrX(),scroller.getCurrY());
postInvalidate();
}
}
private void animationStart(){
if (scroller.getCurrX() < 0)
scroller.startScroll(scroller.getCurrX(), scroller.getCurrY(), -1*scroller.getCurrX(), 0, 500);
else
scroller.startScroll(scroller.getCurrX(), scroller.getCurrY(), -scrollSizeWidth, 0, 500);
invalidate();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment