频道管理

来源:互联网 发布:js美化json输出 编辑:程序博客网 时间:2024/04/28 06:07

导入library  public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {    /** 用户栏目的GRIDVIEW */    private DragGrid userGridView;    /** 其它栏目的GRIDVIEW */    private OtherGridView otherGridView;    /** 用户栏目对应的适配器,可以拖动 */    DragAdapter userAdapter;    /** 其它栏目对应的适配器 */    OtherAdapter otherAdapter;    /** 其它栏目列表 */    ArrayList<ChannelItem> otherChannelList = new ArrayList<ChannelItem>();    /** 用户栏目列表 */    ArrayList<ChannelItem> userChannelList = new ArrayList<ChannelItem>();    /** 是否在移动,由于这边是动画结束后才进行的数据更替,设置这个限制为了避免操作太频繁造成的数据错乱。 */    boolean isMove = false;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();    }    /** 初始化数据*/    private void initData() {        userChannelList = ((ArrayList<ChannelItem>) ChannelManage.getManage(AppApplication.getApp().getSQLHelper()).getUserChannel());        otherChannelList = ((ArrayList<ChannelItem>)ChannelManage.getManage(AppApplication.getApp().getSQLHelper()).getOtherChannel());        userAdapter = new DragAdapter(this, userChannelList);        userGridView.setAdapter(userAdapter);        otherAdapter = new OtherAdapter(this, otherChannelList);        otherGridView.setAdapter(this.otherAdapter);        //设置GRIDVIEW的ITEM的点击监听        otherGridView.setOnItemClickListener(this);        userGridView.setOnItemClickListener(this);    }    /** 初始化布局*/    private void initView() {        userGridView = (DragGrid) findViewById(R.id.userGridView);        otherGridView = (OtherGridView) findViewById(R.id.otherGridView);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.//        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    /** GRIDVIEW对应的ITEM点击监听接口  */    @Override    public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {        //如果点击的时候,之前动画还没结束,那么就让点击事件无效        if(isMove){            return;        }        switch (parent.getId()) {            case R.id.userGridView:                //position为 0,1 的不可以进行任何操作                if (position != 0 && position != 1) {                    final ImageView moveImageView = getView(view);                    if (moveImageView != null) {                        TextView newTextView = (TextView) view.findViewById(R.id.text_item);                        final int[] startLocation = new int[2];                        newTextView.getLocationInWindow(startLocation);                        final ChannelItem channel = ((DragAdapter) parent.getAdapter()).getItem(position);//获取点击的频道内容                        otherAdapter.setVisible(false);                        //添加到最后一个                        otherAdapter.addItem(channel);                        new Handler().postDelayed(new Runnable() {                            public void run() {                                try {                                    int[] endLocation = new int[2];                                    //获取终点的坐标                                    otherGridView.getChildAt(otherGridView.getLastVisiblePosition()).getLocationInWindow(endLocation);                                    MoveAnim(moveImageView, startLocation , endLocation, channel,userGridView);                                    userAdapter.setRemove(position);                                } catch (Exception localException) {                                }                            }                        }, 50L);                    }                }                break;            case R.id.otherGridView:                final ImageView moveImageView = getView(view);                if (moveImageView != null){                    TextView newTextView = (TextView) view.findViewById(R.id.text_item);                    final int[] startLocation = new int[2];                    newTextView.getLocationInWindow(startLocation);                    final ChannelItem channel = ((OtherAdapter) parent.getAdapter()).getItem(position);                    userAdapter.setVisible(false);                    //添加到最后一个                    userAdapter.addItem(channel);                    new Handler().postDelayed(new Runnable() {                        public void run() {                            try {                                int[] endLocation = new int[2];                                //获取终点的坐标                                userGridView.getChildAt(userGridView.getLastVisiblePosition()).getLocationInWindow(endLocation);                                MoveAnim(moveImageView, startLocation , endLocation, channel,otherGridView);                                otherAdapter.setRemove(position);                            } catch (Exception localException) {                            }                        }                    }, 50L);                }                break;            default:                break;        }    }    /**     * 点击ITEM移动动画     * @param moveView     * @param startLocation     * @param endLocation     * @param moveChannel     * @param clickGridView     */    private void MoveAnim(View moveView, int[] startLocation,int[] endLocation, final ChannelItem moveChannel,                          final GridView clickGridView) {        int[] initLocation = new int[2];        //获取传递过来的VIEW的坐标        moveView.getLocationInWindow(initLocation);        //得到要移动的VIEW,并放入对应的容器中        final ViewGroup moveViewGroup = getMoveViewGroup();        final View mMoveView = getMoveView(moveViewGroup, moveView, initLocation);        //创建移动动画        TranslateAnimation moveAnimation = new TranslateAnimation(                startLocation[0], endLocation[0], startLocation[1],                endLocation[1]);        moveAnimation.setDuration(300L);//动画时间        //动画配置        AnimationSet moveAnimationSet = new AnimationSet(true);        moveAnimationSet.setFillAfter(false);//动画效果执行完毕后,View对象不保留在终止的位置        moveAnimationSet.addAnimation(moveAnimation);        mMoveView.startAnimation(moveAnimationSet);        moveAnimationSet.setAnimationListener(new Animation.AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {                isMove = true;            }            @Override            public void onAnimationRepeat(Animation animation) {            }            @Override            public void onAnimationEnd(Animation animation) {                moveViewGroup.removeView(mMoveView);                // instanceof 方法判断2边实例是不是一样,判断点击的是DragGrid还是OtherGridView                if (clickGridView instanceof DragGrid) {                    otherAdapter.setVisible(true);                    otherAdapter.notifyDataSetChanged();                    userAdapter.remove();                }else{                    userAdapter.setVisible(true);                    userAdapter.notifyDataSetChanged();                    otherAdapter.remove();                }                isMove = false;            }        });    }    /**     * 获取移动的VIEW,放入对应ViewGroup布局容器     * @param viewGroup     * @param view     * @param initLocation     * @return     */    private View getMoveView(ViewGroup viewGroup, View view, int[] initLocation) {        int x = initLocation[0];        int y = initLocation[1];        viewGroup.addView(view);        LinearLayout.LayoutParams mLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);        mLayoutParams.leftMargin = x;        mLayoutParams.topMargin = y;        view.setLayoutParams(mLayoutParams);        return view;    }    /**     * 创建移动的ITEM对应的ViewGroup布局容器     */    private ViewGroup getMoveViewGroup() {        ViewGroup moveViewGroup = (ViewGroup) getWindow().getDecorView();        LinearLayout moveLinearLayout = new LinearLayout(this);        moveLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));        moveViewGroup.addView(moveLinearLayout);        return moveLinearLayout;    }    /**     * 获取点击的Item的对应View,     * @param view     * @return     */    private ImageView getView(View view) {        view.destroyDrawingCache();        view.setDrawingCacheEnabled(true);        Bitmap cache = Bitmap.createBitmap(view.getDrawingCache());        view.setDrawingCacheEnabled(false);        ImageView iv = new ImageView(this);        iv.setImageBitmap(cache);        return iv;    }    /** 退出时候保存选择后数据库的设置  */    private void saveChannel() {        ChannelManage.getManage(AppApplication.getApp().getSQLHelper()).deleteAllChannel();        ChannelManage.getManage(AppApplication.getApp().getSQLHelper()).saveUserChannel(userAdapter.getChannnelLst());        ChannelManage.getManage(AppApplication.getApp().getSQLHelper()).saveOtherChannel(otherAdapter.getChannnelLst());    }    @Override    public void onBackPressed() {        saveChannel();        super.onBackPressed();    }}



<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/root_view"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="@color/subscribe_activity_bg" >    <include        android:id="@+id/title_bar"        layout="@layout/title_bar" />    <ScrollView        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_below="@id/title_bar" >        <LinearLayout            android:id="@+id/subscribe_main_layout"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:background="@color/subscribe_bg"            android:orientation="vertical"            android:paddingBottom="14.0dip" >            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10.0dip"                android:layout_marginTop="14.0dip"                android:gravity="bottom"                android:orientation="horizontal" >                <TextView                    android:id="@+id/my_category_text"                    style="@style/subscribe_my_tip_text"                    android:text="@string/subscribe_my_category" />                <TextView                    android:id="@+id/my_category_tip_text"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginLeft="12.0dip"                    android:text="@string/subscribe_manager_category_info_2"                    android:textColor="@color/subscribe_tip_text"                    android:textSize="11.0sp" />            </LinearLayout>            <View                android:id="@+id/seperate_line"                style="@style/subscribe_seperate_line" />            <jiangjun.bawei.com.mylibrary.view.DragGrid                android:id="@+id/userGridView"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="14dip"                android:layout_marginRight="14dip"                android:gravity="center"                android:horizontalSpacing="14dip"                android:listSelector="@android:color/transparent"                android:numColumns="4"                android:scrollbars="vertical"                android:stretchMode="columnWidth"                android:verticalSpacing="14.0px" />            <View                android:id="@+id/seperate_line2"                style="@style/subscribe_seperate_line" />            <TextView                android:id="@+id/more_category_text"                style="@style/subscribe_more_tip_text"                android:layout_marginBottom="14.0dip"                android:layout_marginLeft="10.0dip"                android:text="@string/subscribe_more_category" />            <jiangjun.bawei.com.mylibrary.view.OtherGridView                android:id="@+id/otherGridView"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="14dip"                android:layout_marginRight="14dip"                android:gravity="center"                android:horizontalSpacing="14dip"                android:listSelector="@android:color/transparent"                android:numColumns="4"                android:scrollbars="vertical"                android:stretchMode="columnWidth"                android:verticalSpacing="14.0px" />        </LinearLayout>    </ScrollView>    <include        android:id="@+id/category_layout"        layout="@layout/subscribe_category_item"        android:visibility="gone" /></RelativeLayout>



0 0