Andriod 自定義 RecyclerView 打造超強 Gallery效果 橫向滑動 完整例項原始碼
Andriod 自定義 RecyclerView 打造超強 Gallery效果 橫向ListView 完整例項原始碼
大家好,一個RecyclerView 橫向滑動的效果是不是值得借鑑呢,下面我們來看看我做的效果:
(記得匯入RecyclerView的包哦 導包步驟: 點選開啟連結)
下面是需求的效果圖:
因為需要做一個天氣的介面效果,所以之前沒有經驗的我不得不搜尋資料來實現,下面我們來看看程式碼吧:
1.Activity
public class MainActivity extends AppCompatActivity implements RecyAdapter.OnItemClickListener { private String TAG="HorizontalActivity"; private Integer[] mImgIds = {R.mipmap.weather, R.mipmap.ic_launcher, R.mipmap.weather, R.mipmap.ic_launcher, R.mipmap.weather, R.mipmap.weather, R.mipmap.ic_launcher_round, R.mipmap.ic_launcher, R.mipmap.weather, R.mipmap.ic_launcher_round, R.mipmap.weather}; private List<Integer> datas; private RecyAdapter recyAdapter; private Handler mHandler=new Handler(); private LinearLayoutManager layoutManager; private int oldItem=0; private RecyclerView recyclerview; private ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView) findViewById(R.id.img); recyclerview = (RecyclerView) findViewById(R.id.recyclerview); initData(); initRecy(); img.setImageResource(datas.get(0)); recyAdapter.setOnItemClickListener(this); } private void initRecy() { recyAdapter=new RecyAdapter(this,datas); layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerview.setLayoutManager(layoutManager); recyclerview.setAdapter(recyAdapter); } private void initData() { datas=new ArrayList<>(); for (int i = 0; i <mImgIds.length ; i++) { datas.add(mImgIds[i]); } } // Runnable scrollRunnable=new Runnable() { // @Override // public void run() { // recyclerview.scrollBy(3,0); // //// int firstItem = layoutManager.findFirstVisibleItemPosition(); // int firstItem=layoutManager.findFirstVisibleItemPosition(); // if(firstItem!=oldItem&&firstItem>0){ // oldItem=firstItem; // img.setImageResource(datas.get(oldItem%datas.size())); // } // // Log.e(TAG, "run: firstItem:"+firstItem ); // // // mHandler.postDelayed(scrollRunnable,10); // } // }; @Override public void onPointerCaptureChanged(boolean hasCapture) { } @Override protected void onResume() { super.onResume(); // mHandler.postDelayed(scrollRunnable,10); } @Override protected void onStop() { super.onStop(); // mHandler.removeCallbacks(scrollRunnable); } @Override public void onItemClick(View view, int tag) { // img.setImageResource(datas.get(tag));//設定圖片 Toast.makeText(this,"第"+tag+"張圖片被點選了",Toast.LENGTH_SHORT).show(); } }
2.RecyAdapter
public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.ViewHolder> implements View.OnClickListener { private Context context; private List<Integer> datas; private OnItemClickListener onItemClickListener; public RecyAdapter(Context context, List<Integer> datas) { this.context = context; this.datas = datas; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_horizontal, parent, false); ViewHolder vh=new ViewHolder(view); view.setOnClickListener(this); return vh; } @Override public void onBindViewHolder(ViewHolder holder, int position) { int newPos=position%datas.size(); holder.img.setImageResource(datas.get(newPos)); holder.itemView.setTag(position); } @Override public int getItemCount() { return datas.size(); }//Integer.MAX_VALUE @Override public void onClick(View view) { if(onItemClickListener!=null){ onItemClickListener.onItemClick(view, (Integer) view.getTag()); } } class ViewHolder extends RecyclerView.ViewHolder { ImageView img; public ViewHolder(View itemView) { super(itemView); img=itemView.findViewById(R.id.img); } } public void setOnItemClickListener(OnItemClickListener listener){ this.onItemClickListener=listener; } interface OnItemClickListener{ void onItemClick(View view,int tag); } }
3.activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:layout_width="300dp" android:layout_height="350dp" android:layout_gravity="center_horizontal" android:id="@+id/img" android:src="@mipmap/ic_launcher" android:scaleType="fitXY" /> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="150dp" android:layout_marginTop="10dp" android:id="@+id/recyclerview" ></android.support.v7.widget.RecyclerView> </LinearLayout>
4.item_horizontal.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="32dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:text="現在"
android:layout_marginTop="20dp"
android:gravity="center"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:id="@+id/img"
android:layout_marginTop="20dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:scaleType="fitXY"
/>
<TextView
android:layout_width="match_parent"
android:text="15º"
android:layout_marginTop="20dp"
android:gravity="center"
android:layout_height="wrap_content" />
</LinearLayout>
對,就是這麼簡單,你值得擁有+ 上Demo: 點選下載原始碼 點選下載原始碼2
相關推薦
Andriod 自定義 RecyclerView 打造超強 Gallery效果 橫向滑動 完整例項原始碼
Andriod 自定義 RecyclerView 打造超強 Gallery效果 橫向ListView 完整例項原始碼 大家好,一個RecyclerView 橫向滑動的效果是不是值得借鑑呢,下面我們來看看我做的效果: (記得匯入RecyclerVi
Android自定義view-打造酷炫的字型滑動高亮控制元件
前言: 相信很多時候開發會遇到類似於音樂歌詞同步,播放到哪句歌詞的哪個詞時會逐漸高亮,這樣的描述還是不夠準確,iPhone的滑動解鎖的那種效果,相信很多人都會熟悉吧。今天,我們的首要任務就是開發一個類似於這種效果的安卓控制元件,以便在以後的專案中直接使用,看起來高大上有木有
java netty socket庫和自定義C#socket庫利用protobuf進行通訊完整例項
之前的文章講述了socket通訊的一些基本知識,已經本人自定義的C#版本的socket、和java netty 庫的二次封裝,但是沒有真正的發表測試用例。 本文只是為了講解利用protobuf 進行C# 和 java的通訊。以及完整的例項程式碼 java 程式碼 svn 地址,本人開發工具是NetBean
Android 自定義RecyclerView 實現真正的Gallery效果
上一篇部落格我使用自定義HorizontalScrollView寫了一個具有HorizontalScrollView效果和ViewPager特性的橫向圖片輪播,詳見:Android 自定義 HorizontalScrollView 打造再多圖片(控制元件)也不怕 OOM 的橫
RecyclerView自定義LayoutManager,打造不規則佈局
本文已授權微信公眾號:鴻洋(hongyangAndroid)在微信公眾號平臺原創首發。 RecyclerView的時代 自從google推出了RecyclerView這個控制元件, 鋪天蓋地的一頓叫好, 開發者們也都逐漸從ListView,GridView等控制元件
Android 自定義 ViewPager 打造千變萬化的圖片切換效果
記得第一次見到ViewPager這個控制元件,瞬間愛不釋手,做東西的主介面通通ViewPager,以及圖片切換也拋棄了ImageSwitch之類的,開始讓ViewPager來做。時間長了,ViewPager的切換效果覺得枯燥,形成了審美疲勞~~我們需要改變,今天教大家如何改變V
Android 自定義 HorizontalScrollView 打造再多圖片(控制元件)也不怕 OOM 的橫向滑動效果
自從Gallery被谷歌廢棄以後,Google推薦使用ViewPager和HorizontalScrollView來實現Gallery的效果。的確HorizontalScrollView可以實現Gallery的效果,但是HorizontalScrollView存在一個很大的問
Android 使用極光推送自定義訊息打造個性的訊息推送效果
極光推送,是一個面向普通開發者開放的,免費的第三方訊息推送服務。本篇部落格將結合案例介紹極光推送自定義訊息的使用方法,利用自定義訊息實現專案中特定的訊息推送需求。 本案例將實現如圖效果: 參考官方Android SDK 教程完成鐳射推送的基本配置 區
Android自定義RecyclerView分割線,打造無邊緣分割線
前言: 現在的RecyclerView幾乎已經完全取代ListView和GridView了,已經幾年沒使用ListView和GridView了,想當年還需要自己在getView方法中複用convertView。而現在的RecyclerView一出生就被設計成
Android自定義View——實現水波紋效果類似剩余流量球
string 三個點 pre ber block span 初始化 move 理解 最近突然手癢就想搞個貝塞爾曲線做個水波紋效果玩玩,終於功夫不負有心人最後實現了想要的效果,一起來看下吧: 效果圖鎮樓 一:先一步一步來分解一下實現的過程 需要繪制一個正弦曲線(sin
利用echarts highcharts 實現自定義地圖 關系圖效果 側邊3D柱形圖餅圖散點圖
技術 ges 散點圖 chart blog 餅圖 git 分享 charts github 地址: https://https://github.com/Gengshaoxuan/medataMap github 地址: https://https://github.c
Android 自定義View實現拖拽效果
騰訊QQ有那種紅點拖動效果,今天就來實現一個簡單的自定義View拖動效果,再回到原處,並非完全仿QQ紅點拖動 先來看一下效果圖 簡單說一下實現步驟 1.建立一個類繼承View 2.繪製出一個
Android 自定義View實現圓形環繞效果
之前專案中需要實現一個四周環繞中心圓形頭像的效果,感覺還是自定義比較方便,於是就自己封裝了一個控制元件去實現。先貼張圖顯示最終效果。 首先自定義一個View繼承自LinearLayout,通過動態新增childView的方式將子控制元件新增到View中。思路是先新增中間圓形頭像
Android 自定義PopupWindow實現懸浮窗效果
有時候我們需要在介面上彈出一個視窗,而Android中彈出窗體有兩種方式:一種是AlertDialog,另一種就是PopupWindow,AlertDialog的位置是固定的,而PopupWindow的位置可以任意指定。下面我們使用自定義的PopupWindow來完成以下的效果圖:
自定義view實現水波紋效果
自定義view實現水波紋效果 參考csdn大神 啟艦的部落格http://blog.csdn.net/harvic880925/article/details/50995587,自己實現了一遍,碰到的坑有2個: 1、記得呼叫mPath.reset(),否則每次的path內容會疊
【我的Android進階之旅】自定義控制元件之使用ViewPager實現可以預覽的畫廊效果,並且自定義畫面切換的動畫效果的切換時間
我們來看下效果 在這裡,我們實現的是,一個ViewPager來顯示圖片列表。這裡一個頁面,ViewPage展示了前後的預覽,我們讓預覽頁進行Y軸的壓縮,並設定透明度為0.5f,所有我們看到gif最後,左右兩邊的圖片有點朦朧感。讓預覽頁和主頁面有主從感。我們用分
Android自定義ViewGroup打造各種風格的SlidingMenu
看鴻洋大大的QQ5.0側滑選單的視訊課程,對於側滑的時的動畫效果的實現有了新的認識,似乎打通了任督二脈,目前可以實現任意效果的側滑選單了,感謝鴻洋大大!! 鴻洋大大用的是HorizontalScrollView來實現的側滑選單功能,HorizontalScro
android自定義View之3D索引效果
效果圖: 我的小霸王太卡了。 最近工作比較忙,今天搞了一下午才搞出來這個效果,這種效果有很多種實現方式,最常見的應該是用貝塞爾曲線實現的。今天我們來看另一種不同的實現方式,只需要用到 canvas.scale(),有沒有很好奇是怎麼實現的呢。 首先來說一下思路,只要有了思
android 自定義view之側滑效果
效果圖: 看網上的都是兩個view拼接,預設右側的不顯示,水平移動的時候把右側的view顯示出來。但是看最新版QQ上的效果不是這樣的,但給人的感覺卻很好,所以獻醜來一發比較高仿的。 知識點: 1、ViewDragHelper 的用法; 2、滑動衝突的解決; 3、自定
自定義控制元件,動畫效果的進度圓環RingProgressBar
自定義動畫效果的進度圓環RingProgressBar 專案中有一個進度圓環,實現一個比例的顯示,原生的ProgressBar就算自定義樣式也不是很美觀,於是就自定義了一個,繼承於View類,效果如下: 程式碼 import android