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