频道管理
来源:互联网 发布: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
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- 频道管理
- Twig模版语言入门
- JAXB XML转Bean,Bean转XML
- Git 命令
- 自定义下拉列表(Spinner)
- Ⅰ vue2.0 开发环境搭建 + 创建项目
- 频道管理
- 图像数据库
- 【mysql】-sql技巧
- android 分享到微博微信qq空间工具类
- Ubuntu14.04 x86_64-linux-gnu环境下安装caffe无GPU
- 天天_byconan的博客
- 4、Redis从入门到放弃 之 常用命令和基本数据类型操作
- WebService完美解释
- CSS 布局_1 Border盒模型