1. 程式人生 > >使用 draggrid 實現 仿今日頭條頻道管理(詳細步驟)

使用 draggrid 實現 仿今日頭條頻道管理(詳細步驟)

package com.bawei.newsapp;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import 
android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.Switch; import
android.widget.Toast; import com.andy.library.ChannelActivity; import com.andy.library.ChannelBean; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; /** * Created by admin on 2017/12/13. */ public class Fragment01 extends
Fragment { private View view; private ViewPager mVp;
private ArrayList<ChannelBean> channelBeens;
   private TabLayout mTl;
    private Gson gson;
    String jsonStr = "";
private FragmentManager fm;
    private ArrayList<Fragment> fragments;
    private ImageButton mImgbtn;

    @Nullable
    @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = View.inflate(getContext(), R.layout.fragment01_layout, null);

        initView(view);

        fm = getChildFragmentManager();

        channelBeens = new ArrayList<ChannelBean>(); //建立集合

        //準備資料,新增集合   //準備欄目資料
channelBeens.add(new ChannelBean("熱點",true));
        channelBeens.add(new ChannelBean("軍事",true));
        channelBeens.add(new ChannelBean("八卦",true));
        channelBeens.add(new ChannelBean("遊戲",true));
        channelBeens.add(new ChannelBean("寵物",true));
        channelBeens.add(new ChannelBean("汽車",true));
        channelBeens.add(new ChannelBean("熱賣",true));
        channelBeens.add(new ChannelBean("外賣",true));
        channelBeens.add(new ChannelBean("條目1",true));
        channelBeens.add(new ChannelBean("條目2",true));
        channelBeens.add(new ChannelBean("條目3",false));
        channelBeens.add(new ChannelBean("條目4",false));
        channelBeens.add(new ChannelBean("條目5",false));
        channelBeens.add(new ChannelBean("條目6",false));
        channelBeens.add(new ChannelBean("條目7",false));
        channelBeens.add(new ChannelBean("條目8",false));
//把選擇的欄目(true)資料配置給tablayoutfor (int i = 0; i < channelBeens.size(); i++) {  //迴圈選取
            if (channelBeens.get(i).isSelect()){ //判斷是否選中,若選中則新增
mTl.addTab(mTl.newTab().setText(channelBeens.get(i).getName()));
            }


        }
        fragments = new ArrayList<Fragment>();

        //迴圈傳送資料到fragment
for (int i = 0; i < channelBeens.size(); i++) {
            Fragment_test fragment_test = new Fragment_test();

            Bundle b = new Bundle();
            b.putString("title", channelBeens.get(i).getName());

            fragment_test.setArguments(b);

            fragments.add(fragment_test);}
    //給viewpager  新增介面卡mVp.setAdapter(new FragmentPagerAdapter(fm) {
            @Override
public Fragment getItem(int position) {
                return fragments.get(position);
            }

            @Override
public int getCount() {
                return fragments.size();
            }

            @Nullable
            @Override
public CharSequence getPageTitle(int position) {
                String name = channelBeens.get(position).getName();
                return name;
                       }
        });

        mTl.setupWithViewPager(mVp);  //將tablayout 與viewpager  做繫結處理return view;
    }

//呼叫activity中 的回撥方法

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == ChannelActivity.REQUEST_CODE && resultCode == ChannelActivity.RESULT_CODE){//為true表示是頻道管理回調回來的 jsonStr = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);//得到欄目管理的結果 Toast.makeText(getContext(),jsonStr,Toast.LENGTH_SHORT).show(); Log.i("main",jsonStr);
// 做更新操作mTl.removeAllTabs();//清空之前的欄目
            //把新選擇的欄目結果更新到tablayout上
gson = new Gson();
            //進行json解析
Type type= new TypeToken<ArrayList<ChannelBean>>(){}.getType();
            channelBeens = gson.fromJson(jsonStr,type);
            //遍歷結果,更新tablayout
for (int i=0;i<channelBeens.size();i++){
                if(channelBeens.get(i).isSelect()){
                    mTl.addTab(mTl.newTab().setText(channelBeens.get(i).getName()));
                }
            }
        }




    }

    private void initView(View view) {
        mVp = (ViewPager) view.findViewById(R.id.vp);
        mTl = (TabLayout) view.findViewById(R.id.tl);
        mImgbtn = (ImageButton) view.findViewById(R.id.imgbtn);

     //這是按鈕點選事件 ,點選按鈕啟動頻道管理
        mImgbtn.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
                switch (view.getId()){
                    default:
                        break;
                    case R.id.imgbtn:
                        ChannelActivity.startChannelActivity((AppCompatActivity) getContext(),channelBeens);
                        break;


                }
            }
        });

    }
}
效果圖


相關推薦

使用 draggrid 實現 仿今日頭條頻道管理(詳細步驟

package com.bawei.newsapp; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.ann

Android 仿今日頭條頻道管理(上(GridView之間Item的移動和拖拽

前言 經常逛今日頭條、發現它的頻道管理功能做的特別贊,互動體驗非常好、如圖: 它是2個gridview組成、2個gridview之間的Item是可以相互更換的、而且我的頻道的Item是可以拖拽進行排序。仔細觀察、今日頭條有些細節做的的非常好,當一個gridview1的item移

仿今日頭條頻道管理

package com.example.pingdao; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import

今日頭條頻道管理細緻程式碼

//佈局點選進入頻道管理頁面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

iOS截圖後仿今日頭條實現一鍵分享

實現如上圖效果 1,監聽截圖產生事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDidTakeScreenshot:) name:U

js實現左右滑動的導航選單,仿今日頭條頂部選單

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t

仿今日頭條頂部導航欄效果實現

    最近在做一個專案的時候,需要實現像今天頭條那樣的頂部導航欄效果,通過在網上了解自定義View的相關知識和看別人的部落格,最終實現,本文既作為一個記錄(第一次寫部落格,寫得不好還請各位看官多多包涵),同時也給需要的人提供參考。    本文主要參考了鴻洋大神的部落格和風兮

iOS新聞應用源碼,高仿今日頭條源碼等

http watch 如何 簡單的 ios開發 優酷 語言 bae calayer iOS精選源碼 城市列表選擇 一款非常時尚的照片選擇插件 優酷播放按鈕動畫 BRPickerView是iOS的選擇器組件,主要包括:日期選擇器、時... 選擇位置坐下動畫Demo

仿今日頭條按鈕loading效果

out otc ren pro pla radius -s ont blog 效果 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g

LRU原理和Redis實現——一個今日頭條的面試題

滿了 存儲空間 當前 node 硬盤 java 原理 remove http 看了評論,發現有些地方有問題,更新了圖和一些描述,希望可以更清晰一些,也歡迎關註,還會有幹貨文章 -------- 很久前參加過今日頭條的面試,遇到一個題,目前半部分是如何實現 LRU,後半部

android高仿今日頭條小視訊轉場切換效果

可以先看看今日頭條效果 功能分析 點選列表上的一個item,該item會放大,最後直接全屏播放小視訊,剛開始看上去,以為是個共享元素的轉場動畫, 後來想到,共享元素要在android 5.0以上支援,而今日頭條顯然不會只支援5.0版本以上 筆者想到的一種方案就是進入Acti

仿今日頭條遇到的問題

1,使用 MultiDexApplication 詳情查部落格:https://blog.csdn.net/k1457047898/article/details/53467238 2.Android啟動另一個應用(只需知道package name)  ,詳情見部落格地址:http

viewpagerindacator仿今日頭條

api的話建議獨自申請一個,我申請的是聚合資料的新聞的介面,免費的但是隻能用兩個月 1.       首先準備csdn-XListView,viewpagerindacator(只需要其中的library)的類庫,Gson.jar,

仿今日頭條

main xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:a

仿今日頭條搜尋介面佈局----記錄一下

標題  記錄一下,知道今日頭條快被大家給寫的鋪大街了,不過對於一個菜鳥來講,也就不在意這些了,在閒暇時候自己仿今日頭條寫了一個程式,到搜尋這裡 ,這個佈局讓我有些糾結,我百度過幾次 不過發現大家都利用了多個recycle

React實戰篇(React仿今日頭條

前言 上次初學用 react 寫了個後臺管理,這次便尋思寫個移動端的專案。便有了這次的這個專案。 這個專案以前寫了個 vue 的版本。有興趣的可以 點選進入 賬號: vue-toutiao 密碼: 123456 技術棧 react + react-redu

vue 仿今日頭條

vue 仿今日頭條 為了增加移動端專案的經驗,近一週通過 vue 仿寫今日頭條,以下就專案實現過程中遇到的問題以及解決方法給出總結,有什麼不正確的地方,懇請大家批評指正^ _ ^!,程式碼倉庫地址為 github 一、實現功能 首頁展示 檢視訊息 圖文懶載入 滑動選項卡,切換頻道,點選

仿今日頭條 選中tab位置始終居中

HTML: <ul class="catelist"> <li  (click)="changetab(0)"> 推薦 </li> <li  (click)="changetab(1)"> 推薦2 &

android仿今日頭條App、多種漂亮載入效果、選擇器彙總、記事本App、Kotlin開發等原始碼

Android精選原始碼 android漂亮的載入效果 android各種 選擇器 彙總原始碼 Android仿bilibili搜尋框效果 Android記事本app、分類,塗鴉、新增圖片或者其他附件 仿今日頭條app 一個很酷的Vi

Android之仿今日頭條頂部導航欄效果

隨著時間的推移現在的軟體要求顯示的內容越來越多,所以要在小的螢幕上能夠更好的顯示更多的內容,首先我們會想到底部選單欄,但是有時候像今日頭條新聞客戶端要顯示的內容太多,而且又想在主介面全部顯示出來,所以有加了頂部導航欄。 今日頭條頂部導航欄區域的主要部分是一個導航選單。導航選