自定義ScrollView實現(xiàn)

用于監(jiān)聽ScrollView的滾動媳板,來改變某一布局的透明度

引用
(http://blog.csdn.net/sinat_21283073/article/details/51315926)

1 自定義scrollView

`
public class ObservableScrollView extends ScrollView {

public interface ScrollViewListener {  
    void onScrollChanged(ObservableScrollView scrollView, int x, int y,  
            int oldx, int oldy);  

}  

private ScrollViewListener scrollViewListener = null;  

public ObservableScrollView(Context context) {  
    super(context);  
}  

public ObservableScrollView(Context context, AttributeSet attrs,  
        int defStyle) {  
    super(context, attrs, defStyle);  
}  

public ObservableScrollView(Context context, AttributeSet attrs) {  
    super(context, attrs);  
}  

public void setScrollViewListener(ScrollViewListener scrollViewListener) {  
    this.scrollViewListener = scrollViewListener;  
}  

@Override  
protected void onScrollChanged(int x, int y, int oldx, int oldy) {  
    super.onScrollChanged(x, y, oldx, oldy);  
    if (scrollViewListener != null) {  
        scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);  
    }  
} 

}
`

2 使用

`
public class MainActivity extends Activity implements ScrollViewListener{

private ObservableScrollView scrollView;  
  
private ListView listView;  
  
private ImageView imageView;  
  
private TextView textView;  
  
private int imageHeight;  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
    scrollView = (ObservableScrollView) findViewById(R.id.scrollview);  
    listView = (ListView) findViewById(R.id.listview);  
    imageView = (ImageView) findViewById(R.id.imageview);  
    textView = (TextView) findViewById(R.id.textview);  
    initListeners();  
    initData();  
}  
  
private void initListeners() {  
    // 獲取頂部圖片高度后沃测,設(shè)置滾動監(jiān)聽  
    ViewTreeObserver vto = imageView.getViewTreeObserver();  
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  
        @Override  
        public void onGlobalLayout() {  
            imageView.getViewTreeObserver().removeGlobalOnLayoutListener(  
                    this);  
            imageHeight = imageView.getHeight();  

            scrollView.setScrollViewListener(MainActivity.this);  
        }  
    });  
}  



private void initData() {  
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.data));  
    listView.setAdapter(adapter);  
}  



@Override  
public void onScrollChanged(ObservableScrollView scrollView, int x, int y,  
        int oldx, int oldy) {  
    // TODO Auto-generated method stub  
    // Log.i("TAG", "y--->" + y + "    height-->" + height);  
    if (y <= 0) {  
        textView.setBackgroundColor(Color.argb((int) 0, 227, 29, 26));//AGB由相關(guān)工具獲得弹砚,或者美工提供  
    } else if (y > 0 && y <= imageHeight) {  
        float scale = (float) y / imageHeight;  
        float alpha = (255 * scale);  
        // 只是layout背景透明(仿知乎滑動效果)  
        textView.setBackgroundColor(Color.argb((int) alpha, 227, 29, 26));  
    } else {  
        textView.setBackgroundColor(Color.argb((int) 255, 227, 29, 26));  
    }  
}  

}
`

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市啥寇,隨后出現(xiàn)的幾起案子荠藤,更是在濱河造成了極大的恐慌疹吃,老刑警劉巖蕉毯,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乓搬,死亡現(xiàn)場離奇詭異,居然都是意外死亡代虾,警方通過查閱死者的電腦和手機进肯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棉磨,“玉大人江掩,你說我怎么就攤上這事〕巳浚” “怎么了环形?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長衙傀。 經(jīng)常有香客問我抬吟,道長,這世上最難降的妖魔是什么统抬? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任火本,我火速辦了婚禮,結(jié)果婚禮上聪建,老公的妹妹穿的比我還像新娘钙畔。我一直安慰自己,他們只是感情好金麸,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布擎析。 她就那樣靜靜地躺著,像睡著了一般挥下。 火紅的嫁衣襯著肌膚如雪揍魂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天棚瘟,我揣著相機與錄音愉烙,去河邊找鬼。 笑死解取,一個胖子當著我的面吹牛步责,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禀苦,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼蔓肯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了振乏?” 一聲冷哼從身側(cè)響起蔗包,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慧邮,沒想到半個月后调限,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舟陆,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年耻矮,在試婚紗的時候發(fā)現(xiàn)自己被綠了秦躯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡裆装,死狀恐怖踱承,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哨免,我是刑警寧澤茎活,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站琢唾,受9級特大地震影響载荔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜采桃,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一身辨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芍碧,春花似錦煌珊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踪危,卻和暖如春蔬浙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贞远。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工畴博, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蓝仲。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓俱病,卻偏偏與公主長得像,于是被迫代替她去往敵國和親袱结。 傳聞我的和親對象是個殘疾皇子亮隙,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容