android - 自定义下拉刷新列表.
PHP中文网
PHP中文网 2017-04-17 17:59:52
0
2
471

这里面的代码看不懂什么意思

public class MyListe extends ListView {

private View v;
private int height;
int anxiaY;
int huadongY;

@TargetApi(Build.VERSION_CODES.JELLY_BEAN) public MyListe(Context context, AttributeSet attrs) {
    super(context, attrs);
    v = View.inflate(context, R.layout.item2, null);
    v.measure(0, 0);
    height = v.getMeasuredHeight();
    v.setPadding(0, -height, 0, 0);
    addHeaderView(v);
}

@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override
public boolean onTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
    case MotionEvent.ACTION_DOWN:
        anxiaY = (int) ev.getY();
        break;
    case MotionEvent.ACTION_UP:
        setPadding(0, -height, 0, 0);
        v.invalidate();
        invalidate();
        break;
    case MotionEvent.ACTION_MOVE:
        huadongY = (int) ((ev.getY()-anxiaY)*0.3);
        setPadding(0, huadongY-height, 0, 0);
        v.invalidate();
        invalidate();
        break;
    }
    return super.onTouchEvent(ev);
}

}

PHP中文网
PHP中文网

认证0级讲师

membalas semua(2)
小葫芦

Saya tidak tahu bahagian mana yang anda tidak faham atau sama ada anda tidak faham sama sekali Kod ini sebenarnya tidak begitu rumit. Saya akan bercakap mengenainya dalam dua bahagian.

Pertama, pembina
memulakan pembina untuk memuatkan paparan tajuk ke dalam paparan senarai , lebarnya dan Ketinggiannya ialah -1, jadi anda perlu memanggil ukuran secara manual untuk mengukur secara paksa penghunian ruang paparan Tujuannya adalah untuk mendapatkan ketinggian untuk menyediakan setPadding apabila setPadding dicapai , komposisi parameter ialah measure, parameter teratas dimasukkan, sila optimis tentang setPadding, pada Android, kedudukan paparan bukan sahaja ruang yang boleh dilihat pada skrin, ia boleh dipanjangkan secara abstrak kepada yang lebih luas kawasan di luar skrin , jadi left, top, right, bottom bermaksud tetapan Kedudukan sudut kiri atas paparan adalah ketinggian di luar skrin, yang bermaksud bahawa paparan tajuk tidak dipaparkan dalam julat skrin yang boleh dilihat apabila ia dimulakan. Ia mungkin lebih mudah difahami dengan melihat lakaran yang saya lukis. Titik kuning di sudut kiri atas lakaran ialah perwakilan koordinat selepas pembina dimulakan. -height-height

Yang kedua ialah pemprosesan acara sentuh

Adakah halimunan yang ditambahkan oleh pembina hanya
mencukupi? Ya, itu sahaja! Jadi bilakah ia berubah dan berapa banyak ia berubah? Adakah ia sepatutnya berubah sebanyak jari meluncur pada paparan senarai? Ya, itu sahaja. Jika anda memahami proses ini, ia akan mudah difahami jika anda melihat pemprosesan acara sentuh. headerview如何显示? ialah tindakan menekan jari, anxiaY ialah koordinat y bagi titik yang ditekan, 改变headerview的paddingTop值 ialah tindakan menggelongsor jari, merekodkan perubahan koordinat y titik sentuhan jari semasa proses gelongsor, dan bandingkan dengan nilai anxiaY untuk mendapatkan Anda boleh melakukan tindakan tarik ke bawah berdasarkan jarak gelongsor jari anda Dengan terus menetapkan nilai paddingTop pandangan kepala dan menyegarkan pandangan, anda boleh mencapai paparan kepala boleh meluncur masuk atau keluar. skrin mengikut jarak gelongsor jari anda. ACTION_DOWNIaitu, sentuhan jari meninggalkan skrin dan berhenti meluncur Pada masa ini, nilai paddingTop ditetapkan semula kepada ACTION_MOVE, paparan pengepala ditetapkan semula, keseluruhan meninggalkan skrin dan kembali ke kedudukan semasa pembina berada. dimulakan, melengkapkan keseluruhan proses tarik-turun. ACTION_UP

阿神

Bina ketinggian lalu, kemudian dengar acara Sentuh dan kemas kini kedudukan kepala

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan