日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之仿网易V3.5新特性

發(fā)布時間:2025/3/8 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之仿网易V3.5新特性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構師?>>> ??

最近,網(wǎng)易新聞更新到V3.5了,給我印象最深的是第一次進應用時顯示新特性的ViewPager變成垂直滑動了。于是,小小的模仿了一下,我們來看看效果:

本文源碼下載地址:http://download.csdn.net/detail/weidi1989/5771921


? ?


? ?


其實這是一個很簡單的代碼,一個自定義的ViewPager就可以搞定,引用自JakeWharton的一個開源項目:點擊打開鏈接。

這個項目實際上是在ViewPager的基礎上,做了一個擴展,加入了對上下方向滑動的支持,正如項目的名字,使用該項目,可以靈活的改變viewpager的方向,而且僅用一個簡單的屬性設置就可以做到,我只對該項目提供的例子做了一些簡單的改動,就做到了網(wǎng)易新聞這個引導頁的效果。

項目中最主要的部分:

DirectionalViewPager:直接繼承自ViewPager,主要在onInterceptTouchEvent()和onTouchEvent()里面加入了對于垂直方向滑動的支持.并提供了setOrientation()這個方法,

我們可以同過此方法,直接設置ViewPager的滑動效果,垂直或者是水平

VerticalViewPagerCompat:提供了設置DataSetObserver的方法:setDataSetObserver()

接下來看具體使用的部分:MainActivity

package com.way.newversion;import android.os.Bundle; import android.support.v4.app.FragmentActivity;import com.way.directionalviewpager.DirectionalViewPager;public class MainActivity extends FragmentActivity {private DirectionalViewPager mDirectionalViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Set up the pagermDirectionalViewPager = (DirectionalViewPager) findViewById(R.id.pager);mDirectionalViewPager.setAdapter(new TestFragmentAdapter(getSupportFragmentManager()));mDirectionalViewPager.setOrientation(DirectionalViewPager.VERTICAL);//設置方向垂直即可。}}

實際應用中,我們直接用DirectionalViewPager代替ViewPager,再設置其滑動方向即可,既可以水平,也可以垂直,一個setOritation直接搞定.

看到了吧,實現(xiàn)上下滑動的效果就這么簡單.在此不得不致敬JakeWharton這位大牛在開源項目上的貢獻,讓我們這些開發(fā)者受益頗深..



例子中其他部分,我只替換了資源圖片:

我們每個界面都是使用的Fragment,由于通用以及簡潔性,我這里就只使用一個TestFragment:

package com.way.newversion;import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView;public class TestFragment extends Fragment {private static final String KEY_CONTENT = "TestFragment:Content";private static final String KEY_ISLASTPIC = "TestFragment:IsLastPic";private int mContent;private boolean mIsLastPic;public static TestFragment newInstance(int content, boolean isLastPic) {TestFragment fragment = new TestFragment();fragment.mContent = content;fragment.mIsLastPic = isLastPic;return fragment;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {if ((savedInstanceState != null)&& savedInstanceState.containsKey(KEY_CONTENT)) {mContent = savedInstanceState.getInt(KEY_CONTENT);mIsLastPic = savedInstanceState.getBoolean(KEY_ISLASTPIC);}View root = inflater.inflate(R.layout.fragment_layout, container, false);ImageView iv = (ImageView) root.findViewById(R.id.iv);iv.setImageResource(mContent);Button btn = (Button) root.findViewById(R.id.btn);if (mIsLastPic)btn.setVisibility(View.VISIBLE);elsebtn.setVisibility(View.GONE);return root;}@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putInt(KEY_CONTENT, mContent);outState.putBoolean(KEY_ISLASTPIC, mIsLastPic);} }
接下來是所有fragment的Adapter:

package com.way.newversion;import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter;class TestFragmentAdapter extends FragmentPagerAdapter {protected static final int[] CONTENT = new int[] {R.drawable.biz_ad_new_version1_img0,R.drawable.biz_ad_new_version1_img1,R.drawable.biz_ad_new_version1_img2,R.drawable.biz_ad_new_version1_img3 };public TestFragmentAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int position) {boolean isLastPic = false;if (position == CONTENT.length - 1)isLastPic = true;return TestFragment.newInstance(CONTENT[position], isLastPic);}@Overridepublic int getCount() {return CONTENT.length;} }


好了,大概就是這樣,有需要的朋友可以下載代碼看看,很簡單的,最后注意一下,我這里并未實現(xiàn)背景跟隨滑動,加上之后會更加栩栩如生,這個就留給大家了。



轉(zhuǎn)載于:https://my.oschina.net/cjkall/blog/195803

總結

以上是生活随笔為你收集整理的Android之仿网易V3.5新特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。