/** * */ package com.hupu.games.dialog; import java.util.LinkedList; import android.R.integer; import android.app.Dialog; import android.content.Context; import android.opengl.Visibility; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.AbsListView; import android.widget.AbsoluteLayout; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; import com.hupu.games.R; import com.hupu.games.activity.HupuBaseActivity; import com.hupu.games.activity.HupuHomeActivity; import com.hupu.games.data.LeaguesEntity; import com.hupu.games.view.dragGridView.DragGridBaseAdapter; import com.hupu.games.view.dragGridView.DragGridView; import com.hupu.games.view.dynamicgrid.BaseDynamicGridAdapter; import com.hupu.games.view.dynamicgrid.DynamicGridView; import com.umeng.socialize.controller.impl.v; /** * @author panyongjun * 包含了两种方案,一种是对换式的,一种是排序的 */ public class EditDialog extends Dialog { DynamicGridView gridView; LinkedList<LeaguesEntity> mList; DragGridView gridView1; Button submitBt; LinearLayout cancelBt; RelativeLayout layout; Window window; private HupuHomeActivity context; private static final int COLUM = 3; private static final int HOR_SPACE_PADDING = 20; /** * * */ public EditDialog(Context context, LinkedList<LeaguesEntity> leagueList) { super(context, R.style.MyWebDialog); this.context = (HupuHomeActivity) context; mList =leagueList; // View v = LayoutInflater.from(context).inflate( // R.layout.view_league_edit, null); // gridView = (DynamicGridView) v.findViewById(R.id.dynamic_grid); // setGridView( context); View v = LayoutInflater.from(context).inflate(R.layout.view_league_edit_t, null); layout = (RelativeLayout)v.findViewById(R.id.layout_order_outer); submitBt = (Button)v.findViewById(R.id.btn_submit); cancelBt = (LinearLayout)v.findViewById(R.id.layout_btn_cancel); gridView1 = (DragGridView) v.findViewById(R.id.dynamic_grid); setGridView1(context,v); Click click = new Click(); submitBt.setOnClickListener(click); cancelBt.setOnClickListener(click); getWindow().setGravity(Gravity.CENTER); setContentView(v); } private class Click implements View.OnClickListener { public void onClick(View v) { int id = v.getId(); switch(id){ case R.id.btn_submit: case R.id.layout_btn_cancel: // EditDialog.this.dismiss(); onCancle(); break; } } } EditAdapter1 mAdapter; private void setGridView1(Context context,View v) { mAdapter=new EditAdapter1(); gridView1.setAdapter(mAdapter); // mList.add(to, mList.remove(from)); gridView1.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { gridView1.removeItemAnimation(position); } }); } /** * 显示对话框 * */ public void goShow() { show(); getWindow().setGravity(Gravity.TOP); getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); action_TopToBottom(); } private void setGridView(Context context) { gridView.setAdapter(new EditAdapter(context,mList,3)); gridView.setOnDragListener(new DynamicGridView.OnDragListener() { @Override public void onDragStarted(int position) { } @Override public void onDragPositionsChanged(int oldPosition, int newPosition) { LeaguesEntity old =mList.get(oldPosition); LeaguesEntity n =mList.get(newPosition); mList.set(oldPosition, n); mList.set(newPosition, old); } }); gridView.startEditMode(); } private class ViewHolder { private Button titleText; private ViewHolder(View view) { titleText = (Button) view.findViewById(R.id.item_title); } void build(String title) { titleText.setText(title); } } boolean isChanged; public boolean getIsChanged() { return isChanged; } public class EditAdapter1 extends BaseAdapter implements DragGridBaseAdapter { private int mHidePosition = -1; @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; convertView = LayoutInflater.from(getContext()).inflate( R.layout.item_league_edit, null); holder = new ViewHolder(convertView); if(position == mHidePosition){ convertView.setVisibility(View.INVISIBLE); } holder.build(mList.get(position).name); return convertView; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public void reorderItems(int oldPosition, int newPosition) { isChanged =true; mList.add(newPosition, mList.remove(oldPosition)); } @Override public void setHideItem(int hidePosition) { this.mHidePosition = hidePosition; notifyDataSetChanged(); } @Override public void removeItem(int removePosition) { } } public class EditAdapter extends BaseDynamicGridAdapter { public EditAdapter(Context context, LinkedList<LeaguesEntity> items, int columnCount) { super(context, items, columnCount); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate( R.layout.item_league_edit, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.build(mList.get(position).name); return convertView; } } public void action_TopToBottom() { // TODO Auto-generated method stub final LinearLayout selection = (LinearLayout) findViewById(R.id.layout_shuddle_action); selection.setVisibility(View.VISIBLE); Animation showAnim=AnimationUtils.loadAnimation(context, R.anim.fade_in_top); selection.startAnimation(showAnim); showAnim.setAnimationListener(new AnimationListener(){ @Override public void onAnimationEnd(Animation animation) { selection.clearAnimation(); } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub }}); } public void onCancle() { final LinearLayout selection = (LinearLayout) findViewById(R.id.layout_shuddle_action); Animation hiddenAnim=AnimationUtils.loadAnimation(context, R.anim.fade_out_top); selection.startAnimation(hiddenAnim); hiddenAnim.setAnimationListener(new AnimationListener(){ @Override public void onAnimationEnd(Animation animation) { selection.clearAnimation(); selection.setVisibility(View.INVISIBLE); if(context!=null) { context.finishShuddle(); } EditDialog.this.hide(); } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub }}); } @Override public void dismiss() { // TODO Auto-generated method stub onCancle(); } }