From 8039a1b2fbfa3471b6f726d3e839d7867c81a84f Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 10 十月 2020 18:51:24 +0800 Subject: [PATCH] 资讯与小说集成 --- library-BaiduCPU/src/main/res/layout/native_cpu_view.xml | 2 library-ViewPagerIndicator/res/values/vpi__styles.xml | 12 BuWanVideo/res/layout/fragment_novel.xml | 7 BuWanVideo/src/com/weikou/beibeivideo/ui/main/HomeFragment.java | 47 library-ViewPagerIndicator/src/com/viewpagerindicator/MainTabPageIndicator.java | 12 library-BaiduCPU/src/main/res/values/styles.xml | 5 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeCPUView.java | 3 BuWanVideo/res/layout/item_recommend_home_type_ad.xml | 2 BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java | 2 library-BaiduCPU/src/main/res/values/colors.xml | 6 BuWanVideo/res/layout/sr_gdt_ad_view.xml | 143 +++ BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java | 157 +++ BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java | 292 ++++++ BuWanVideo/res/layout/item_recommend_home_type.xml | 2 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeVideoCPUView.java | 141 +++ BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java | 21 BuWanVideo/res/layout/search_result_activity.xml | 2 BuWanVideo/src/com/doudou/ysvideo/wxapi/WXEntryActivity.java | 3 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeSmallVideoCPUView.java | 142 +++ BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java | 28 BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java | 25 library-BaiduCPU/src/main/res/layout/item_baidu_video.xml | 131 +++ library-BaiduCPU/src/main/res/drawable/shape_baidu_title.xml | 8 library-ViewPagerIndicator/res/drawable/found__tab_indicator.xml | 38 BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java | 7 BuWanVideo/src/com/weikou/beibeivideo/util/UserUtil.java | 6 BuWanVideo/src/com/weikou/beibeivideo/util/browser/BaseBWJavaInterface.java | 11 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/adapter/BaiduCPUContentAdapter.java | 133 +++ BuWanVideo/src/com/weikou/beibeivideo/util/ad/CSJConstant.java | 6 BuWanVideo/src/com/weikou/beibeivideo/ui/main/MineFragment.java | 11 library-BaiduCPU/src/main/res/layout/item_baidu_small_video.xml | 83 ++ BuWanVideo/res/values/styles.xml | 1 library-BaiduCPU/src/main/res/drawable-xhdpi/ic_baidu_play.png | 0 library-BaiduCPU/src/main/res/layout/fragment_baidu_news_root.xml | 11 BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/NovelJNZFragment.java | 45 + library-BaiduCPU/src/main/res/values/dimens.xml | 6 BuWanVideo/res/layout/search_actvity.xml | 4 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsFragment.java | 85 - BuWanVideo/src/com/weikou/beibeivideo/ui/common/VideosFragment.java | 14 library-ViewPagerIndicator/src/com/viewpagerindicator/FoundTabPageIndicator.java | 102 +- library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java | 187 ++-- BuWanVideo/src/com/weikou/beibeivideo/entity/ad/PlayVideoPreADSetting.java | 67 + BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity.java | 23 BuWanVideo/res/layout/mine_fragment.xml | 42 BuWanVideo/res/layout/item_cate_recommend_top.xml | 2 library-mine/src/com/lcjian/library/util/glide/GlideRoundTransform.java | 82 ++ BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java | 5 BuWanVideo/res/layout/recommend_type_item.xml | 2 BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java | 5 BuWanVideo/src/com/weikou/beibeivideo/entity/recommend/HomeClass.java | 18 BuWanVideo/src/com/weikou/beibeivideo/ui/BaseActivity.java | 2 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuVideosFragment.java | 36 BuWanVideo/res/drawable-xhdpi/ic_tab_xiaoshuo.png | 0 BuWanVideo/res/layout/item_video_detail_ad.xml | 12 library-mine/src/com/lcjian/library/util/glide/GlideCircleTransform.java | 75 + library-BaiduCPU/src/main/res/drawable/shape_baidu_duration.xml | 7 BuWanVideo/src/com/weikou/beibeivideo/util/novel/NovelJNZUtil.java | 16 BuWanVideo/src/com/weikou/beibeivideo/ui/login/LoginActivity.java | 5 BuWanVideo/res/layout/fragment_recommend_category.xml | 1 BuWanVideo/res/values/dimens.xml | 8 BuWanVideo/res/drawable-xhdpi/ic_mine_novel.png | 0 BuWanVideo/res/layout/item_ad_list_small.xml | 2 BuWanVideo/res/layout/item_movie.xml | 8 library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuShortVideosFragment.java | 1 64 files changed, 1,986 insertions(+), 376 deletions(-) diff --git a/BuWanVideo/res/drawable-xhdpi/ic_mine_novel.png b/BuWanVideo/res/drawable-xhdpi/ic_mine_novel.png new file mode 100644 index 0000000..8d6e385 --- /dev/null +++ b/BuWanVideo/res/drawable-xhdpi/ic_mine_novel.png Binary files differ diff --git a/BuWanVideo/res/drawable-xhdpi/ic_tab_xiaoshuo.png b/BuWanVideo/res/drawable-xhdpi/ic_tab_xiaoshuo.png new file mode 100644 index 0000000..553bed1 --- /dev/null +++ b/BuWanVideo/res/drawable-xhdpi/ic_tab_xiaoshuo.png Binary files differ diff --git a/BuWanVideo/res/layout/fragment_novel.xml b/BuWanVideo/res/layout/fragment_novel.xml new file mode 100644 index 0000000..af65f24 --- /dev/null +++ b/BuWanVideo/res/layout/fragment_novel.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:id="@+id/fl_container" + android:layout_height="match_parent"> + +</FrameLayout> diff --git a/BuWanVideo/res/layout/fragment_recommend_category.xml b/BuWanVideo/res/layout/fragment_recommend_category.xml index 82d7378..94539cb 100644 --- a/BuWanVideo/res/layout/fragment_recommend_category.xml +++ b/BuWanVideo/res/layout/fragment_recommend_category.xml @@ -7,7 +7,6 @@ <FrameLayout - android:layout_marginTop="-10dp" android:id="@+id/fl_indicator" android:layout_width="match_parent" android:layout_height="wrap_content"></FrameLayout> diff --git a/BuWanVideo/res/layout/item_ad_list_small.xml b/BuWanVideo/res/layout/item_ad_list_small.xml index 611730b..b84795d 100644 --- a/BuWanVideo/res/layout/item_ad_list_small.xml +++ b/BuWanVideo/res/layout/item_ad_list_small.xml @@ -32,7 +32,7 @@ android:layout_height="wrap_content" android:ellipsize="end" android:lines="2" - android:textSize="11sp" + android:textSize="@dimen/video_list_title" android:paddingRight="8dp" android:textColor="@color/videoTitle" /> diff --git a/BuWanVideo/res/layout/item_cate_recommend_top.xml b/BuWanVideo/res/layout/item_cate_recommend_top.xml index c207678..9e2e07d 100644 --- a/BuWanVideo/res/layout/item_cate_recommend_top.xml +++ b/BuWanVideo/res/layout/item_cate_recommend_top.xml @@ -45,5 +45,5 @@ android:drawablePadding="5dp" android:gravity="center" android:text="鐑挱鎺ㄨ崘" - android:textSize="14sp" /> + android:textSize="@dimen/video_album_title" /> </LinearLayout> \ No newline at end of file diff --git a/BuWanVideo/res/layout/item_movie.xml b/BuWanVideo/res/layout/item_movie.xml index a1a117e..b5f95b8 100644 --- a/BuWanVideo/res/layout/item_movie.xml +++ b/BuWanVideo/res/layout/item_movie.xml @@ -46,9 +46,9 @@ android:gravity="end" android:paddingLeft="8dp" android:paddingRight="8dp" - android:textSize="10sp" android:singleLine="true" - android:textColor="@color/videoTag" /> + android:textColor="@color/videoTag" + android:textSize="@dimen/video_list_tag" /> <ImageView android:id="@+id/iv_ad_logo" @@ -67,9 +67,9 @@ android:layout_height="wrap_content" android:ellipsize="end" android:lines="2" - android:textSize="11sp" android:paddingRight="8dp" - android:textColor="@color/videoTitle" /> + android:textColor="@color/videoTitle" + android:textSize="@dimen/video_list_title" /> <LinearLayout android:layout_width="match_parent" diff --git a/BuWanVideo/res/layout/item_recommend_home_type.xml b/BuWanVideo/res/layout/item_recommend_home_type.xml index 59e623b..2b0cbe6 100644 --- a/BuWanVideo/res/layout/item_recommend_home_type.xml +++ b/BuWanVideo/res/layout/item_recommend_home_type.xml @@ -39,7 +39,7 @@ android:layout_toRightOf="@id/tv_category_icon" android:text="浠�涔堥" android:textColor="#DDDDDD" - android:textSize="16sp" /> + android:textSize="@dimen/video_album_title" /> <TextView android:id="@+id/tv_category_name2" diff --git a/BuWanVideo/res/layout/item_recommend_home_type_ad.xml b/BuWanVideo/res/layout/item_recommend_home_type_ad.xml index 157b729..3b50343 100644 --- a/BuWanVideo/res/layout/item_recommend_home_type_ad.xml +++ b/BuWanVideo/res/layout/item_recommend_home_type_ad.xml @@ -40,7 +40,7 @@ android:layout_toRightOf="@id/tv_category_icon" android:text="鎺ㄥ箍" android:textColor="#DDDDDD" - android:textSize="16sp" /> + android:textSize="@dimen/video_album_title"/> <TextView android:id="@+id/tv_category_name2" diff --git a/BuWanVideo/res/layout/item_video_detail_ad.xml b/BuWanVideo/res/layout/item_video_detail_ad.xml index 43da4cf..5258373 100644 --- a/BuWanVideo/res/layout/item_video_detail_ad.xml +++ b/BuWanVideo/res/layout/item_video_detail_ad.xml @@ -23,9 +23,9 @@ <FrameLayout android:id="@+id/custom_container" android:layout_width="match_parent" - android:background="@color/red" android:layout_height="match_parent" - android:layout_centerInParent="true"> + android:layout_centerInParent="true" + android:background="@color/red"> <!-- 鍘熺敓骞垮憡鐨勮棰戠粍浠� --> <com.qq.e.ads.nativ.MediaView @@ -71,6 +71,14 @@ </FrameLayout> </LinearLayout> </com.qq.e.ads.nativ.widget.NativeAdContainer> + + <FrameLayout + android:id="@+id/fl_ad" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone"></FrameLayout> + </com.lcjian.library.widget.RatioLayout> + </LinearLayout> diff --git a/BuWanVideo/res/layout/mine_fragment.xml b/BuWanVideo/res/layout/mine_fragment.xml index d9b38ee..59e6664 100644 --- a/BuWanVideo/res/layout/mine_fragment.xml +++ b/BuWanVideo/res/layout/mine_fragment.xml @@ -118,7 +118,7 @@ android:drawablePadding="15dp" android:text="@string/my_favourites" android:textColor="#DCDCDC" - android:textSize="10sp" /> + android:textSize="@dimen/mine_item_name" /> </LinearLayout> <LinearLayout @@ -144,7 +144,7 @@ android:drawablePadding="15dp" android:text="鍏虫敞" android:textColor="#DCDCDC" - android:textSize="10sp" /> + android:textSize="@dimen/mine_item_name" /> </LinearLayout> <LinearLayout @@ -170,7 +170,33 @@ android:drawablePadding="15dp" android:text="璁板綍" android:textColor="#DCDCDC" - android:textSize="10sp" /> + android:textSize="@dimen/mine_item_name" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/ll_mine_novel" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center_horizontal" + android:orientation="vertical" + android:padding="8dp"> + + <ImageView + android:layout_width="wrap_content" + android:layout_height="24dp" + android:src="@drawable/ic_mine_novel"></ImageView> + + <TextView + android:id="@+id/tv_mine_novel" + style="@style/TextBlackMedium" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="9dp" + android:drawablePadding="15dp" + android:text="涔︽灦" + android:textColor="#DCDCDC" + android:textSize="@dimen/mine_item_name" /> </LinearLayout> </LinearLayout> @@ -209,7 +235,7 @@ android:layout_marginTop="28dp" android:text="绔欏唴娑堟伅" android:textColor="#ffdcdcdc" - android:textSize="10sp"></TextView> + android:textSize="@dimen/mine_item_name"></TextView> </RelativeLayout> <View @@ -235,7 +261,7 @@ android:layout_marginTop="28dp" android:text="鍒嗕韩杞欢" android:textColor="#ffdcdcdc" - android:textSize="10sp"></TextView> + android:textSize="@dimen/mine_item_name"></TextView> </RelativeLayout> <View @@ -261,7 +287,7 @@ android:layout_marginTop="28dp" android:text="甯姪涓績" android:textColor="#ffdcdcdc" - android:textSize="10sp"></TextView> + android:textSize="@dimen/mine_item_name"></TextView> </RelativeLayout> </LinearLayout> @@ -291,7 +317,7 @@ android:layout_marginTop="28dp" android:text="鍏充簬鎴戜滑" android:textColor="#ffdcdcdc" - android:textSize="10sp"></TextView> + android:textSize="@dimen/mine_item_name"></TextView> </RelativeLayout> <View @@ -317,7 +343,7 @@ android:layout_marginTop="28dp" android:text="璁剧疆" android:textColor="#ffdcdcdc" - android:textSize="10sp"></TextView> + android:textSize="@dimen/mine_item_name"></TextView> </RelativeLayout> <View diff --git a/BuWanVideo/res/layout/recommend_type_item.xml b/BuWanVideo/res/layout/recommend_type_item.xml index 410489e..f042cd2 100644 --- a/BuWanVideo/res/layout/recommend_type_item.xml +++ b/BuWanVideo/res/layout/recommend_type_item.xml @@ -37,7 +37,7 @@ android:layout_toRightOf="@id/tv_category_icon" android:paddingLeft="5dp" android:text="浠�涔堥" - android:textSize="16sp" /> + android:textSize="17sp" /> <TextView android:id="@+id/tv_category_name2" diff --git a/BuWanVideo/res/layout/search_actvity.xml b/BuWanVideo/res/layout/search_actvity.xml index 51fadf7..778e743 100644 --- a/BuWanVideo/res/layout/search_actvity.xml +++ b/BuWanVideo/res/layout/search_actvity.xml @@ -53,7 +53,7 @@ android:background="@null" android:textAppearance="?android:attr/textAppearance" android:textColor="@color/white" - android:textSize="12sp" + android:textSize="15sp" android:textCursorDrawable="@null" /> </LinearLayout> @@ -96,6 +96,7 @@ android:layout_height="wrap_content" android:padding="8dp" android:text="@string/hot_search" + android:textSize="14sp" android:textColor="#DDDDDD" /> <com.lcjian.library.widget.MyGridView @@ -140,6 +141,7 @@ android:layout_height="wrap_content"> <TextView + android:textSize="14sp" style="@style/TextBuleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" diff --git a/BuWanVideo/res/layout/search_result_activity.xml b/BuWanVideo/res/layout/search_result_activity.xml index af0074c..5cce209 100644 --- a/BuWanVideo/res/layout/search_result_activity.xml +++ b/BuWanVideo/res/layout/search_result_activity.xml @@ -52,7 +52,7 @@ android:textAppearance="?android:attr/textAppearance" android:textColor="@color/white" android:textCursorDrawable="@null" - android:textSize="12sp" /> + android:textSize="15sp" /> </LinearLayout> diff --git a/BuWanVideo/res/layout/sr_gdt_ad_view.xml b/BuWanVideo/res/layout/sr_gdt_ad_view.xml new file mode 100644 index 0000000..4f8fa5c --- /dev/null +++ b/BuWanVideo/res/layout/sr_gdt_ad_view.xml @@ -0,0 +1,143 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/root" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + <RelativeLayout + android:id="@+id/ad_info_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/colorAccent"> + + <!-- 鍘熺敓骞垮憡鐨勫皬鍥� --> + <ImageView + android:id="@+id/img_logo" + android:layout_width="64dp" + android:layout_height="64dp" + android:layout_alignParentLeft="true" + android:layout_alignParentTop="true" + android:layout_marginTop="10dp" + android:layout_marginRight="10dp" + android:layout_marginBottom="10dp" /> + + <!-- 鍘熺敓骞垮憡鐨勭偣鍑绘寜閽� --> + <Button + android:id="@+id/btn_download" + android:layout_width="60dp" + android:layout_height="30dp" + android:layout_alignTop="@id/img_logo" + android:layout_alignParentRight="true" + android:layout_marginLeft="10dp" + android:layout_marginRight="10dp" + android:background="#00000000" + android:textColor="@android:color/white" + android:textSize="14sp" /> + + <!-- 鍘熺敓骞垮憡鐨勬爣棰� --> + <TextView + android:id="@+id/text_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignTop="@id/img_logo" + android:layout_marginLeft="6dp" + android:layout_toLeftOf="@id/btn_download" + android:layout_toRightOf="@id/img_logo" + android:ellipsize="end" + android:singleLine="true" + android:textColor="#e0000000" /> + + <!-- 鍘熺敓骞垮憡鐨勬弿杩� --> + <TextView + android:id="@+id/text_desc" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/text_title" + android:layout_alignBottom="@id/img_logo" + android:layout_marginLeft="6dp" + android:layout_marginRight="6dp" + android:layout_toLeftOf="@id/btn_download" + android:layout_toRightOf="@id/img_logo" + android:textSize="10px" + android:ellipsize="end" + android:maxLines="2" + android:textColor="#a0000000" /> + </RelativeLayout> + <FrameLayout + android:id="@+id/custom_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_centerInParent="true"> + <!-- 鍘熺敓骞垮憡鐨勮棰戠粍浠� --> + <com.qq.e.ads.nativ.MediaView + android:id="@+id/gdt_media_view" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:background="#000" /> + <!-- 鍘熺敓骞垮憡鐨勫ぇ鍥� --> + <ImageView + android:id="@+id/img_poster" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:scaleType="fitXY" /> + + <!-- 鍘熺敓涓夊皬鍥� --> + <LinearLayout + android:id="@+id/native_3img_ad_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:id="@+id/native_3img_desc" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="5dp" + android:ellipsize="end" + android:textColor="@android:color/black" /> + + <LinearLayout + android:id="@+id/native_3img" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="5dp" + android:orientation="horizontal" + android:weightSum="3"> + + <ImageView + android:id="@+id/img_1" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="3dp" + android:layout_weight="1" + android:adjustViewBounds="true" + android:scaleType="fitXY" /> + + <ImageView + android:id="@+id/img_2" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="3dp" + android:layout_weight="1" + android:adjustViewBounds="true" + android:scaleType="fitXY" /> + + <ImageView + android:id="@+id/img_3" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="3dp" + android:layout_weight="1" + android:adjustViewBounds="true" + android:scaleType="fitXY" /> + </LinearLayout> + + <TextView + android:id="@+id/native_3img_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="5dp" + android:textColor="@android:color/black" /> + </LinearLayout> + </FrameLayout> +</LinearLayout> diff --git a/BuWanVideo/res/values/dimens.xml b/BuWanVideo/res/values/dimens.xml index 77e8628..7dc5207 100644 --- a/BuWanVideo/res/values/dimens.xml +++ b/BuWanVideo/res/values/dimens.xml @@ -7,10 +7,16 @@ <dimen name="text_size_medium">16sp</dimen> <dimen name="text_size_large">18sp</dimen> <dimen name="text_size_xlarge">22sp</dimen> - <dimen name="page_title_height">50dp</dimen> <dimen name="album_item_width_short">200dp</dimen> <dimen name="shadow_width">15dp</dimen> <dimen name="slidingmenu_offset">80dp</dimen> <dimen name="checkmark_area">40dip</dimen> + <dimen name="video_list_title">13sp</dimen> + <dimen name="video_list_tag">11sp</dimen> + <dimen name="mine_item_name">12sp</dimen> + <!--涓撹緫鏍囬 --> + <dimen name="video_album_title">17sp</dimen> + + </resources> \ No newline at end of file diff --git a/BuWanVideo/res/values/styles.xml b/BuWanVideo/res/values/styles.xml index 0ea1168..6f9a9cf 100644 --- a/BuWanVideo/res/values/styles.xml +++ b/BuWanVideo/res/values/styles.xml @@ -126,6 +126,7 @@ <item name="android:fadingEdgeLength">8dp</item> </style> + <style name="CustomTabPageIndicator1" parent="Widget.TabPageIndicator1"> <item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item> <item name="android:textColor">@color/selector_category_two_text</item> diff --git a/BuWanVideo/src/com/doudou/ysvideo/wxapi/WXEntryActivity.java b/BuWanVideo/src/com/doudou/ysvideo/wxapi/WXEntryActivity.java index 4093a28..d33fa1c 100644 --- a/BuWanVideo/src/com/doudou/ysvideo/wxapi/WXEntryActivity.java +++ b/BuWanVideo/src/com/doudou/ysvideo/wxapi/WXEntryActivity.java @@ -23,6 +23,7 @@ import com.weikou.beibeivideo.BeibeiVideoApplication; import com.weikou.beibeivideo.ui.BaseActivity; import com.weikou.beibeivideo.util.UserUtil; +import com.weikou.beibeivideo.util.novel.NovelJNZUtil; import org.apache.http.Header; import org.json.JSONObject; @@ -136,6 +137,8 @@ user.optString("sex")); edit.commit(); + NovelJNZUtil.setUid(getApplicationContext()); + SingleToast.showToast(getApplicationContext(), "鐧诲綍鎴愬姛"); } else { diff --git a/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java b/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java index e0101c8..3ad4942 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoAPI.java @@ -715,7 +715,7 @@ public static void getChoiceClass(Context context, String uid, ResponseHandlerInterface handler) { LinkedHashMap<String, String> params = new LinkedHashMap<String, String>(); - params.put("Method", "getVideoClass"); + params.put("Method", "getHomeClass"); params.put("Uid", uid); commonPost(context, BASE_URL + "class", params, handler); } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java b/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java index 60d5a97..b25af7e 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.graphics.Color; import android.support.multidex.MultiDex; import android.util.Log; @@ -30,7 +31,10 @@ import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.CrashHandler; import com.weikou.beibeivideo.util.FunshionConstant; +import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.util.ad.TTAdManagerHolder; +import com.weikou.beibeivideo.util.downutil.StringUtils; +import com.weikou.beibeivideo.util.novel.NovelJNZUtil; public class BeibeiVideoApplication extends Application { public static BeibeiVideoApplication application = null; @@ -75,12 +79,26 @@ initCSJAd(); GDTADManager.getInstance().initWith(this, BeibeiConstant.GDT_ID); initWX(); - //鍒濆鍖栨挱鏀炬彃浠� - FSPlayer.init(this, FunshionConstant.APICODE); + try { + //鍒濆鍖栨挱鏀炬彃浠� + FSPlayer.init(this, FunshionConstant.APICODE); + } catch (Exception e) { + + } //鐧惧害鍐呭鑱旂洘 - AppActivity.setActionBarColorTheme(AppActivity.ActionBarColorTheme.ACTION_BAR_BLACK_THEME); - //鑱氳兘璧� - YmConfig.initNovel(this,"8845"); + try { + AppActivity.setActionBarColorTheme(AppActivity.ActionBarColorTheme.ACTION_BAR_BLACK_THEME); + } catch (Exception e) { + + } + try { + //鑱氳兘璧� + YmConfig.initNovel(this, "8845"); + NovelJNZUtil.setUid(this); + } catch (Exception e) { + + } + } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/entity/ad/PlayVideoPreADSetting.java b/BuWanVideo/src/com/weikou/beibeivideo/entity/ad/PlayVideoPreADSetting.java new file mode 100644 index 0000000..f5d73cd --- /dev/null +++ b/BuWanVideo/src/com/weikou/beibeivideo/entity/ad/PlayVideoPreADSetting.java @@ -0,0 +1,67 @@ +package com.weikou.beibeivideo.entity.ad; + +import com.weikou.beibeivideo.util.BeibeiConstant; +import com.weikou.beibeivideo.util.ad.AdUtil; +import com.weikou.beibeivideo.util.ad.GDTConstant; + +import java.io.Serializable; + +//瑙嗛鍓嶈创骞垮憡鐨勯厤缃俊鎭� +public class PlayVideoPreADSetting implements Serializable { + private AdUtil.AD_TYPE adType;//csj鎴栬�単dt + private String gdtAppId;//骞跨偣閫氱殑APPId + private String gdtPid;//骞跨偣閫氱殑PID + private String csjPid;//绌垮北鐢茬殑pid + + public PlayVideoPreADSetting(AdUtil.AD_TYPE adType, String gdtAppId, String gdtPid, String csjPid) { + this.adType = adType; + this.gdtAppId = gdtAppId; + this.gdtPid = gdtPid; + this.csjPid = csjPid; + } + + public AdUtil.AD_TYPE getAdType() { + return adType; + } + + public void setAdType(AdUtil.AD_TYPE adType) { + this.adType = adType; + } + + public String getGdtAppId() { + return gdtAppId; + } + + public void setGdtAppId(String gdtAppId) { + this.gdtAppId = gdtAppId; + } + + public String getGdtPid() { + return gdtPid; + } + + public void setGdtPid(String gdtPid) { + this.gdtPid = gdtPid; + } + + public String getCsjPid() { + return csjPid; + } + + public void setCsjPid(String csjPid) { + this.csjPid = csjPid; + } + + public static class PlayVideoPreADSettingFactory { + //榛樿骞跨偣閫� + public static PlayVideoPreADSetting createDefault() { + return new PlayVideoPreADSetting(AdUtil.AD_TYPE.gdt, BeibeiConstant.GDT_ID, GDTConstant.PID_VIDEO_DETAIL_PLAYER, null); + } + + public static PlayVideoPreADSetting createGDT(String appId, String pid) { + return new PlayVideoPreADSetting(AdUtil.AD_TYPE.gdt, appId, pid, null); + } + + } + +} diff --git a/BuWanVideo/src/com/weikou/beibeivideo/entity/recommend/HomeClass.java b/BuWanVideo/src/com/weikou/beibeivideo/entity/recommend/HomeClass.java new file mode 100644 index 0000000..5f73c30 --- /dev/null +++ b/BuWanVideo/src/com/weikou/beibeivideo/entity/recommend/HomeClass.java @@ -0,0 +1,18 @@ +package com.weikou.beibeivideo.entity.recommend; + +import com.google.gson.annotations.Expose; +import com.weikou.beibeivideo.entity.VideoType; + +public class HomeClass extends VideoType { + + @Expose + private String dataType;//鏁版嵁绫诲瀷 "recommend"-鎺ㄨ崘 "class"-鍒嗙被 "novel"-灏忚 + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } +} diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/BaseActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/BaseActivity.java index d96b06c..401bf4f 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/BaseActivity.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/BaseActivity.java @@ -38,7 +38,7 @@ // if (res.getConfiguration().fontScale != 1) {//闈為粯璁ゅ�� Configuration newConfig = new Configuration(); newConfig.setToDefaults();//璁剧疆榛樿 - newConfig.fontScale=1.2f; + newConfig.fontScale=1.0f; res.updateConfiguration(newConfig, res.getDisplayMetrics()); // } return res; diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/ad/VideoDetailVideoAdFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java similarity index 76% rename from BuWanVideo/src/com/weikou/beibeivideo/ui/ad/VideoDetailVideoAdFragment.java rename to BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java index 5122282..98a6376 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/ad/VideoDetailVideoAdFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java @@ -11,10 +11,15 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; +import com.bytedance.sdk.openadsdk.AdSlot; +import com.bytedance.sdk.openadsdk.TTAdManager; +import com.bytedance.sdk.openadsdk.TTAdNative; +import com.bytedance.sdk.openadsdk.TTSplashAd; import com.qq.e.ads.cfg.VideoOption; import com.qq.e.ads.nativ.MediaView; import com.qq.e.ads.nativ.NativeADEventListener; @@ -27,26 +32,34 @@ import com.qq.e.comm.constants.AdPatternType; import com.qq.e.comm.util.AdError; import com.weikou.beibeivideo.R; +import com.weikou.beibeivideo.entity.ad.PlayVideoPreADSetting; import com.weikou.beibeivideo.util.BeibeiConstant; +import com.weikou.beibeivideo.util.DimenUtils; import com.weikou.beibeivideo.util.ad.AdUtil; +import com.weikou.beibeivideo.util.ad.CSJConstant; import com.weikou.beibeivideo.util.ad.GDTConstant; +import com.weikou.beibeivideo.util.ad.TTAdManagerHolder; import com.weikou.beibeivideo.util.ui.IPageEventListener; import java.util.ArrayList; import java.util.Calendar; import java.util.List; -public class VideoDetailVideoAdFragment extends Fragment implements View.OnClickListener { +/** + * 瑙嗛鎾斁鍓嶈创骞垮憡 + */ +public class PlayVideoPreADFragment extends Fragment implements View.OnClickListener { - private final static String TAG = "VideoDetailVideoAdFragment"; - - + private final static String TAG = PlayVideoPreADFragment.class.getName(); private MediaView mediaView; private NativeAdContainer mContainer; - private NativeUnifiedADData mAdData; + //绌垮北鐢插箍鍛� + private FrameLayout fl_ad; + + private NativeUnifiedADData mGDTAdData; private TextView tv_skip; @@ -54,12 +67,21 @@ private IPageEventListener pageEventListener; + public static PlayVideoPreADFragment newInstance() { + Bundle bundle = new Bundle(); + + PlayVideoPreADFragment fragment = new PlayVideoPreADFragment(); + fragment.setArguments(bundle); + return fragment; + } + public void setPageEventListener(IPageEventListener pageEventListener) { this.pageEventListener = pageEventListener; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { + Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); } @@ -71,11 +93,14 @@ img_poster = root.findViewById(R.id.img_poster); tv_skip = root.findViewById(R.id.tv_skip); pb_progress = root.findViewById(R.id.pb_progress); + fl_ad = root.findViewById(R.id.fl_ad); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + View root = LayoutInflater.from(getContext()).inflate(R.layout.item_video_detail_ad, null); initView(root); tv_skip.setOnClickListener(this); @@ -93,8 +118,8 @@ timer = new Runnable() { @Override public void run() { - if (remainTime - (mAdData.getVideoCurrentPosition() / 1000) > 0) { - tv_skip.setText((remainTime - (mAdData.getVideoCurrentPosition() / 1000)) + "s鍚庡彲璺宠繃"); + if (remainTime - (mGDTAdData.getVideoCurrentPosition() / 1000) > 0) { + tv_skip.setText((remainTime - (mGDTAdData.getVideoCurrentPosition() / 1000)) + "s鍚庡彲璺宠繃"); tv_skip.setClickable(false); } else { tv_skip.setText("璺宠繃"); @@ -116,22 +141,108 @@ Runnable playErrorRunnable = null; public void loadVideoAD(final IVideoAdListener videoAdListener) { + loadVideoAD(videoAdListener, null); + } + + public void loadVideoAD(IVideoAdListener videoAdListener, PlayVideoPreADSetting setting) { + if (setting == null) + setting = PlayVideoPreADSetting.PlayVideoPreADSettingFactory.createDefault(); tv_skip.setVisibility(View.GONE); - if (mAdData != null) - mAdData.destroy(); + if (mGDTAdData != null) + mGDTAdData.destroy(); pb_progress.setVisibility(View.VISIBLE); - String pid = GDTConstant.PID_VIDEO_DETAIL_PLAYER; + String pid = setting.getGdtPid(); + //TODO 闇�瑕佸崟鐙垽鏂� if (AdUtil.getAdType(getContext(), AdUtil.POSITION_VIDEO_PLAY_PRE) != AdUtil.AD_TYPE.gdt) pid = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; - NativeUnifiedAD mAdManager = new NativeUnifiedAD(getContext(), pid, new NativeADUnifiedListener() { +// loadCSJ(CSJConstant.PLAY_VIDEO_PRE, videoAdListener); + loadGDT(setting.getGdtAppId(), pid, videoAdListener); + } + + + /** + * 鍔犺浇绌垮北鐢插箍鍛� + * + * @param code + * @param videoAdListener + */ + private void loadCSJ(String code, IVideoAdListener videoAdListener) { + + fl_ad.setVisibility(View.VISIBLE); + mContainer.setVisibility(View.GONE); + + TTAdManager ttAdManager = TTAdManagerHolder.get(); + TTAdNative mTTAdNative = ttAdManager.createAdNative(getContext()); + int width = DimenUtils.getScreenWidth(getContext()); + int height = width * 9 / 16; + + AdSlot adSlot = new AdSlot.Builder() + .setCodeId(code) + .setSupportDeepLink(true) + .setImageAcceptedSize(width, height) + .build(); + + mTTAdNative.loadSplashAd(adSlot, new TTAdNative.SplashAdListener() { + @Override + public void onError(int i, String s) { + videoAdListener.noAd(); + } + + @Override + public void onTimeout() { + videoAdListener.noAd(); + } + + @Override + public void onSplashAdLoad(TTSplashAd ad) { + fl_ad.removeAllViews(); + fl_ad.addView(ad.getSplashView()); + ad.setSplashInteractionListener(new TTSplashAd.AdInteractionListener() { + @Override + public void onAdClicked(View view, int i) { + + } + + @Override + public void onAdShow(View view, int i) { + Log.i(TAG, "onAdShow"); + } + + @Override + public void onAdSkip() { + videoAdListener.finishPlay(); + } + + @Override + public void onAdTimeOver() { + videoAdListener.finishPlay(); + } + }); + + + } + }); + } + + /** + * 鍔犺浇骞跨偣閫氬箍鍛� + * + * @param appId + * @param pid + * @param videoAdListener + */ + private void loadGDT(String appId, String pid, IVideoAdListener videoAdListener) { + fl_ad.setVisibility(View.GONE); + mContainer.setVisibility(View.VISIBLE); + NativeUnifiedAD mAdManager = new NativeUnifiedAD(getContext(), appId, pid, new NativeADUnifiedListener() { @Override public void onNoAD(AdError adError) {//娌℃湁骞垮憡 System.out.println(adError); pb_progress.setVisibility(View.GONE); if (videoAdListener != null) { - videoAdListener.finishPlay(); + videoAdListener.noAd(); } } @@ -140,7 +251,7 @@ System.out.println(list); final NativeUnifiedADData ad = list.get(0); //濉厖鍐呭 - mAdData = ad; + mGDTAdData = ad; List<View> clickableViews = new ArrayList<>(); ad.bindAdToView(getContext(), mContainer, null, clickableViews); @@ -152,7 +263,7 @@ @Override public void run() { if (pb_progress.getVisibility() == View.VISIBLE) { - mAdData.destroy(); + mGDTAdData.destroy(); if (videoAdListener != null) { videoAdListener.finishPlay(); } @@ -284,7 +395,7 @@ } else { pb_progress.setVisibility(View.GONE); if (videoAdListener != null) { - videoAdListener.finishPlay(); + videoAdListener.noAd(); } } } @@ -297,14 +408,13 @@ tv_skip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if (mAdData != null) - mAdData.stopVideo(); + if (mGDTAdData != null) + mGDTAdData.stopVideo(); if (videoAdListener != null) videoAdListener.finishPlay(); tv_skip.setVisibility(View.GONE); } }); - } @@ -360,18 +470,18 @@ public void onResume() { Log.i(TAG, "onResume"); super.onResume(); - if (mAdData != null) { + if (mGDTAdData != null) { // 蹇呴』瑕佸湪Activity.onResume()鏃堕�氱煡鍒板箍鍛婃暟鎹紝浠ヤ究閲嶇疆骞垮憡鎭㈠鐘舵�� - mAdData.resume(); + mGDTAdData.resume(); } } @Override public void onDestroy() { super.onDestroy(); - if (mAdData != null) { + if (mGDTAdData != null) { // 蹇呴』瑕佸湪Actiivty.destroy()鏃堕�氱煡鍒板箍鍛婃暟鎹紝浠ヤ究閲婃斁鍐呭瓨 - mAdData.destroy(); + mGDTAdData.destroy(); } if (img_poster != null && timer != null) img_poster.removeCallbacks(timer); @@ -399,6 +509,9 @@ //缁撴潫鎾斁 public void finishPlay(); + //娌℃湁骞垮憡濉厖 + public void noAd(); + //寮�濮嬫挱鏀� public void startPlay(); diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/common/VideosFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/common/VideosFragment.java index f69d56b..ebaff8c 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/common/VideosFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/common/VideosFragment.java @@ -33,6 +33,7 @@ import com.weikou.beibeivideo.ui.video.VideoCloumn1Adapter; import com.weikou.beibeivideo.ui.video.VideoColumn2Adapter; import com.weikou.beibeivideo.util.DimenUtils; +import com.weikou.beibeivideo.util.UserUtil; import com.weikou.beibeivideo.util.ui.DividerItemDecoration; import com.weikou.beibeivideo.R; @@ -150,7 +151,7 @@ type = (VideoType) getArguments().getSerializable("videotype"); - if(getArguments()!=null) + if (getArguments() != null) getArguments().clear(); mHomeType = getActivity().getIntent().getStringExtra("home_type"); @@ -164,7 +165,6 @@ mHomeType = (mHomeType == null ? "" : mHomeType); mVideoType = (mVideoType == null ? "" : mVideoType); mStarId = (mStarId == null ? "" : mStarId); - mVideoInfos = new ArrayList<>(); @@ -189,9 +189,9 @@ } private void getVideoList() { - SharedPreferences preferences = rv_category_video.getContext().getSharedPreferences( - "user", Context.MODE_PRIVATE); - String uid = preferences.getString("uid", ""); + String uid = UserUtil.getUid(rv_category_video.getContext()); + if (type == null) + return; BeibeiVideoAPI.getVideoList(rv_category_video.getContext(), uid, mStarId, mHomeType, type.getId(), String.valueOf(mCurrentPage), category_two + "", type.getCategoryType(), new BasicTextHttpResponseHandler() { @@ -256,8 +256,8 @@ @Override public void onClick(View v) { - TextView tv_new= view.findViewById(R.id.tv_more_new); - TextView tv_hot= view.findViewById(R.id.tv_more_hot); + TextView tv_new = view.findViewById(R.id.tv_more_new); + TextView tv_hot = view.findViewById(R.id.tv_more_hot); switch (v.getId()) { case R.id.iv_videosfragment_download_failure: diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/login/LoginActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/login/LoginActivity.java index e7ba066..b06c4a2 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/login/LoginActivity.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/login/LoginActivity.java @@ -41,6 +41,7 @@ import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.XGPush; import com.weikou.beibeivideo.R; +import com.weikou.beibeivideo.util.novel.NovelJNZUtil; import org.apache.http.Header; import org.json.JSONException; @@ -240,6 +241,8 @@ data.get("gender")); edit.commit(); + NovelJNZUtil.setUid(getApplicationContext()); + SingleToast.showToast(LoginActivity.this, "鐧诲綍鎴愬姛"); XGPush.registerPush(LoginActivity.this); @@ -395,6 +398,8 @@ response.getString("gender")); edit.commit(); + NovelJNZUtil.setUid(getApplicationContext()); + SingleToast.showToast(LoginActivity.this, "鐧诲綍鎴愬姛"); XGPush.registerPush(LoginActivity.this); diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/main/HomeFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/main/HomeFragment.java index c0d5379..0962b84 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/main/HomeFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/main/HomeFragment.java @@ -9,33 +9,31 @@ import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; -import android.util.Log; import android.view.View; -import android.view.ViewGroup; import android.widget.FrameLayout; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; -import com.lcjian.library.RetainViewFragment; import com.lcjian.library.util.cache.DiskLruCache; import com.lcjian.library.util.common.StorageUtils; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; -import com.viewpagerindicator.MTabPageIndicator; +import com.viewpagerindicator.IconPagerAdapter; import com.viewpagerindicator.MainTabPageIndicator; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; +import com.weikou.beibeivideo.R; import com.weikou.beibeivideo.entity.VideoType; +import com.weikou.beibeivideo.entity.recommend.HomeClass; import com.weikou.beibeivideo.ui.MyRetainViewFragment; import com.weikou.beibeivideo.ui.dialog.UserProtocolDialog; +import com.weikou.beibeivideo.ui.recommend.NovelJNZFragment; import com.weikou.beibeivideo.ui.recommend.RecommendFragment; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.UserUtil; -import com.weikou.beibeivideo.R; import org.apache.http.Header; import org.json.JSONObject; @@ -54,6 +52,8 @@ */ public class HomeFragment extends MyRetainViewFragment { + + private final String TAG = HomeFragment.class.getName(); /* * viewpager瀹氫箟 */ @@ -195,7 +195,7 @@ getCategories(); } - List<VideoType> categories = new ArrayList<>(); + List<HomeClass> categories = new ArrayList<>(); int count = 1; @@ -216,10 +216,10 @@ .create(); categories.clear(); - List<VideoType> list = gson.fromJson( + List<HomeClass> list = gson.fromJson( jsonObject.getJSONObject("Data") .getJSONArray("data").toString(), - new TypeToken<List<VideoType>>() { + new TypeToken<List<HomeClass>>() { }.getType()); categories.addAll(list); @@ -247,14 +247,14 @@ }); } - class HomePageAdapter extends FragmentStatePagerAdapter { + class HomePageAdapter extends FragmentStatePagerAdapter implements IconPagerAdapter { private FragmentManager fm; - private List<VideoType> mlist; + private List<HomeClass> mlist; - private Map<Integer, Fragment> fragments = new HashMap<>(); + private Map<String, Fragment> fragments = new HashMap<>(); - public HomePageAdapter(FragmentManager fm, List<VideoType> list) { + public HomePageAdapter(FragmentManager fm, List<HomeClass> list) { super(fm); this.fm = fm; this.mlist = list; @@ -262,8 +262,20 @@ @Override public Fragment getItem(int position) { - Fragment fragment = RecommendFragment.newInstance(mlist.get(position), position + ""); - return fragment; + if ("novel".equalsIgnoreCase(mlist.get(position).getDataType())) { + return NovelJNZFragment.newInstance(); + } else { + Fragment fragment = RecommendFragment.newInstance(mlist.get(position), position + ""); + return fragment; + } + } + + @Override + public int getIconResId(int index) { + if ("novel".equalsIgnoreCase(mlist.get(index).getDataType())) + return R.drawable.ic_tab_xiaoshuo; + else + return 0; } @Override @@ -291,7 +303,10 @@ @Nullable @Override public CharSequence getPageTitle(int position) { - return mlist.get(position).getName(); + if ("novel".equalsIgnoreCase(mlist.get(position).getDataType())) + return ""; + else + return mlist.get(position).getName(); } } } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java index 60b37fc..787816e 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java @@ -75,6 +75,7 @@ import com.weikou.beibeivideo.util.ad.manager.SearchResultAdManager; import com.weikou.beibeivideo.R; import com.yeshi.ec.library_baiducpu.fragment.BaiDuNewsFragment; +import com.yeshi.ec.library_baiducpu.fragment.BaiDuVideosFragment; import com.ysh.wpc.appupdate.AppUpdate; import org.apache.http.Header; @@ -212,7 +213,7 @@ mFragmentSwitchHelper = FragmentSwitchHelper.create( R.id.fl_main_fragment_container, getSupportFragmentManager(), new HomeFragment(), new CategoryFragment(), - new BaiDuNewsFragment(), new MineFragment(), new GuessLikeFragment()); + new BaiDuNewsFragment(), new MineFragment(), new BaiDuVideosFragment()); rg_nav = findViewById(R.id.rg_nav); rg_nav.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @@ -231,7 +232,7 @@ break; case R.id.rb_guess_like: { mFragmentSwitchHelper - .changeFragment(GuessLikeFragment.class); + .changeFragment(BaiDuVideosFragment.class); } break; case R.id.rb_nav_discover: { diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MineFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MineFragment.java index 018652e..19ffe94 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MineFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/main/MineFragment.java @@ -20,7 +20,9 @@ import android.widget.TextView; import android.widget.Toast; +import com.androidquery.AQuery; import com.bumptech.glide.Glide; +import com.iBookStar.views.YmConfig; import com.lcjian.library.RetainViewFragment; import com.lcjian.library.content.ConnectivityChangeHelper; import com.lcjian.library.content.ConnectivityChangeHelper.OnConnectivityChangeListener; @@ -77,6 +79,8 @@ private ConnectivityChangeHelper mChangeHelper; + private AQuery mAquery; + private TextView tv_login;// 鐢ㄦ埛鍚� private TextView tv_name; private ImageView iv_user_logo;// 鐢ㄦ埛澶村儚 @@ -109,6 +113,7 @@ @Override public void onCreateView(View contentView, Bundle savedInstanceState) { + mAquery = new AQuery(contentView); tv_no_network = (TextView) contentView.findViewById(R.id.tv_no_network); tv_no_network.setOnClickListener(this); @@ -164,6 +169,7 @@ ll_mine_favourite.setOnClickListener(this); ll_mine_follow.setOnClickListener(this); ll_mine_watch_history.setOnClickListener(this); + mAquery.id(R.id.ll_mine_novel).clicked(this); rl_mine_about_us.setOnClickListener(this); rl_mine_message.setOnClickListener(this); @@ -242,6 +248,11 @@ case R.id.ll_mine_follow: startActivity(new Intent(tv_no_network.getContext(), FollowActivity.class)); break; + + //涔︽灦 + case R.id.ll_mine_novel: + YmConfig.openReader(); + break; case R.id.rl_mine_message: openMsg(); break; diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java index 10d84f2..8ff46c4 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java @@ -188,8 +188,8 @@ if (rv_episode.getLayoutManager() == null) rv_episode.setLayoutManager(ms); - - rv_episode.addItemDecoration(new SpacesItemDecoration(DimenUtils.dip2px(getContext(), 10))); + if (rv_episode.getItemDecorationCount() == 0) + rv_episode.addItemDecoration(new SpacesItemDecoration(DimenUtils.dip2px(getContext(), 10))); } @@ -219,14 +219,19 @@ public void onCreateView(View contentView, Bundle savedInstanceState) { Log.i(TAG, "onCreateView"); EventBus.getDefault().register(this); - mVideoInfo = (VideoInfo) getArguments() + Bundle bundle = getArguments(); + mVideoInfo = (VideoInfo) bundle .getSerializable("video_info"); - mPlayingPosition = getArguments().getInt("playing_position"); - mStart = getArguments().getInt("start"); - mEnd = getArguments().getInt("end"); + mPlayingPosition = bundle.getInt("playing_position"); + mStart = bundle.getInt("start"); + mEnd = bundle.getInt("end"); - if (getArguments() != null) - getArguments().clear(); + if (bundle != null) + bundle.clear(); + + //闃叉娌℃湁鍐呭宕╂簝 + if (mVideoInfo == null) + return; tv_video_resource = contentView.findViewById(R.id.tv_video_resource); ll_add_attention = contentView.findViewById(R.id.ll_add_attention); diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity.java index 6239563..9c6f25b 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity.java @@ -26,7 +26,6 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; -import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -44,7 +43,6 @@ import com.lcjian.library.util.common.DimenUtils; import com.lcjian.library.util.common.StringUtils; import com.loopj.android.http.JsonHttpResponseHandler; -import com.umeng.analytics.MobclickAgent; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; import com.weikou.beibeivideo.BeibeiVideoApplication; @@ -59,9 +57,8 @@ import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.entity.VideoResource; import com.weikou.beibeivideo.ui.BaseActivity; -import com.weikou.beibeivideo.ui.ad.VideoDetailVideoAdFragment; +import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment; import com.weikou.beibeivideo.ui.common.ShareActivity; -import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.ui.mine.FXBrowserActivity; import com.weikou.beibeivideo.ui.video.VideoPlayerActivity; import com.weikou.beibeivideo.util.BeibeiConstant; @@ -107,7 +104,7 @@ private FragmentManager fm = getSupportFragmentManager(); - private VideoDetailVideoAdFragment mVideoDetailVideoAdFragment; + private PlayVideoPreADFragment mVideoDetailVideoAdFragment; private ImageView iv_select_play; @@ -155,7 +152,7 @@ /** * 骞垮憡 */ - mVideoDetailVideoAdFragment = new VideoDetailVideoAdFragment(); + mVideoDetailVideoAdFragment = new PlayVideoPreADFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.fl_ad, mVideoDetailVideoAdFragment).commit(); @@ -221,7 +218,7 @@ return; } } - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( (int) SystemCommon.getScreenWidth(this), (int) ((SystemCommon.getScreenWidth(this) * 9) / 16)); findViewById(R.id.fragment_video_play_container1).setLayoutParams( @@ -311,7 +308,7 @@ iv_select_play.setVisibility(View.GONE); if (fl_ad.getVisibility() == View.VISIBLE && BeibeiConstant.AD_TYPE != null && BeibeiConstant.AD_TYPE.isPlayerAd()) { - mVideoDetailVideoAdFragment.loadVideoAD(new VideoDetailVideoAdFragment.IVideoAdListener() { + mVideoDetailVideoAdFragment.loadVideoAD(new PlayVideoPreADFragment.IVideoAdListener() { @Override public void finishPlay() { clickPlay(); @@ -321,6 +318,12 @@ @Override public void startPlay() { + } + + @Override + public void noAd() { + clickPlay(); + fl_ad.setVisibility(View.GONE); } }); } else { @@ -406,7 +409,7 @@ findViewById(R.id.fl_video_detail).setVisibility(View.GONE); findViewById(R.id.v_status_bar).setVisibility(View.GONE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - android.widget.RelativeLayout.LayoutParams params = new android.widget.RelativeLayout.LayoutParams( + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); findViewById(R.id.fragment_video_play_container1).setLayoutParams( params); @@ -481,7 +484,7 @@ e.printStackTrace(); } findViewById(R.id.v_status_bar).setVisibility(View.VISIBLE); - android.widget.RelativeLayout.LayoutParams params = new android.widget.RelativeLayout.LayoutParams( + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( (int) SystemCommon.getScreenWidth(this), (int) ((SystemCommon.getScreenWidth(this) * 9) / 16)); findViewById(R.id.fragment_video_play_container1).setLayoutParams( diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java index 7b135c9..e4f9041 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java @@ -60,7 +60,7 @@ import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.entity.VideoResource; import com.weikou.beibeivideo.ui.BaseActivity; -import com.weikou.beibeivideo.ui.ad.VideoDetailVideoAdFragment; +import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment; import com.weikou.beibeivideo.ui.common.ShareActivity; import com.weikou.beibeivideo.ui.video.FunshionPlayerFragment; import com.weikou.beibeivideo.ui.video.VideoPlayerActivity; @@ -107,7 +107,7 @@ private FragmentManager fm = getSupportFragmentManager(); - private VideoDetailVideoAdFragment mVideoDetailVideoAdFragment; + private PlayVideoPreADFragment mVideoDetailVideoAdFragment; //椋庤鎾斁鍣� private FunshionPlayerFragment mFunshionPlayerFragment; @@ -156,7 +156,7 @@ } //骞垮憡 - mVideoDetailVideoAdFragment = new VideoDetailVideoAdFragment(); + mVideoDetailVideoAdFragment = new PlayVideoPreADFragment(); //鎾斁鍣� mFunshionPlayerFragment = new FunshionPlayerFragment(); @@ -311,20 +311,26 @@ BeibeiConstant.AD_TYPE = null; //闇�瑕佸姞杞藉箍鍛� if (BeibeiConstant.AD_TYPE != null && BeibeiConstant.AD_TYPE.isPlayerAd()) { - mVideoDetailVideoAdFragment = new VideoDetailVideoAdFragment(); + mVideoDetailVideoAdFragment = new PlayVideoPreADFragment(); mVideoDetailVideoAdFragment.setPageEventListener(new IPageEventListener() { @Override public void onCreateView() { - mVideoDetailVideoAdFragment.loadVideoAD(new VideoDetailVideoAdFragment.IVideoAdListener() { + mVideoDetailVideoAdFragment.loadVideoAD(new PlayVideoPreADFragment.IVideoAdListener() { @Override public void finishPlay() { - getSupportFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment); + getSupportFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commit(); clickPlay();//杩涘叆鎾斁浜嬩欢 } @Override public void startPlay() { + } + + @Override + public void noAd() { + getSupportFragmentManager().beginTransaction().remove(mVideoDetailVideoAdFragment).commit(); + clickPlay();//杩涘叆鎾斁浜嬩欢 } }); } @@ -567,9 +573,10 @@ params1.height = 0; // Hide the status bar闅愯棌鐘舵�佹爮 - WindowManager.LayoutParams attrs = getWindow().getAttributes(); - attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; - getWindow().setAttributes(attrs); + //娴嬭瘯 涓嶅仛鍏ㄥ睆 +// WindowManager.LayoutParams attrs = getWindow().getAttributes(); +// attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; +// getWindow().setAttributes(attrs); Fragment videoDetailFragment = getSupportFragmentManager() .findFragmentByTag("VideoDetailFragment"); diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/NovelJNZFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/NovelJNZFragment.java new file mode 100644 index 0000000..6fec1ab --- /dev/null +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/NovelJNZFragment.java @@ -0,0 +1,45 @@ +package com.weikou.beibeivideo.ui.recommend; + +import android.content.res.Configuration; +import android.content.res.Resources; +import android.os.Bundle; +import android.view.View; +import android.widget.FrameLayout; + +import com.iBookStar.views.YmWebView; +import com.lcjian.library.RetainViewFragment; +import com.weikou.beibeivideo.R; + +/** + * 鑱氳兘璧氬皬璇磃ragment + */ +public class NovelJNZFragment extends RetainViewFragment { + + private FrameLayout fl_container; + + + public static NovelJNZFragment newInstance() { + NovelJNZFragment fragment = new NovelJNZFragment(); + return fragment; + } + + @Override + public void onCreateView(View contentView, Bundle savedInstanceState) { + fl_container = contentView.findViewById(R.id.fl_container); + YmWebView wv = new YmWebView(getContext()); + fl_container.removeAllViews(); + fl_container.addView(wv); + wv.openBookStore(); + } + + + @Override + public int getContentResource() { + return R.layout.fragment_novel; + } + + @Override + public void onResume() { + super.onResume(); + } +} diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java index 7002ac0..90124df 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/RecommendFragment.java @@ -46,6 +46,7 @@ import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.entity.VideoType; import com.weikou.beibeivideo.entity.ad.ExpressAdContainer; +import com.weikou.beibeivideo.entity.recommend.HomeClass; import com.weikou.beibeivideo.ui.category.bean.HotStar; import com.weikou.beibeivideo.ui.mine.BrowserActivity; import com.weikou.beibeivideo.util.BeibeiConstant; @@ -103,8 +104,8 @@ private Context context; - public static Fragment newInstance(VideoType type, String position) { - if (Integer.parseInt(position) < 2) { + public static Fragment newInstance(HomeClass type, String position) { + if ("recommend".equalsIgnoreCase(type.getDataType())) { RecommendFragment fragment = new RecommendFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("videotype", type); diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java index c217327..295d34b 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java @@ -6,6 +6,7 @@ import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.res.Configuration; +import android.graphics.Bitmap; import android.media.MediaPlayer; import android.net.ConnectivityManager; import android.net.NetworkInfo; @@ -17,18 +18,29 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.Button; import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.Toast; +import com.androidquery.AQuery; +import com.androidquery.callback.AjaxStatus; +import com.androidquery.callback.BitmapAjaxCallback; +import com.bumptech.glide.Glide; import com.fun.xm.Definition; import com.fun.xm.FSCallback; import com.fun.xm.FSIVideoPlayer; import com.fun.xm.FSPlayer; import com.fun.xm.FSVideoReqData; import com.fun.xm.ad.FSAD; +import com.fun.xm.ad.FSSRAdData; import com.fun.xm.ad.FSThirdAd; import com.fun.xm.ad.adloader.FSPreMediaAdLoader; +import com.fun.xm.ad.adloader.FSSRFeedAdLoader; +import com.fun.xm.ad.adview.FSFeedAD; import com.fun.xm.ad.adview.FSPreMediaView; +import com.fun.xm.ad.callback.FSFeedAdCallBack; import com.fun.xm.ad.callback.FSPreMediaAdCallBack; import com.funshion.video.logger.FSLogcat; import com.funshion.video.util.FSError; @@ -41,6 +53,12 @@ import com.lcjian.library.video.VideoEpisode; import com.lcjian.library.video.VideoPlayerController; import com.lcjian.library.widget.RatioLayout; +import com.qq.e.ads.cfg.VideoOption; +import com.qq.e.ads.nativ.MediaView; +import com.qq.e.ads.nativ.NativeADMediaListener; +import com.qq.e.ads.nativ.NativeUnifiedADData; +import com.qq.e.comm.constants.AdPatternType; +import com.qq.e.comm.util.AdError; import com.weikou.beibeivideo.BasicTextHttpResponseHandler; import com.weikou.beibeivideo.BeibeiVideoAPI; import com.weikou.beibeivideo.BeibeiVideoApplication; @@ -50,7 +68,9 @@ import com.weikou.beibeivideo.entity.VideoDetailInfo; import com.weikou.beibeivideo.entity.VideoInfo; import com.weikou.beibeivideo.entity.VideoResource; +import com.weikou.beibeivideo.entity.ad.PlayVideoPreADSetting; import com.weikou.beibeivideo.entity.video.FunshionPlayInfo; +import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment; import com.weikou.beibeivideo.util.DimenUtils; import com.weikou.beibeivideo.util.FunshionConstant; import com.weikou.beibeivideo.util.UserUtil; @@ -100,7 +120,7 @@ private FrameLayout fl_container, fl_ad; //椋庤骞垮憡鍔犺浇鍣� - private FSPreMediaAdLoader fsPreMediaAdLoader; + private FSSRFeedAdLoader fssrFeedAdLoader; private FSPreMediaView mFSVideoAD; @@ -141,7 +161,7 @@ private void initAd() { FSAD.init(getContext().getApplicationContext(), Collections.singletonList(FunshionConstant.AD_ADP), FunshionConstant.AD_PARTENER, FunshionConstant.AD_TOKEN, FunshionConstant.AD_CHANNEL, FunshionConstant.AD_PRE_DOWNLOAD_CHANNEL); - fsPreMediaAdLoader = new FSPreMediaAdLoader(getContext(), FunshionConstant.AD_CHANNEL); + fssrFeedAdLoader = new FSSRFeedAdLoader(getContext(), FunshionConstant.AD_CHANNEL); } private void loadAD() { @@ -149,40 +169,7 @@ int width = fl_ad.getWidth(); int height = fl_ad.getHeight(); Log.i(TAG, String.format("fl_ad: width:%s height:%s", width, height)); - fsPreMediaAdLoader.loadAD(adid, "", width, height, true, false, new FSPreMediaAdCallBack() { - @Override - public void onCreate(FSPreMediaView fsadView) { - mFSVideoAD = fsadView; - fl_ad.removeAllViews(); - fl_ad.addView(fsadView); - } - - @Override - public void onCreateThirdAD(List<FSThirdAd> fsThirdAd) { - - } - - @Override - public void onClose() { - adShowFinish(); - } - - @Override - public void onADLoad() { - if (null != mFSVideoAD) { - mFSVideoAD.showAD(); - } - } - - @Override - public void onVideoComplete() { - adShowFinish(); - } - - @Override - public void onADShow() { - - } + fssrFeedAdLoader.loadAD(adid, "", width, height, true, false, new FSFeedAdCallBack() { @Override public void onClick() { @@ -190,12 +177,238 @@ } @Override - public void onAdLoadedFail(int param1Int, String param1String) { - Log.v(TAG, "onAdLoadedFail param1Int:" + param1Int + " MSG:" + param1String); - adShowFinish(); + public void onAdLoadedFail(int i, String s) { + Log.i(TAG,"onAdLoadedFail:"+s); + } + + @Override + public void onCreate(FSFeedAD fsADView) { + Log.i(TAG,"onCreate"); + NativeUnifiedADData gdtad = fsADView.getAd(); + FSSRAdData fsad = fsADView.getFSAd(); + if (null != gdtad) { + //骞跨偣閫氭暟鎹嚜娓叉煋 + initGDTSelfRenderView(fsADView, gdtad); + } + if (null != fsad) { + //椋庤鏁版嵁鑷覆鏌� + initFSSelfRenderView(fsADView, fsad); + } + if (fsADView.getParent() != null) { + ((ViewGroup) fsADView.getParent()).removeAllViews(); + } + fl_ad.removeAllViews(); + fl_ad.addView(fsADView); + fsADView.render(); + } + + @Override + public void onCreateThirdAD(List<FSThirdAd> list) { + Log.i(TAG,"onCreateThirdAD"); + } + + @Override + public void onADShow() { + Log.i(TAG,"onADShow"); } }); + + } + + private void initFSSelfRenderView(final FSFeedAD fsADView, FSSRAdData fsad) { + if (fsad.isImage()) { + ImageView imageView = new ImageView(getContext()); + Glide.with(this).load(fsad.getMaterial()).into(imageView); + List<View> clickableViews = new ArrayList<>(); + clickableViews.add(imageView); + fsADView.bindAdToView(imageView, clickableViews, null); + } else if (fsad.isVideo()) { + MediaView mediaView = new MediaView(getContext()); + fsADView.bindMediaView(mediaView, null, null); + + final Button button = new Button(getContext()); + button.setText("鎵撳紑澹伴煶"); + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (fsADView.isMute()) { + fsADView.setMute(false); + button.setText("鍏抽棴澹伴煶"); + } else { + fsADView.setMute(true); + button.setText("鎵撳紑澹伴煶"); + } + } + }); + List<View> clickableViews = new ArrayList<>(); + fsADView.bindAdToView(button, clickableViews, null); + } + } + + + //骞跨偣閫氬箍鍛婃帶浠� + protected AQuery mAQuery; + protected Button mDownloadButton; + protected MediaView mMediaView; + protected ImageView mImagePoster; + protected LinearLayout mNative3imgAdContainer; + + //鑷覆鏌搗iew + private void initGDTSelfRenderView(FSFeedAD fsADView, NativeUnifiedADData ad) { + View mContainer = getLayoutInflater().inflate(R.layout.sr_gdt_ad_view, null); + mDownloadButton = mContainer.findViewById(R.id.btn_download); + mMediaView = mContainer.findViewById(R.id.gdt_media_view); + mImagePoster = mContainer.findViewById(R.id.img_poster); + mNative3imgAdContainer = mContainer.findViewById(R.id.native_3img_ad_container); + mAQuery = new AQuery(mContainer); + int patternType = ad.getAdPatternType(); + if (patternType == AdPatternType.NATIVE_VIDEO) { + ViewGroup.LayoutParams params = mContainer.getLayoutParams(); + if (null == params) { + params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + } else { + params.height = FrameLayout.LayoutParams.MATCH_PARENT; + } + mContainer.setLayoutParams(params); + + } + if (patternType == AdPatternType.NATIVE_2IMAGE_2TEXT + || patternType == AdPatternType.NATIVE_VIDEO) { + mAQuery.id(R.id.img_poster).visibility(View.VISIBLE); + mAQuery.id(R.id.img_logo).image(ad.getIconUrl(), false, true); + Log.v(TAG, "Imgurl:" + ad.getImgUrl()); + mAQuery.id(R.id.img_poster).image(ad.getImgUrl(), false, true, 0, 0, + new BitmapAjaxCallback() { + @Override + protected void callback(String url, ImageView iv, Bitmap bm, AjaxStatus status) { + if (iv.getVisibility() == View.VISIBLE) { + iv.setImageBitmap(bm); + } + } + }); + mAQuery.id(R.id.text_title).textColor(R.color.colorAccent); + mAQuery.id(R.id.text_title).text(ad.getTitle()); + mAQuery.id(R.id.text_desc).text(ad.getDesc()); + } else if (patternType == AdPatternType.NATIVE_3IMAGE) { + mAQuery.id(R.id.img_1).image(ad.getImgList().get(0), false, true); + mAQuery.id(R.id.img_2).image(ad.getImgList().get(1), false, true); + mAQuery.id(R.id.img_3).image(ad.getImgList().get(2), false, true); + mAQuery.id(R.id.native_3img_title).text(ad.getTitle()); + mAQuery.id(R.id.native_3img_desc).text(ad.getDesc()); + } else if (patternType == AdPatternType.NATIVE_1IMAGE_2TEXT) { + mAQuery.id(R.id.img_logo).image(ad.getImgUrl(), false, true); + mAQuery.id(R.id.img_poster).clear(); + mAQuery.id(R.id.text_title).text(ad.getTitle()); + mAQuery.id(R.id.text_desc).text(ad.getDesc()); + } + + List<View> clickableViews = new ArrayList<>(); + List<View> customClickableViews = new ArrayList<>(); + // 鎵�鏈夊箍鍛婄被鍨嬶紝娉ㄥ唽mDownloadButton鐨勭偣鍑讳簨浠� + clickableViews.add(mDownloadButton); + if (ad.getAdPatternType() == AdPatternType.NATIVE_2IMAGE_2TEXT || + ad.getAdPatternType() == AdPatternType.NATIVE_1IMAGE_2TEXT) { + // 鍙屽浘鍙屾枃銆佸崟鍥惧弻鏂囷細娉ㄥ唽mImagePoster鐨勭偣鍑讳簨浠� + clickableViews.add(mImagePoster); + } else if (ad.getAdPatternType() != AdPatternType.NATIVE_VIDEO) { + // 涓夊皬鍥惧箍鍛婏細娉ㄥ唽native_3img_ad_container鐨勭偣鍑讳簨浠� + clickableViews.add(mNative3imgAdContainer); + } + //浣滀负customClickableViews浼犲叆锛岀偣鍑讳笉杩涘叆璇︽儏椤碉紝鐩存帴涓嬭浇鎴栬繘鍏ヨ惤鍦伴〉锛屽彧鏈夎棰戝箍鍛婄敓鏁堬紝 + // 濡傛灉鏄浘鏂囷紝clickableViews鍜宑ustomClickableViews鐐瑰嚮閫昏緫涓�鑷� + fsADView.bindAdToView(mContainer, clickableViews, mDownloadButton); + + if (ad.getAdPatternType() == AdPatternType.NATIVE_VIDEO) { + // 瑙嗛骞垮憡锛屾敞鍐宮MediaView鐨勭偣鍑讳簨浠� + fsADView.post(new Runnable() { + @Override + public void run() { + Log.v(TAG, "showAd type video 2"); + mImagePoster.setVisibility(View.GONE); + mMediaView.setVisibility(View.VISIBLE); +// ad.startVideo(); + } + }); + + VideoOption.Builder builder = new VideoOption.Builder(); + + builder.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.ALWAYS); + builder.setAutoPlayMuted(false); + builder.setDetailPageMuted(false); + builder.setNeedCoverImage(true); + builder.setNeedProgressBar(true); + builder.setEnableDetailPage(true); + builder.setEnableUserControl(false); + VideoOption videoOption = builder.build(); + fsADView.bindMediaView(mMediaView, videoOption, new NativeADMediaListener() { + @Override + public void onVideoInit() { + Log.d(TAG, "onVideoInit: "); + } + + @Override + public void onVideoLoading() { + Log.d(TAG, "onVideoLoading: "); + } + + @Override + public void onVideoReady() { + Log.d(TAG, "onVideoReady"); + } + + @Override + public void onVideoLoaded(int videoDuration) { + Log.d(TAG, "onVideoLoaded: "); + } + + @Override + public void onVideoStart() { + Log.d(TAG, "onVideoStart"); + } + + @Override + public void onVideoStop() { + Log.d(TAG, "onVideoStop"); + } + + @Override + public void onVideoPause() { + Log.d(TAG, "onVideoPause: "); + } + + @Override + public void onVideoResume() { + Log.d(TAG, "onVideoResume: "); + } + + @Override + public void onVideoClicked() { + Log.d(TAG, "onVideoClicked"); + } + + @Override + public void onVideoCompleted() { + Log.d(TAG, "onVideoCompleted: "); + } + + @Override + public void onVideoError(AdError error) { + + } + + }); + ad.startVideo(); + } else if (ad.getAdPatternType() == AdPatternType.NATIVE_2IMAGE_2TEXT || + ad.getAdPatternType() == AdPatternType.NATIVE_1IMAGE_2TEXT) { + // 鍙屽浘鍙屾枃銆佸崟鍥惧弻鏂囷細娉ㄥ唽mImagePoster鐨勭偣鍑讳簨浠� + clickableViews.add(mImagePoster); + } else { + // 涓夊皬鍥惧箍鍛婏細娉ㄥ唽native_3img_ad_container鐨勭偣鍑讳簨浠� + clickableViews.add(mNative3imgAdContainer); + } + } + //骞垮憡灞曠ず瀹屾垚 private void adShowFinish() { @@ -601,6 +814,7 @@ vpc_funshion.setNetworkInfo(networkInfo, false); } } + } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java b/BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java index d09c9a3..bc5b24f 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java @@ -3,6 +3,7 @@ import android.app.Activity; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; @@ -128,6 +129,12 @@ params.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(params); dialog.setCanceledOnTouchOutside(false); + dialog.setOnDismissListener(new OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + fl_advertisement.removeAllViews(); + } + }); return dialog; } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/UserUtil.java b/BuWanVideo/src/com/weikou/beibeivideo/util/UserUtil.java index df1c054..ae80b98 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/util/UserUtil.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/util/UserUtil.java @@ -47,4 +47,10 @@ String uid = preferences.getString("uid", ""); return uid; } + + public static String getLoginUid(Context context) { + SharedPreferences preferences = context.getSharedPreferences("user", MODE_PRIVATE); + String uid = preferences.getString("LoginUid", ""); + return uid; + } } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/CSJConstant.java b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/CSJConstant.java index 4dc990a..2e06b6f 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/CSJConstant.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/CSJConstant.java @@ -12,8 +12,12 @@ public static String SPLASH_AD = "887360667"; //杞欢閫�鍑哄箍鍛� - public static String APP_EXIT="945469133"; + public static String APP_EXIT = "945469133"; + //瑙嗛鍓嶈创 + public static String PLAY_VIDEO_PRE = "887389927"; + + //鏃犳晥骞垮憡 public static String INVALID_AD = "111111111"; } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/browser/BaseBWJavaInterface.java b/BuWanVideo/src/com/weikou/beibeivideo/util/browser/BaseBWJavaInterface.java index 5c8f5d4..e352280 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/util/browser/BaseBWJavaInterface.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/util/browser/BaseBWJavaInterface.java @@ -9,6 +9,7 @@ import com.alibaba.baichuan.android.trade.model.OpenType; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; +import com.iBookStar.views.YmConfig; import com.lcjian.library.util.SystemCommon; import com.lcjian.library.util.common.ClipboardUtil; import com.lcjian.library.util.common.PackageUtils2; @@ -126,7 +127,7 @@ params.put("Package", mContext.getPackageName()); params.put("Version", version + ""); params.put("Device", SystemCommon.getDeviceId(mContext)); - params.put("Time",System.currentTimeMillis()+""); + params.put("Time", System.currentTimeMillis() + ""); LinkedHashMap<String, String> map = BeibeiVideoAPI.validateParams(params, mContext); Gson gson = new Gson(); @@ -153,4 +154,12 @@ public void clearClipboard() { ClipboardUtil.emptyClipboard(mContext); } + + + //杩涘叆灏忚 + @JavascriptInterface + public void openNovel() { + YmConfig.openReader(); + } + } diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/novel/NovelJNZUtil.java b/BuWanVideo/src/com/weikou/beibeivideo/util/novel/NovelJNZUtil.java new file mode 100644 index 0000000..dbd667f --- /dev/null +++ b/BuWanVideo/src/com/weikou/beibeivideo/util/novel/NovelJNZUtil.java @@ -0,0 +1,16 @@ +package com.weikou.beibeivideo.util.novel; + +import android.content.Context; + +import com.iBookStar.views.YmConfig; +import com.weikou.beibeivideo.util.UserUtil; +import com.weikou.beibeivideo.util.downutil.StringUtils; + +public class NovelJNZUtil { + + public static void setUid(Context context) { + String uid = UserUtil.getLoginUid(context); + if (!StringUtils.isNullOrEmpty(uid)) + YmConfig.setOutUserId(uid); + } +} diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/adapter/BaiduCPUContentAdapter.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/adapter/BaiduCPUContentAdapter.java new file mode 100644 index 0000000..e80da5f --- /dev/null +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/adapter/BaiduCPUContentAdapter.java @@ -0,0 +1,133 @@ +package com.yeshi.ec.library_baiducpu.adapter; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RelativeLayout; + +import com.androidquery.AQuery; +import com.baidu.mobads.nativecpu.IBasicCPUData; +import com.yeshi.ec.library_baiducpu.R; +import com.yeshi.ec.library_baiducpu.entity.NativeCPUView; +import com.yeshi.ec.library_baiducpu.entity.NativeSmallVideoCPUView; +import com.yeshi.ec.library_baiducpu.entity.NativeVideoCPUView; +import com.yeshi.ec.library_baiducpu.fragment.BaiDuCPUContentFragment; + +import java.util.List; + +public class BaiduCPUContentAdapter extends RecyclerView.Adapter { + + private LayoutInflater inflater; + private AQuery aq; + private View footerView; + + private Context mContext; + + private List<IBasicCPUData> nrAdList; + + private final int TYPE_FOOTER = 1; + private final int TYPE_CONTENT = 2; + private int viewType; + + public BaiduCPUContentAdapter(Context context, int viewType, List<IBasicCPUData> nrAdList) { + inflater = LayoutInflater.from(context); + aq = new AQuery(context); + this.nrAdList = nrAdList; + this.mContext = context; + this.viewType = viewType; + } + + public void setFooterView(View footerView) { + this.footerView = footerView; + } + + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == TYPE_CONTENT) + return new ViewHolder(inflater.inflate(R.layout.item_baidu_news, null, false)); + else + return new FooterViewHolder(footerView); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder instanceof ViewHolder) { + ViewHolder viewHolder = (ViewHolder) holder; + final IBasicCPUData nrAd = nrAdList.get(position); + if (viewType == BaiDuCPUContentFragment.VIEW_TYPE_NEWS) { + NativeCPUView cpuView = new NativeCPUView(mContext); + if (cpuView.getParent() != null) { + ((ViewGroup) cpuView.getParent()).removeView(cpuView); + } + cpuView.setItemData(nrAd, aq); + viewHolder.rl_container.removeAllViews(); + viewHolder.rl_container.addView(cpuView); + nrAd.onImpression(viewHolder.view); + } else if (viewType == BaiDuCPUContentFragment.VIEW_TYPE_SMALLVIDEO) { + NativeSmallVideoCPUView cpuView = new NativeSmallVideoCPUView(mContext); + if (cpuView.getParent() != null) { + ((ViewGroup) cpuView.getParent()).removeView(cpuView); + } + cpuView.setItemData(nrAd, aq); + viewHolder.rl_container.removeAllViews(); + viewHolder.rl_container.addView(cpuView); + nrAd.onImpression(viewHolder.view); + } else if (viewType == BaiDuCPUContentFragment.VIEW_TYPE_VIDEO) { + NativeVideoCPUView cpuView = new NativeVideoCPUView(mContext); + if (cpuView.getParent() != null) { + ((ViewGroup) cpuView.getParent()).removeView(cpuView); + } + cpuView.setItemData(nrAd, aq); + viewHolder.rl_container.removeAllViews(); + viewHolder.rl_container.addView(cpuView); + nrAd.onImpression(viewHolder.view); + } + + viewHolder.view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + nrAd.handleClick(view); + } + }); + } + } + + @Override + public int getItemCount() { + int count = nrAdList.size(); + if (footerView != null) + count++; + return count; + } + + @Override + public int getItemViewType(int position) { + if (position >= nrAdList.size()) + return TYPE_FOOTER; + else + return TYPE_CONTENT; + } + + class ViewHolder extends RecyclerView.ViewHolder { + RelativeLayout rl_container; + View view; + + public ViewHolder(View itemView) { + super(itemView); + view = itemView; + rl_container = itemView.findViewById(R.id.native_outer_view); + } + } + + class FooterViewHolder extends RecyclerView.ViewHolder { + public FooterViewHolder(View itemView) { + super(itemView); + } + } + +} diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeCPUView.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeCPUView.java index 52a0519..b100479 100644 --- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeCPUView.java +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeCPUView.java @@ -18,6 +18,7 @@ import com.androidquery.callback.BitmapAjaxCallback; import com.baidu.mobads.nativecpu.IBasicCPUData; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; import com.yeshi.ec.library_baiducpu.R; import java.text.SimpleDateFormat; @@ -220,7 +221,7 @@ // } // }); - Glide.with(view.getContext()).load(data).transition(withCrossFade()).into( aq.id(view).getImageView()); + Glide.with(view.getContext()).load(data).apply(new RequestOptions().centerCrop().placeholder(R.color.img_bg)).transition(withCrossFade()).into( aq.id(view).getImageView()); } } } diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeSmallVideoCPUView.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeSmallVideoCPUView.java new file mode 100644 index 0000000..f24203c --- /dev/null +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeSmallVideoCPUView.java @@ -0,0 +1,142 @@ +package com.yeshi.ec.library_baiducpu.entity; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.util.AttributeSet; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.androidquery.AQuery; +import com.baidu.mobads.nativecpu.IBasicCPUData; +import com.bumptech.glide.Glide; +import com.google.gson.Gson; +import com.lcjian.library.util.glide.GlideCircleTransform; +import com.yeshi.ec.library_baiducpu.R; + +import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; + +public class NativeSmallVideoCPUView extends RelativeLayout { + + private final String TAG="NativeSmallVideoCPUView"; + + private final static long TIME_SECOND_YEAR = 365 * 24 * 60 * 60; + private final static long TIME_SECOND_MONTH = 30 * 24 * 60 * 60; + private final static long TIME_SECOND_DAY = 24 * 60 * 60; + private final static long TIME_SECOND_HOUR = 60 * 60; + private final static long TIME_SECOND_MINUTE = 60; + + private View mContainer; + private ImageView iv_video_pciture; + private LinearLayout ll_author_info, ll_ad_info; + private TextView tv_title; + private ImageView iv_portrait; + private TextView tv_play_count; + + + private String mType; // news,image,video,ad + private String mTitle; + + public NativeSmallVideoCPUView(Context context) { + this(context, null); + } + + public NativeSmallVideoCPUView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public NativeSmallVideoCPUView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(context, attrs); + } + + private void initView(Context context, AttributeSet attrs) { + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mContainer = inflater.inflate(R.layout.item_baidu_small_video, this, true); + iv_video_pciture = mContainer.findViewById(R.id.iv_video_pciture); + ll_author_info = mContainer.findViewById(R.id.ll_author_info); + ll_ad_info = mContainer.findViewById(R.id.ll_ad_info); + tv_title = mContainer.findViewById(R.id.tv_title); + iv_portrait = mContainer.findViewById(R.id.iv_portrait); + tv_play_count = mContainer.findViewById(R.id.tv_play_count); + } + + public void setItemData(final IBasicCPUData data, AQuery aq) { + if (data != null) { + mType = data.getType(); // news,image,video,ad + mTitle = data.getTitle(); + //灞曠ず骞垮憡鍥剧墖 + + Log.i(TAG,"logo:"+data.getBaiduLogoUrl()); + Log.i(TAG,"thumbUrl:"+data.getThumbUrl()); + Log.i(TAG,"getImageUrls:"+new Gson().toJson(data.getImageUrls())); + Log.i(TAG,"getSmallImageUrls:"+new Gson().toJson(data.getSmallImageUrls())); + Log.i(TAG,"getExtra:"+new Gson().toJson(data.getExtra())); + + tv_title.setText(data.getTitle()); + if ("ad".equalsIgnoreCase(mType)) { + ll_ad_info.setVisibility(VISIBLE); + ll_author_info.setVisibility(GONE); + ll_ad_info.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + // show app privacy + startActivityForUrl(data.getAppPrivacyUrl()); + } + }); + ll_ad_info.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + // show app permission list + startActivityForUrl(data.getAppPermissionUrl()); + } + }); + Glide.with(getContext()).load(data.getImageUrls().get(0)).transition(withCrossFade()).into(iv_video_pciture); + } else { + + ll_ad_info.setVisibility(GONE); + ll_author_info.setVisibility(VISIBLE); + if ("smallvideo".equalsIgnoreCase(mType)) { + Glide.with(getContext()).load(data.getVUrl()).transition(withCrossFade()).into(iv_video_pciture); + Glide.with(getContext()).load(data.getIconUrl()).transform(new GlideCircleTransform(getContext())).transition(withCrossFade()).into(iv_portrait); + tv_play_count.setText(getFormatPlayCounts(data.getPlayCounts())); + } + } + } + } + + + private String getFormatPlayCounts(int playCounts) { + StringBuilder sb = new StringBuilder(""); + if (playCounts < 0) { + sb.append(0); + } else if (playCounts < 10000) { + sb.append(playCounts); + } else { + sb.append(playCounts / 10000); + int remain = playCounts % 10000; + if (remain > 0) { + sb.append(".").append(remain / 1000); + } + sb.append("涓�"); + } + sb.append("娆℃挱鏀�"); + return sb.toString(); + } + + private void startActivityForUrl(String url) { + try { + Intent intent = new Intent(); + intent.setData(Uri.parse(url)); + intent.setAction(Intent.ACTION_VIEW); + getContext().startActivity(intent); + } catch (Throwable tr) { + Log.e("NativeCPUView", "Show url error: " + tr.getMessage()); + } + } +} diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeVideoCPUView.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeVideoCPUView.java new file mode 100644 index 0000000..e57565b --- /dev/null +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/entity/NativeVideoCPUView.java @@ -0,0 +1,141 @@ +package com.yeshi.ec.library_baiducpu.entity; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.util.AttributeSet; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.androidquery.AQuery; +import com.baidu.mobads.nativecpu.IBasicCPUData; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.lcjian.library.util.glide.GlideCircleTransform; +import com.yeshi.ec.library_baiducpu.R; + +import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; + +public class NativeVideoCPUView extends RelativeLayout { + + private final static long TIME_SECOND_YEAR = 365 * 24 * 60 * 60; + private final static long TIME_SECOND_MONTH = 30 * 24 * 60 * 60; + private final static long TIME_SECOND_DAY = 24 * 60 * 60; + private final static long TIME_SECOND_HOUR = 60 * 60; + private final static long TIME_SECOND_MINUTE = 60; + + private View mContainer; + private ImageView iv_video_pciture; + private LinearLayout ll_author_info, ll_ad_info; + private TextView tv_title; + private ImageView iv_portrait; + private TextView tv_name; + private ImageView iv_baidu_logo; + private ImageView iv_play; + + + private String mType; // news,image,video,ad + private String mTitle; + + public NativeVideoCPUView(Context context) { + this(context, null); + } + + public NativeVideoCPUView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public NativeVideoCPUView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(context, attrs); + } + + private void initView(Context context, AttributeSet attrs) { + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mContainer = inflater.inflate(R.layout.item_baidu_video, this, true); + iv_video_pciture = mContainer.findViewById(R.id.iv_video_pciture); + ll_author_info = mContainer.findViewById(R.id.ll_author_info); + ll_ad_info = mContainer.findViewById(R.id.ll_ad_info); + tv_title = mContainer.findViewById(R.id.tv_title); + iv_portrait = mContainer.findViewById(R.id.iv_portrait); + tv_name = mContainer.findViewById(R.id.tv_name); + iv_baidu_logo = mContainer.findViewById(R.id.iv_baidu_logo); + iv_play = mContainer.findViewById(R.id.iv_play); + } + + public void setItemData(final IBasicCPUData data, AQuery aq) { + if (data != null) { + mType = data.getType(); // news,image,video,ad + mTitle = data.getTitle(); + //灞曠ず骞垮憡鍥剧墖 + + tv_title.setText(data.getTitle()); + if ("ad".equalsIgnoreCase(mType)) { + iv_play.setVisibility(View.GONE); + ll_ad_info.setVisibility(VISIBLE); + ll_author_info.setVisibility(GONE); + Glide.with(getContext()).load(data.getImageUrls().get(0)).apply(new RequestOptions().centerCrop().placeholder(R.color.img_bg)).transition(withCrossFade()).into(iv_video_pciture); + Glide.with(getContext()).load(data.getBaiduLogoUrl()).apply(new RequestOptions().centerCrop().placeholder(R.color.img_bg)).transition(withCrossFade()).into(iv_baidu_logo); + + ll_ad_info.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + // show app privacy + startActivityForUrl(data.getAppPrivacyUrl()); + } + }); + ll_ad_info.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + // show app permission list + startActivityForUrl(data.getAppPermissionUrl()); + } + }); + } else { + iv_play.setVisibility(View.VISIBLE); + ll_ad_info.setVisibility(GONE); + ll_author_info.setVisibility(VISIBLE); + if ("video".equalsIgnoreCase(mType)) { + Glide.with(getContext()).load(data.getThumbUrl()).transition(withCrossFade()).apply(new RequestOptions().centerCrop().placeholder(R.color.img_bg)).into(iv_video_pciture); + Glide.with(getContext()).load(data.getIconUrl()).apply(new RequestOptions().centerCrop()).transform(new GlideCircleTransform(getContext())).transition(withCrossFade()).into(iv_portrait); + tv_name.setText(data.getAuthor()); + } + } + } + } + + + private String getFormatPlayCounts(int playCounts) { + StringBuilder sb = new StringBuilder(""); + if (playCounts < 0) { + sb.append(0); + } else if (playCounts < 10000) { + sb.append(playCounts); + } else { + sb.append(playCounts / 10000); + int remain = playCounts % 10000; + if (remain > 0) { + sb.append(".").append(remain / 1000); + } + sb.append("涓�"); + } + sb.append("娆℃挱鏀�"); + return sb.toString(); + } + + private void startActivityForUrl(String url) { + try { + Intent intent = new Intent(); + intent.setData(Uri.parse(url)); + intent.setAction(Intent.ACTION_VIEW); + getContext().startActivity(intent); + } catch (Throwable tr) { + Log.e("NativeCPUView", "Show url error: " + tr.getMessage()); + } + } +} diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java similarity index 67% rename from library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java rename to library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java index f928360..03af61a 100644 --- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsContentFragment.java +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuCPUContentFragment.java @@ -1,21 +1,19 @@ package com.yeshi.ec.library_baiducpu.fragment; -import android.content.Context; +import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.Rect; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v4.widget.SwipeRefreshLayout; +import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.Gravity; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.RelativeLayout; import android.widget.TextView; -import com.androidquery.AQuery; import com.baidu.mobad.feeds.RequestParameters; import com.baidu.mobads.nativecpu.CPUAdRequest; import com.baidu.mobads.nativecpu.CpuLpFontSize; @@ -25,7 +23,7 @@ import com.lcjian.library.util.common.DimenUtils; import com.ut.device.UTDevice; import com.yeshi.ec.library_baiducpu.R; -import com.yeshi.ec.library_baiducpu.entity.NativeCPUView; +import com.yeshi.ec.library_baiducpu.adapter.BaiduCPUContentAdapter; import com.yeshi.ec.library_baiducpu.entity.SpinnerItem; import java.util.ArrayList; @@ -34,7 +32,12 @@ /** * 鐧惧害璧勮 */ -public class BaiDuNewsContentFragment extends RetainViewFragment implements NativeCPUManager.CPUAdListener { +public class BaiDuCPUContentFragment extends RetainViewFragment implements NativeCPUManager.CPUAdListener { + + public final static int VIEW_TYPE_NEWS = 1; + public final static int VIEW_TYPE_SMALLVIDEO = 2; + public final static int VIEW_TYPE_VIDEO = 3; + private final String YOUR_APP_ID = "be796ac7"; // 鍙屽紩鍙蜂腑濉啓鑷繁鐨凙PPSID private List<IBasicCPUData> nrAdList = new ArrayList<IBasicCPUData>(); private NativeCPUManager mCpuManager; @@ -45,17 +48,20 @@ private boolean isLoad; - private MyAdapter adapter; + private BaiduCPUContentAdapter adapter; private final static String TAG = "BaiDuNewsContent"; private TextView footerView; + private int viewType; - public static BaiDuNewsContentFragment newInstance(SpinnerItem spinnerItem) { - BaiDuNewsContentFragment fragment = new BaiDuNewsContentFragment(); + + public static BaiDuCPUContentFragment newInstance(SpinnerItem spinnerItem, int viewType) { + BaiDuCPUContentFragment fragment = new BaiDuCPUContentFragment(); Bundle bundle = new Bundle(); bundle.putSerializable("item", spinnerItem); + bundle.putInt("viewType", viewType); fragment.setArguments(bundle); return fragment; } @@ -84,6 +90,8 @@ isLoad = true; if (nrAdList != null && nrAdList.size() > 0) footerView.setVisibility(View.VISIBLE); + else + footerView.setVisibility(View.GONE); loadAd(currentPage); } } @@ -107,9 +115,55 @@ footerView.setTextSize(12); } + RecyclerView.ItemDecoration itemDecoration2 = new RecyclerView.ItemDecoration() { + @Override + public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { + super.onDraw(c, parent, state); + } + + @Override + public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { + super.onDrawOver(c, parent, state); + } + + @Override + public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + int index = parent.getChildAdapterPosition(view); + int total = parent.getAdapter().getItemCount(); + int minWidth = DimenUtils.dipToPixels(2, view.getContext()); + if (index % 2 == 0) { + outRect.left = 0; //绗竴鍒楀乏杈硅创杈� + outRect.right = minWidth; + } else { + outRect.right = 0; //绗竴鍒楀乏杈硅创杈� + outRect.left = minWidth; + } + + if (index - 1 > 0) { + outRect.top = minWidth; + } else + outRect.top = 0; + + if (total % 2 == 0) { + if (total > 2 && (index < total - 2)) + outRect.bottom = minWidth; + else + outRect.bottom = 0; + } else { + if (total > 2 && (index < total - 1)) + outRect.bottom = minWidth; + else + outRect.bottom = 0; + } + } + }; + + private void initData() { Bundle bundle = getArguments(); SpinnerItem item = (SpinnerItem) bundle.getSerializable("item"); + viewType = bundle.getInt("viewType"); bundle.clear(); mChannelId = item.getmId(); @@ -119,9 +173,27 @@ */ mCpuManager.setLpFontSize(CpuLpFontSize.SMALL); mCpuManager.setLpDarkMode(true); - adapter = new MyAdapter(getContext()); + adapter = new BaiduCPUContentAdapter(getContext(), viewType, nrAdList); rv_news.setAdapter(adapter); - rv_news.setLayoutManager(new LinearLayoutManager(getContext())); + + if (viewType == VIEW_TYPE_SMALLVIDEO) { + RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getContext(), 2); + rv_news.setLayoutManager(layoutManager); + //缁熶竴鍒嗕负2鍒� + ((GridLayoutManager) rv_news.getLayoutManager()).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (position >= nrAdList.size()) + return 2; + else + return 1; + } + }); + rv_news.addItemDecoration(itemDecoration2); + } else { + rv_news.setLayoutManager(new LinearLayoutManager(getContext())); + } + srl_news.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { @@ -165,6 +237,13 @@ @Override public void onAdLoaded(List<IBasicCPUData> list) { onLoadFinish(); + for (int i = list.size() - 1; i >= 0; i--) { + if ("ad".equalsIgnoreCase(list.get(i).getType())) { + list.remove(i--); + break; + } + } + int start = nrAdList.size(); if (currentPage == 1) { nrAdList.clear(); @@ -209,90 +288,6 @@ @Override public void onAdStatusChanged(String s) { - } - - class MyAdapter extends RecyclerView.Adapter { - private LayoutInflater inflater; - private AQuery aq; - private View footerView; - - private final int TYPE_FOOTER = 1; - private final int TYPE_CONTENT = 2; - - - public MyAdapter(Context context) { - inflater = LayoutInflater.from(getContext()); - aq = new AQuery(context); - } - - public void setFooterView(View footerView) { - this.footerView = footerView; - } - - - @NonNull - @Override - public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - if (viewType == TYPE_CONTENT) - return new ViewHolder(inflater.inflate(R.layout.item_baidu_news, null, false)); - else - return new FooterViewHolder(footerView); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof ViewHolder) { - ViewHolder viewHolder = (ViewHolder) holder; - final IBasicCPUData nrAd = nrAdList.get(position); - final NativeCPUView cpuView = new NativeCPUView(getContext()); - if (cpuView.getParent() != null) { - ((ViewGroup) cpuView.getParent()).removeView(cpuView); - } - cpuView.setItemData(nrAd, aq); - viewHolder.rl_container.removeAllViews(); - viewHolder.rl_container.addView(cpuView); - nrAd.onImpression(viewHolder.view); - viewHolder.view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - nrAd.handleClick(view); - } - }); - } - } - - @Override - public int getItemCount() { - int count = nrAdList.size(); - if (footerView != null) - count++; - return count; - } - - @Override - public int getItemViewType(int position) { - if (position >= nrAdList.size()) - return TYPE_FOOTER; - else - return TYPE_CONTENT; - } - - class ViewHolder extends RecyclerView.ViewHolder { - RelativeLayout rl_container; - View view; - - public ViewHolder(View itemView) { - super(itemView); - view = itemView; - rl_container = itemView.findViewById(R.id.native_outer_view); - } - } - - class FooterViewHolder extends RecyclerView.ViewHolder { - public FooterViewHolder(View itemView) { - super(itemView); - } - } } } diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsFragment.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsFragment.java index a1cb443..3b12750 100644 --- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsFragment.java +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuNewsFragment.java @@ -6,27 +6,13 @@ import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; -import android.support.v4.widget.SwipeRefreshLayout; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.view.View; -import android.widget.FrameLayout; -import com.baidu.mobad.feeds.RequestParameters; -import com.baidu.mobads.nativecpu.CPUAdRequest; -import com.baidu.mobads.nativecpu.CpuLpFontSize; -import com.baidu.mobads.nativecpu.IBasicCPUData; -import com.baidu.mobads.nativecpu.NativeCPUManager; import com.lcjian.library.RetainViewFragment; -import com.viewpagerindicator.FoundPageIndicator; -import com.viewpagerindicator.LinePageIndicator; -import com.viewpagerindicator.MainTabPageIndicator; -import com.viewpagerindicator.TabPageIndicator; -import com.viewpagerindicator.TitlePageIndicator; +import com.viewpagerindicator.FoundTabPageIndicator; import com.yeshi.ec.library_baiducpu.R; import com.yeshi.ec.library_baiducpu.entity.SpinnerItem; -import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -35,11 +21,10 @@ */ public class BaiDuNewsFragment extends RetainViewFragment { - private FrameLayout fl_indicator; private ViewPager viewPager; private ContentAdapter contentAdapter; private List<SpinnerItem> itemList = new ArrayList<>(); - private TabPageIndicator indicator; + private FoundTabPageIndicator indicator; @Override @@ -48,53 +33,49 @@ } private void initView(View contentView) { - fl_indicator = contentView.findViewById(R.id.fl_indicator); viewPager = contentView.findViewById(R.id.vp_news); } - private void initData() { - itemList.add(new SpinnerItem("鎺ㄨ崘棰戦亾", 1022)); - itemList.add(new SpinnerItem("灏忓搧", 1062)); - itemList.add(new SpinnerItem("濞变箰棰戦亾", 1001)); - itemList.add(new SpinnerItem("鐑偣棰戦亾", 1021)); - itemList.add(new SpinnerItem("鐑棰戦亾", 1081)); - itemList.add(new SpinnerItem("鍋ュ悍棰戦亾", 1043)); - itemList.add(new SpinnerItem("鎼炵瑧棰戦亾", 1025)); - itemList.add(new SpinnerItem("姣嶅┐棰戦亾", 1042)); - itemList.add(new SpinnerItem("鏃跺皻棰戦亾", 1009)); - itemList.add(new SpinnerItem("姹借溅棰戦亾", 1007)); - itemList.add(new SpinnerItem("鍐涗簨棰戦亾", 1012)); - itemList.add(new SpinnerItem("鐢熸椿棰戦亾", 1035)); - itemList.add(new SpinnerItem("娓告垙棰戦亾", 1040)); - itemList.add(new SpinnerItem("浣撹偛棰戦亾", 1002)); - itemList.add(new SpinnerItem("濂充汉棰戦亾", 1034)); - itemList.add(new SpinnerItem("璐㈢粡棰戦亾", 1006)); - itemList.add(new SpinnerItem("绉戞妧棰戦亾", 1013)); - itemList.add(new SpinnerItem("鍔ㄦ极棰戦亾", 1055)); - itemList.add(new SpinnerItem("鏂囧寲棰戦亾", 1036)); - itemList.add(new SpinnerItem("鎵嬫満棰戦亾", 1005)); - itemList.add(new SpinnerItem("鎴夸骇棰戦亾", 1008)); - itemList.add(new SpinnerItem("鏈湴棰戦亾", 1080)); - itemList.add(new SpinnerItem("骞垮満鑸�", 1088)); - itemList.add(new SpinnerItem("鐚庡", 1089)); + private void initData(View contentView) { + itemList.add(new SpinnerItem("鎺ㄨ崘", 1022));//1022 + itemList.add(new SpinnerItem("浠婃棩鐑偣", 1021));//鐑偣 itemList.add(new SpinnerItem("缇庡コ", 1024)); - itemList.add(new SpinnerItem("鐑鎼滅储", 1090)); - itemList.add(new SpinnerItem("鐪嬬偣棰戦亾", 1047)); + itemList.add(new SpinnerItem("濞变箰鍏崷", 1001)); + itemList.add(new SpinnerItem("澶у鍦ㄧ湅", 1090)); + itemList.add(new SpinnerItem("瀹炴椂璧勮", 1081)); + itemList.add(new SpinnerItem("鍐涗簨瑙嗛噹", 1012)); + itemList.add(new SpinnerItem("濂充汉", 1034)); + itemList.add(new SpinnerItem("绗戜竴绗�", 1025)); + itemList.add(new SpinnerItem("娓告垙", 1040)); + itemList.add(new SpinnerItem("鍔ㄦ极", 1055)); + itemList.add(new SpinnerItem("濂囬椈", 1089)); + itemList.add(new SpinnerItem("绮惧僵鐪嬬偣", 1047)); + itemList.add(new SpinnerItem("鏈湴鐑", 1080)); + itemList.add(new SpinnerItem("骞垮満鑸�", 1088)); + itemList.add(new SpinnerItem("鍋ュ悍", 1043)); + itemList.add(new SpinnerItem("姣嶅┐", 1042)); + itemList.add(new SpinnerItem("鏃跺皻", 1009)); + itemList.add(new SpinnerItem("姹借溅", 1007)); + itemList.add(new SpinnerItem("鏂囧寲", 1036)); + itemList.add(new SpinnerItem("鐢熸椿", 1035)); + itemList.add(new SpinnerItem("浣撹偛", 1002)); + itemList.add(new SpinnerItem("璐㈢粡", 1006)); + itemList.add(new SpinnerItem("绉戞妧", 1013)); + itemList.add(new SpinnerItem("鎴夸骇", 1008)); + itemList.add(new SpinnerItem("鎵嬫満", 1005)); + contentAdapter = new ContentAdapter( getChildFragmentManager(), itemList); viewPager.setAdapter(contentAdapter); - indicator = new TabPageIndicator( - viewPager.getContext()); - indicator.setViewPager(viewPager, 0); - fl_indicator.addView(indicator); + indicator = contentView.findViewById(R.id.indicator); + indicator.setViewPager(viewPager); } @Override public void onCreateView(View contentView, Bundle savedInstanceState) { - initView(contentView); - initData(); + initData(contentView); } class ContentAdapter extends FragmentStatePagerAdapter { @@ -110,7 +91,7 @@ @Override public Fragment getItem(int position) { - Fragment fragment = BaiDuNewsContentFragment.newInstance(mlist.get(position)); + Fragment fragment = BaiDuCPUContentFragment.newInstance(mlist.get(position),BaiDuCPUContentFragment.VIEW_TYPE_NEWS); return fragment; } diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuShortVideosFragment.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuShortVideosFragment.java index 7bd671d..6ea803e 100644 --- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuShortVideosFragment.java +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuShortVideosFragment.java @@ -49,7 +49,6 @@ RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); reLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); mVideoContainer.addView(mCpuView, reLayoutParams); - Toast.makeText(getContext(), "鍔犺浇AppSid:" + APP_ID, Toast.LENGTH_SHORT).show(); } @Override diff --git a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuVideosFragment.java b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuVideosFragment.java index 4ed875b..2bf4fa4 100644 --- a/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuVideosFragment.java +++ b/library-BaiduCPU/src/main/java/com/yeshi/ec/library_baiducpu/fragment/BaiDuVideosFragment.java @@ -10,6 +10,7 @@ import android.widget.FrameLayout; import com.lcjian.library.RetainViewFragment; +import com.viewpagerindicator.FoundTabPageIndicator; import com.viewpagerindicator.MainTabPageIndicator; import com.yeshi.ec.library_baiducpu.R; import com.yeshi.ec.library_baiducpu.entity.SpinnerItem; @@ -23,11 +24,10 @@ */ public class BaiDuVideosFragment extends RetainViewFragment { - private FrameLayout fl_indicator; private ViewPager viewPager; private ContentAdapter contentAdapter; private List<SpinnerItem> itemList = new ArrayList<>(); - private MainTabPageIndicator indicator; + private FoundTabPageIndicator indicator; @Override @@ -36,36 +36,34 @@ } private void initView(View contentView) { - fl_indicator = contentView.findViewById(R.id.fl_indicator); viewPager = contentView.findViewById(R.id.vp_news); } - private void initData() { - itemList.add(new SpinnerItem("灏忚棰�", 1085)); - itemList.add(new SpinnerItem("钀岃悓鍝�", 1065)); - itemList.add(new SpinnerItem("灏忓搧", 1062)); - itemList.add(new SpinnerItem("闊充箰", 1058)); - itemList.add(new SpinnerItem("鎼炵瑧", 1059)); + private void initData(View contentView) { itemList.add(new SpinnerItem("褰辫", 1060)); - itemList.add(new SpinnerItem("娓告垙", 1067)); - itemList.add(new SpinnerItem("鐢熸椿", 1066)); + itemList.add(new SpinnerItem("灏忚棰�", 1085)); + itemList.add(new SpinnerItem("灏忓搧", 1062)); itemList.add(new SpinnerItem("瑙傚ぉ涓�", 1064)); + itemList.add(new SpinnerItem("鎼炵瑧", 1059)); itemList.add(new SpinnerItem("濞变箰", 1061)); itemList.add(new SpinnerItem("绀句細", 1063)); + itemList.add(new SpinnerItem("娓告垙", 1067)); + itemList.add(new SpinnerItem("鐢熸椿", 1066)); + itemList.add(new SpinnerItem("闊充箰", 1058)); + itemList.add(new SpinnerItem("钀岃悓鍝�", 1065)); + contentAdapter = new ContentAdapter( getChildFragmentManager(), itemList); viewPager.setAdapter(contentAdapter); - indicator = new MainTabPageIndicator( - viewPager.getContext()); - indicator.setViewPager(viewPager, 0); - fl_indicator.addView(indicator); + indicator = contentView.findViewById(R.id.indicator); + indicator.setViewPager(viewPager); } @Override public void onCreateView(View contentView, Bundle savedInstanceState) { initView(contentView); - initData(); + initData(contentView); } class ContentAdapter extends FragmentStatePagerAdapter { @@ -81,8 +79,10 @@ @Override public Fragment getItem(int position) { - Fragment fragment = BaiDuShortVideosFragment.newInstance(mlist.get(position)); - return fragment; + if (mlist.get(position).getmId()==1085) + return BaiDuShortVideosFragment.newInstance(mlist.get(position)); + else + return BaiDuCPUContentFragment.newInstance(mlist.get(position), mlist.get(position).getmId()==1085? BaiDuCPUContentFragment.VIEW_TYPE_SMALLVIDEO : BaiDuCPUContentFragment.VIEW_TYPE_VIDEO); } @Override diff --git a/library-BaiduCPU/src/main/res/drawable-xhdpi/ic_baidu_play.png b/library-BaiduCPU/src/main/res/drawable-xhdpi/ic_baidu_play.png new file mode 100644 index 0000000..d094599 --- /dev/null +++ b/library-BaiduCPU/src/main/res/drawable-xhdpi/ic_baidu_play.png Binary files differ diff --git a/library-BaiduCPU/src/main/res/drawable/shape_baidu_duration.xml b/library-BaiduCPU/src/main/res/drawable/shape_baidu_duration.xml new file mode 100644 index 0000000..340bcd4 --- /dev/null +++ b/library-BaiduCPU/src/main/res/drawable/shape_baidu_duration.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <corners android:radius="20dp" /> + <solid android:color="#80000000" /> + +</shape> \ No newline at end of file diff --git a/library-BaiduCPU/src/main/res/drawable/shape_baidu_title.xml b/library-BaiduCPU/src/main/res/drawable/shape_baidu_title.xml new file mode 100644 index 0000000..1933b9b --- /dev/null +++ b/library-BaiduCPU/src/main/res/drawable/shape_baidu_title.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <gradient + android:angle="270" + android:endColor="#00000000" + android:startColor="#90000000" /> +</shape> \ No newline at end of file diff --git a/library-BaiduCPU/src/main/res/layout/fragment_baidu_news_root.xml b/library-BaiduCPU/src/main/res/layout/fragment_baidu_news_root.xml index 673df22..e7cbf99 100644 --- a/library-BaiduCPU/src/main/res/layout/fragment_baidu_news_root.xml +++ b/library-BaiduCPU/src/main/res/layout/fragment_baidu_news_root.xml @@ -8,7 +8,16 @@ android:id="@+id/fl_indicator" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="-10dp"> + android:layout_marginTop="-10dp" + android:layout_marginBottom="-13dp"> + + <com.viewpagerindicator.FoundTabPageIndicator + android:id="@+id/indicator" + style="@style/NewsPageIndicator" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + </com.viewpagerindicator.FoundTabPageIndicator> </FrameLayout> diff --git a/library-BaiduCPU/src/main/res/layout/item_baidu_small_video.xml b/library-BaiduCPU/src/main/res/layout/item_baidu_small_video.xml new file mode 100644 index 0000000..2b96858 --- /dev/null +++ b/library-BaiduCPU/src/main/res/layout/item_baidu_small_video.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8"?><!--鐧惧害灏忚棰戝竷灞� --> +<com.lcjian.library.widget.RatioLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:ratio="1.6"> + + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ImageView + android:id="@+id/iv_video_pciture" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scaleType="centerCrop"> + + </ImageView> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:orientation="vertical" + android:padding="5dp"> + + <TextView + android:id="@+id/tv_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="10dp" + android:ellipsize="end" + android:maxLines="2" + android:textColor="#ffffff" + android:textSize="15sp"></TextView> + + <!-- 浣滆�呬俊鎭� --> + <LinearLayout + android:id="@+id/ll_author_info" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/iv_portrait" + android:layout_width="20dp" + android:layout_height="20dp"></ImageView> + + <TextView + android:textColor="#ffffff" + android:id="@+id/tv_play_count" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp"></TextView> + + </LinearLayout> + + <LinearLayout + android:id="@+id/ll_ad_info" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:textColor="#ffffff" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="绮鹃�夋帹鑽�"></TextView> + + <TextView + android:textColor="#ffffff" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:text="骞垮憡"></TextView> + + </LinearLayout> + + + </LinearLayout> + + </FrameLayout> + +</com.lcjian.library.widget.RatioLayout> diff --git a/library-BaiduCPU/src/main/res/layout/item_baidu_video.xml b/library-BaiduCPU/src/main/res/layout/item_baidu_video.xml new file mode 100644 index 0000000..ac072fc --- /dev/null +++ b/library-BaiduCPU/src/main/res/layout/item_baidu_video.xml @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="utf-8"?><!--鐧惧害灏忚棰戝竷灞� --> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <com.lcjian.library.widget.RatioLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:ratio="0.618"> + + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ImageView + android:id="@+id/iv_video_pciture" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scaleType="centerCrop"> + + </ImageView> + + <TextView + android:id="@+id/tv_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="top" + android:layout_marginBottom="10dp" + android:background="@drawable/shape_baidu_title" + android:ellipsize="end" + android:maxLines="2" + android:paddingLeft="10dp" + android:paddingTop="10dp" + android:paddingRight="10dp" + android:paddingBottom="30dp" + android:textColor="#ffffff" + android:textSize="@dimen/baidu_cpu_title"></TextView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right|bottom" + android:layout_margin="10dp" + android:paddingLeft="10dp" + android:paddingTop="5dp" + android:paddingRight="10dp" + android:paddingBottom="5dp" + android:textColor="#ffffff" + android:textSize="10sp"></TextView> + + <ImageView + android:id="@+id/iv_play" + android:layout_width="50dp" + android:layout_height="50dp" + android:layout_gravity="center" + android:src="@drawable/ic_baidu_play"> + + </ImageView> + </FrameLayout> + + + </com.lcjian.library.widget.RatioLayout> + + + <LinearLayout + + android:layout_width="match_parent" + android:layout_height="48dp" + android:gravity="center_vertical" + android:orientation="vertical" + android:paddingLeft="15dp" + android:paddingRight="15dp"> + + <!-- 浣滆�呬俊鎭� --> + <LinearLayout + android:id="@+id/ll_author_info" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical"> + + <ImageView + android:id="@+id/iv_portrait" + android:layout_width="20dp" + android:layout_height="20dp"></ImageView> + + <TextView + android:id="@+id/tv_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:textColor="#ffffff"></TextView> + + </LinearLayout> + + <LinearLayout + android:id="@+id/ll_ad_info" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="绮鹃�夋帹鑽�" + android:textColor="#ffffff"></TextView> + + + <ImageView + android:id="@+id/iv_baidu_logo" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginLeft="10dp"></ImageView> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="2dp" + android:text="骞垮憡" + android:textColor="#ffffff"></TextView> + + </LinearLayout> + + + </LinearLayout> + + +</LinearLayout> \ No newline at end of file diff --git a/library-BaiduCPU/src/main/res/layout/native_cpu_view.xml b/library-BaiduCPU/src/main/res/layout/native_cpu_view.xml index 745e0e1..96420a0 100644 --- a/library-BaiduCPU/src/main/res/layout/native_cpu_view.xml +++ b/library-BaiduCPU/src/main/res/layout/native_cpu_view.xml @@ -14,7 +14,7 @@ android:textColor="#FFFFFF" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" - android:textSize="16sp" + android:textSize="@dimen/baidu_cpu_title" android:ellipsize="end" android:layout_width="match_parent" android:layout_height="wrap_content" /> diff --git a/library-BaiduCPU/src/main/res/values/colors.xml b/library-BaiduCPU/src/main/res/values/colors.xml new file mode 100644 index 0000000..851bd98 --- /dev/null +++ b/library-BaiduCPU/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="img_bg">#ff333333</color> +</resources> + + diff --git a/library-BaiduCPU/src/main/res/values/dimens.xml b/library-BaiduCPU/src/main/res/values/dimens.xml new file mode 100644 index 0000000..dc98198 --- /dev/null +++ b/library-BaiduCPU/src/main/res/values/dimens.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <dimen name="baidu_cpu_title">18sp</dimen> + +</resources> \ No newline at end of file diff --git a/library-BaiduCPU/src/main/res/values/styles.xml b/library-BaiduCPU/src/main/res/values/styles.xml index 8ae1eeb..4be965d 100644 --- a/library-BaiduCPU/src/main/res/values/styles.xml +++ b/library-BaiduCPU/src/main/res/values/styles.xml @@ -1,9 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <style name="FoundPageIndicator" parent="Widget.TabPageIndicator1"> + <!-- 鍙戠幇鐣岄潰鐨刬ndicator --> + <style name="NewsPageIndicator" parent="Widget.FoundTabPageIndicator"> <item name="android:textSize">16sp</item> <item name="android:background">@color/top_bar_color</item> <item name="android:paddingLeft">8dp</item> <item name="android:paddingRight">8dp</item> </style> + + </resources> diff --git a/library-ViewPagerIndicator/res/drawable/found__tab_indicator.xml b/library-ViewPagerIndicator/res/drawable/found__tab_indicator.xml new file mode 100644 index 0000000..7cc4fc4 --- /dev/null +++ b/library-ViewPagerIndicator/res/drawable/found__tab_indicator.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + 璞嗚眴 褰辫澶у叏 state_selected鍏ㄩ儴缃负false +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Non focused states --> + <item android:drawable="@color/lxy_bg_diaphanous" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> + <item android:drawable="@drawable/tab_selected_holo" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> + + <!-- Focused states --> + <item android:drawable="@color/lxy_bg_diaphanous" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/> + <item android:drawable="@drawable/tab_selected_holo" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/> + + <!-- Pressed --> + <!-- Non focused states --> + <item android:drawable="@color/lxy_bg_diaphanous" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/> + <item android:drawable="@drawable/tab_selected_holo" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/> + + <!-- Focused states --> + <item android:drawable="@color/lxy_bg_diaphanous" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/> + <item android:drawable="@drawable/tab_selected_holo" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/> + +</selector> \ No newline at end of file diff --git a/library-ViewPagerIndicator/res/values/vpi__styles.xml b/library-ViewPagerIndicator/res/values/vpi__styles.xml index ce8a7f0..d8e05cc 100644 --- a/library-ViewPagerIndicator/res/values/vpi__styles.xml +++ b/library-ViewPagerIndicator/res/values/vpi__styles.xml @@ -71,6 +71,18 @@ <item name="android:maxLines">1</item> </style> + <style name="Widget.FoundTabPageIndicator" parent="Widget"> + <item name="android:gravity">center</item> + <item name="android:background">@drawable/lxy__tab_indicator</item> + <item name="android:paddingLeft">22dip</item> + <item name="android:paddingRight">22dip</item> + <item name="android:paddingTop">12dp</item> + <item name="android:paddingBottom">12dp</item> + <item name="android:textAppearance">@style/TextAppearance.LxyTabPageIndicator</item> + <item name="android:textSize">12sp</item> + <item name="android:maxLines">1</item> + </style> + <style name="TextAppearance.TabPageIndicator" parent="Widget"> <item name="android:textStyle">bold</item> <item name="android:textColor">#ff000000</item> diff --git a/library-ViewPagerIndicator/src/com/viewpagerindicator/FoundPageIndicator.java b/library-ViewPagerIndicator/src/com/viewpagerindicator/FoundTabPageIndicator.java similarity index 77% rename from library-ViewPagerIndicator/src/com/viewpagerindicator/FoundPageIndicator.java rename to library-ViewPagerIndicator/src/com/viewpagerindicator/FoundTabPageIndicator.java index d66f0fe..34db53f 100644 --- a/library-ViewPagerIndicator/src/com/viewpagerindicator/FoundPageIndicator.java +++ b/library-ViewPagerIndicator/src/com/viewpagerindicator/FoundTabPageIndicator.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * Copyright (C) 2011 Jake Wharton + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.viewpagerindicator; import android.annotation.SuppressLint; @@ -6,29 +22,25 @@ import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; -import com.lcjian.library.widget.IsPad; +import com.lcjian.library.util.common.DimenUtils; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; /** - * 鍙戠幇椤甸潰鐨勫鑸� + * This widget implements the dynamic action bar tab behavior that can change + * across different configurations or circumstances. */ -public class FoundPageIndicator extends HorizontalScrollView implements +public class FoundTabPageIndicator extends HorizontalScrollView implements PageIndicator { - /** * Title text used when no title is provided by the adapter. */ @@ -72,16 +84,16 @@ private OnTabReselectedListener mTabReselectedListener; - public FoundPageIndicator(Context context) { + public FoundTabPageIndicator(Context context) { this(context, null); } - public FoundPageIndicator(Context context, AttributeSet attrs) { + public FoundTabPageIndicator(Context context, AttributeSet attrs) { super(context, attrs); setHorizontalScrollBarEnabled(false); mTabLayout = new IcsLinearLayout(context, - R.attr.vpiTitlePageIndicatorStyle); + R.attr.vpiTabPageIndicatorStyle); addView(mTabLayout, new ViewGroup.LayoutParams(WRAP_CONTENT, MATCH_PARENT)); } @@ -129,24 +141,15 @@ if (mTabSelector != null) { removeCallbacks(mTabSelector); } -// Drawable mReview = getResources().getDrawable(R.drawable.video_review); -// mReview.setBounds(0, 0, mReview.getMinimumWidth(), -// mReview.getMinimumHeight()); - for (int i = 0; i < mTabLayout.getChildCount(); i++) { - ((TextView) mTabLayout.getChildAt(i)).setTextColor(Color.argb(255, - 0, 0, 0)); - if (i == 1) { - SpannableStringBuilder builder = new SpannableStringBuilder(((TextView) tabView).getText().toString()); - ForegroundColorSpan span = new ForegroundColorSpan(Color.argb(255, 255, 115, 0)); - builder.setSpan(span, 2, ((TextView) tabView).getText().toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - ((TextView) tabView).setText(builder); - } + ((TextView) mTabLayout.getChildAt(i)).setTextSize( + TypedValue.COMPLEX_UNIT_SP, 15); + ((TextView) mTabLayout.getChildAt(i)).setTextColor(Color.parseColor("#999999")); } - ((TextView) tabView).setTextColor(Color.argb(255, 0, 0, 0));//璞嗚眴绯诲垪 - -// ((TextView) tabView).setTextColor(Color.argb(255, 255, 115, 0));// 鏈ㄧ摐绯诲垪 - + ((TextView) tabView).setTextColor(Color.WHITE); + ((TextView) tabView).setTextSize( + TypedValue.COMPLEX_UNIT_SP, 20); +// ((TextView) tabView).setLayoutParams(new ViewGroup.LayoutParams(WRAP_CONTENT,WRAP_CONTENT)); mTabSelector = new Runnable() { public void run() { final int scrollPos = tabView.getLeft() @@ -156,9 +159,9 @@ mTabSelector = null; } }; - post(mTabSelector); } + @Override public void onAttachedToWindow() { @@ -184,35 +187,30 @@ * @param text * @param iconResId */ + @SuppressLint("ResourceAsColor") private void addTab(int index, CharSequence text, int iconResId) { final TabView tabView = new TabView(getContext()); tabView.mIndex = index; tabView.setFocusable(true); tabView.setOnClickListener(mTabClickListener); - if (IsPad.isPad(tabView.getContext())) - tabView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 25); tabView.setText(text); - int width = ((WindowManager) getContext().getSystemService( - Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth(); + tabView.setTextColor(R.color.black1); + tabView.setBackgroundResource(R.drawable.found__tab_indicator); + tabView.setPadding(0,0,0,DimenUtils.dip2px(getContext(), 6)); + if (iconResId != 0) { tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0); } + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(WRAP_CONTENT, + MATCH_PARENT, 1); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - width / 3, LayoutParams.WRAP_CONTENT); - // params.setMargins(20, 0, 20, 0); - mTabLayout.addView(tabView, new LinearLayout.LayoutParams(0, - LayoutParams.MATCH_PARENT, 1)); - switch (index) { - case 1: - SpannableStringBuilder builder = new SpannableStringBuilder(((TextView) tabView).getText().toString()); - ForegroundColorSpan span = new ForegroundColorSpan(Color.argb(255, 255, 115, 0)); - builder.setSpan(span, 2, ((TextView) tabView).getText().toString().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - ((TextView) tabView).setText(builder); - break; - default: - break; - } + mTabLayout.addView(tabView, params); + MarginLayoutParams marginLayoutParams = (MarginLayoutParams) tabView.getLayoutParams(); + if (index == 0) + marginLayoutParams.leftMargin = 0; + else + marginLayoutParams.leftMargin = DimenUtils.dip2px(getContext(), 21); + } @Override @@ -320,7 +318,7 @@ private int mIndex; public TabView(Context context) { - super(context, null, R.attr.lxyTabPageIndicatorStyle); + super(context, null, R.attr.vpiTabPageIndicatorStyle); } @Override @@ -337,13 +335,5 @@ public int getIndex() { return mIndex; } - } - - /** - * 鏍规嵁鎵嬫満鐨勫垎杈ㄧ巼浠� dp 鐨勫崟浣� 杞垚涓� px(鍍忕礌) - */ - public static int dip2px(Context context, float dpValue) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dpValue * scale + 0.5f); } } diff --git a/library-ViewPagerIndicator/src/com/viewpagerindicator/MainTabPageIndicator.java b/library-ViewPagerIndicator/src/com/viewpagerindicator/MainTabPageIndicator.java index bde7d58..8a2e078 100644 --- a/library-ViewPagerIndicator/src/com/viewpagerindicator/MainTabPageIndicator.java +++ b/library-ViewPagerIndicator/src/com/viewpagerindicator/MainTabPageIndicator.java @@ -34,6 +34,8 @@ import android.widget.LinearLayout; import android.widget.TextView; +import com.lcjian.library.util.common.DimenUtils; + /** * This widget implements the dynamic action bar tab behavior that can change * across different configurations or circumstances. @@ -147,7 +149,7 @@ } ((TextView) tabView).setTextColor(Color.WHITE); ((TextView) tabView).setTextSize( - TypedValue.COMPLEX_UNIT_SP, 18); + TypedValue.COMPLEX_UNIT_SP, 20); // ((TextView) tabView).setLayoutParams(new ViewGroup.LayoutParams(WRAP_CONTENT,WRAP_CONTENT)); mTabSelector = new Runnable() { public void run() { @@ -195,13 +197,19 @@ tabView.setText(text); tabView.setTextColor(R.color.black1); + tabView.setBackgroundResource(R.drawable.found__tab_indicator); + if (iconResId != 0) { tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0); } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(WRAP_CONTENT, MATCH_PARENT, 1); - mTabLayout.addView(tabView, params); + MarginLayoutParams marginLayoutParams = (MarginLayoutParams) tabView.getLayoutParams(); + if (index == 0) + marginLayoutParams.leftMargin = DimenUtils.dip2px(getContext(), 10); + else + marginLayoutParams.leftMargin = DimenUtils.dip2px(getContext(), 21); } @Override diff --git a/library-mine/src/com/lcjian/library/util/glide/GlideCircleTransform.java b/library-mine/src/com/lcjian/library/util/glide/GlideCircleTransform.java new file mode 100644 index 0000000..1447e9a --- /dev/null +++ b/library-mine/src/com/lcjian/library/util/glide/GlideCircleTransform.java @@ -0,0 +1,75 @@ +package com.lcjian.library.util.glide; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.support.annotation.NonNull; + +import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; +import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; + +/** + * glide 鍔犺浇鍦嗗舰鍥剧墖 + * + * @author weikou2015 + */ +public class GlideCircleTransform extends BitmapTransformation { + + private static final String ID = GlideCircleTransform.class.getClass().getName(); + private static byte[] ID_BYTES = null; + + public GlideCircleTransform(Context context) { + try { + ID_BYTES = ID.getBytes(STRING_CHARSET_NAME); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + @Override + protected Bitmap transform(BitmapPool pool, Bitmap toTransform, + int outWidth, int outHeight) { + return circleCrop(pool, toTransform); + } + + private static Bitmap circleCrop(BitmapPool pool, Bitmap source) { + if (source == null) + return null; + + int size = Math.min(source.getWidth(), source.getHeight()); + int x = (source.getWidth() - size) / 2; + int y = (source.getHeight() - size) / 2; + + // TODO this could be acquired from the pool too + Bitmap squared = Bitmap.createBitmap(source, x, y, size, size); + + Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888); + if (result == null) { + result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(result); + Paint paint = new Paint(); + paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, + BitmapShader.TileMode.CLAMP)); + paint.setAntiAlias(true); + float r = size / 2f; + canvas.drawCircle(r, r, r, paint); + return result; + } + + @Override + public int hashCode() { + return ID.hashCode(); + } + + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + messageDigest.update(ID_BYTES); + } +} diff --git a/library-mine/src/com/lcjian/library/util/glide/GlideRoundTransform.java b/library-mine/src/com/lcjian/library/util/glide/GlideRoundTransform.java new file mode 100644 index 0000000..098d79a --- /dev/null +++ b/library-mine/src/com/lcjian/library/util/glide/GlideRoundTransform.java @@ -0,0 +1,82 @@ +package com.lcjian.library.util.glide; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +import android.support.annotation.NonNull; + +import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; +import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; + +/** + * glide 鍦嗚鍥剧墖鍔犺浇 + * + * @author weikou2015 + */ +public class GlideRoundTransform extends BitmapTransformation { + private static final String ID = GlideRoundTransform.class.getClass().getName(); + private static byte[] ID_BYTES = null; + private static float radius = 0f; + + public GlideRoundTransform(Context context) { + this(context, 12); + try { + ID_BYTES = ID.getBytes(STRING_CHARSET_NAME); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + public GlideRoundTransform(Context context, int dp) { + this.radius = Resources.getSystem().getDisplayMetrics().density * dp; + try { + ID_BYTES = ID.getBytes(STRING_CHARSET_NAME); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + @Override + protected Bitmap transform(BitmapPool pool, Bitmap toTransform, + int outWidth, int outHeight) { + return roundCrop(pool, toTransform); + } + + private static Bitmap roundCrop(BitmapPool pool, Bitmap source) { + if (source == null) + return null; + + Bitmap result = pool.get(source.getWidth(), source.getHeight(), + Bitmap.Config.ARGB_8888); + if (result == null) { + result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), + Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(result); + Paint paint = new Paint(); + paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, + BitmapShader.TileMode.CLAMP)); + paint.setAntiAlias(true); + RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); + canvas.drawRoundRect(rectF, radius, radius, paint); + return result; + } + + @Override + public int hashCode() { + return ID.hashCode(); + } + + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + messageDigest.update(ID_BYTES); + } +} -- Gitblit v1.8.0