1. 程式人生 > >android gallery 豎直(上下)滑動

android gallery 豎直(上下)滑動

最近做一個專案,要求上下滑動gallery,網上找了好多資料都不太理想,不說了,說多了都是淚啊!

先上圖:免得誤導觀眾!


下面說一下我的方法:

1,重寫VerticalGallery類繼承Gallery

public class VerticalGallery extends Gallery

2.重寫ondrow方法,使gallery逆時針旋轉

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.translate(0, 600f);
canvas.rotate(-90f);
super.onDraw(canvas);
}

3,重寫onkeydown方法,使之上下鍵響應上下翻頁;我是上下鍵呼叫的左右方法;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub


switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
return super.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, event);
case KeyEvent.KEYCODE_DPAD_DOWN:
return super.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, event);
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}

這裡左右鍵的釋放,我是找的一個全域性變數來跳出gallery的;

有需要用到手勢,和滑動的重寫onfling方法和onscroll方法即可;我們用的遙控器,所以沒寫;

4,在VerticalGallery中旋轉了,就得在介面卡中把圖片再旋轉過來;

對介面卡裡的每一張圖片呼叫這個函式

private Bitmap rotateBitmap(Bitmap bitmap) {
Bitmap bitmap2 = null;
Matrix matrix = new Matrix();
matrix.setRotate(90);
bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
return bitmap2;
}

5,在xml檔案中呼叫;

<com.android.mslauncher.VerticalGallery
                android:id="@+id/gallery"
                android:layout_width="380dp"
                android:layout_height="440dp"
                android:layoutDirection="inherit" />

5,activity中呼叫你的VerticalGallery

gallery = (VerticalGallery) view1.findViewById(R.id.gallery);

imageViewGalleryFocus = (ImageView) view1.findViewById(R.id.gallery_focus);

gallery.setAdapter(adapter);

gallery.setOnFocusChangeListener(new onMainItemFocusChangeListener());
gallery.setSelection(GalleryImageAdapter.getPosition(), true);gallery.setAnimationDuration(500);

try {

gallery.setSpacing(20);

gallery.setUnselectedAlpha(0.5f);
// gallery.setMaxZoom(0);
// gallery.setMaxRotationAngle(60);
((GalleryImageAdapter) gallery.getAdapter()).notifyDataSetChanged();
} catch (Exception e) {
// TODO: handle exception
}

相關推薦

android gallery 上下滑動

最近做一個專案,要求上下滑動gallery,網上找了好多資料都不太理想,不說了,說多了都是淚啊! 先上圖:免得誤導觀眾! 下面說一下我的方法: 1,重寫VerticalGallery類繼承Gallery public class VerticalGallery exte

android 基礎知識View 滑動衝突攔截和原理

自定義View滑動衝突現象:  第一種是同向,第二種為異向,第三種為前兩種的組合模式 滑動衝突解決方案: 首先決定x和y移動方向的長度來決定是x還是y的移動 第一外部攔截法: @Override public boolean onI

【朝花夕拾】Android自定義View篇之Android事件分發機制滑動衝突解決方案總結

前言        轉載請宣告,轉自【https://www.cnblogs.com/andy-songwei/p/11072989.html】,謝謝!        前面兩篇文章,花了很大篇幅講解了Android的事件分發機制的

Android原始碼之Gallery專題研究1

前言 時光飛逝,從事Android系統開發已經兩年了,總想寫點什麼來安慰自己。思考了很久總是無法下筆,覺得沒什麼好寫的。現在終於決定寫一些符合大多數人需求的東西,想必使用過Android手機的人們一定對“相簿”(以下簡稱Gallery)這個應用非常熟悉。在Android市場

Android原始碼之Gallery專題研究2

引言 上一篇文章已經講解了資料載入過程,接下來我們來看一看資料載入後的處理過程。按照正常的思維邏輯,當資料載入之後,接下來就應該考慮資料的顯示邏輯。 MVC顯示邏輯 大家可能對J2EE的MVC架構比較熟悉,Gallery2和MVC有什麼關係呢,簡直是瞎扯???首先,我們先回

Android Scroll分析滑動效果產生分析

滑動一個View,本質上來說就是移動一個View。改變其當前所處的位置,它的原理與動畫效果的實現非常相似,都是通過不斷地改變View的座標來實現這一效果。所以,要實現View的滑動,就必須監聽使用者觸控的事件,並根據事件傳入的座標,動態且不斷地改變View的座標

Android用ClipDrawable自定義各種進度條(包括和水平

這裡兩年前在eoe寫的一個帖子,這次也搬過來統一管理: ============== 以前我自定義的進度條是從android的原始碼中扒出來的一個XML,然後把裡面的圖片給替換了。一直不知道它的具體原

我的Android成長之路10----利用recyclerView實現橫向滑動

利用recyclerView實現橫向滑動。 下面是adapter: public class HengAdapter extends RecyclerView.Adapter<HengAdapter.MyViewHolder> implements View.

【朝花夕拾】Android自定義View篇之Android事件分發機制解決滑動衝突

前言        前面兩篇文章,花了很大篇幅講解了Android的事件分發機制的原理性知識。然而,“紙上得來終覺淺,絕知此事要躬行”,前面講的那些原理,也都是為解決實際問題而服務的。本文將結合實際工作中經常遇到的滑動衝突案例,總結滑動衝突的場

Pro Android學習筆記 ActionBar1:Home圖標區

ces tom 新的 方便 find rac vertica lba manifest ?? Pro Android學習筆記(四八):ActionBar(1):Home圖標區 2013年03月10日 ? 綜合 ? 共 3256字 ? 字號 小 中 大 ? 評論關閉

Android計算器APP練習1--- 界面

span 練習 pre nbsp 方式 src 修改 正常 自己的 Android Studio 2.3.2 。參考文章:http://blog.csdn.net/like_program/article/details/51813632 1. 新建工程 MyCalcul

Android TV端的RecyclerView水平滾動焦點錯亂問題

boolean uestc spa cas roi enabled ati pix eve package com.hhzt.iptv.ui.customview;import android.content.Context;import android.content.r

Android內存優化DVM和ART原理初探

java虛擬機 劃分 cimage beef 靜態 由於 jar blank 查找 要學習Android的內存優化,首先要了解Java虛擬機,此前我用了多篇文章來介紹Java虛擬機的知識,就是為了這個系列做鋪墊。在Android開發中我們接觸的是與Java虛擬機類似的Dal

Android新手入門20168--ListView之ArrayAdapter

pos bject 了解 指定格式 pack extend line avi per 本文來自肥寶傳說之路,引用必須註明出處! ListView是Android中經常使用的控件。 什麽是列表視圖,讓我們先看看圖: 最常見的樣例就是各種菜單的下啦列表。 要實現列表,

Android Design Support Library用NavigationView實現抽屜菜單界面

mpi tar bar board contex != print 滑動 頭部 NavigationView在MD設計中很重要,之前Google也提出了使用DrawerLayout來實現導航抽屜。這次,在Android Design Support Li

Android 進程常駐5----開機廣播的簡單守護以及總結

ibm col 組合 win 要點 思考 eas 三星 殺死 這是一個輕量級的庫,配置幾行代碼。就能夠實如今android上實現進程常駐,也就是在系統強殺下,以及360獲取root權限下。clean master獲取root權限下都無法殺死進程 支持系統2.3

Android學習心得13 --- Android代碼混淆1

簽名 ref nes 三分 pen key this tool prop 我在博客上發表一些我的Android學習心得,希望對大家能有幫助。 這一篇我們講述一下最新的ADT環境下怎樣進行Android混淆 在新版本號的ADT創建項目時。混碼的文

Android新手入門201610--GridView

分享 XML tar 技術分享 gravity watermark 垂直 代碼 out 本文來自肥寶傳說之路。引用必須註明出處! GridView跟ListView一樣是多控件布局。實現九宮圖是最方便的。 還是先看看圖,沒圖說個雞雞是不是 如上圖。

Android 開發之 ---- bootloader LK

ttl tab 不同的 opera 指定 isa system void mem LK是什麽 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代碼 ,little kernel

Android sensor 系統框架

port amp cap 錯誤 str 註釋 hardware war cas 連載上一篇http://www.cnblogs.com/hackfun/p/7327320.html (D) 如何加載訪問.so庫 在前一篇博客http://www.cnblogs.co