<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android實現(xiàn)炫酷背景圖垂直循環(huán)滾動效果

          共 6078字,需瀏覽 13分鐘

           ·

          2021-06-01 16:59

          實現(xiàn)步驟:


          1、效果圖展示
          2、自定義實現(xiàn)滾動效果RecyclerView
          3、適配器Adapter實現(xiàn)
          4、適配器布局文件
          5、主程序調(diào)用過程
          6、主布局文件
          7、總結(jié)


          1、效果圖展示



          2、自定義實現(xiàn)滾動效果RecyclerView


          AutoPollRecyclerView.java

          public class AutoPollRecyclerView extends RecyclerView {    private static final long TIME_AUTO_POLL = 16;    AutoPollTask autoPollTask;    private boolean running; //標示是否正在自動輪詢    private boolean canRun;//標示是否可以自動輪詢,可在不需要的是否置false
          public AutoPollRecyclerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); autoPollTask = new AutoPollTask(this); }
          static class AutoPollTask implements Runnable { private final WeakReference<AutoPollRecyclerView> mReference;
          //使用弱引用持有外部類引用->防止內(nèi)存泄漏 public AutoPollTask(AutoPollRecyclerView reference) { this.mReference = new WeakReference<AutoPollRecyclerView>(reference); }
          @Override public void run() { AutoPollRecyclerView recyclerView = mReference.get(); if (recyclerView != null && recyclerView.running && recyclerView.canRun) { recyclerView.scrollBy(2, 2); recyclerView.postDelayed(recyclerView.autoPollTask, recyclerView.TIME_AUTO_POLL); } } }
          //開啟:如果正在運行,先停止->再開啟 public void start() { if (running) stop(); canRun = true; running = true; postDelayed(autoPollTask, TIME_AUTO_POLL); }
          public void stop() { running = false; removeCallbacks(autoPollTask); }
          @Override public boolean onTouchEvent(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: if (running) stop(); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_OUTSIDE: if (canRun) start(); break; } //return false,注釋掉onTouchEvent()方法里面的stop和start方法,則列表自動滾動且不可觸摸 return super.onTouchEvent(e);}}


          3、適配器Adapter實現(xiàn)

          AutoPollAdapter.java

          public class AutoPollAdapter extends RecyclerView.Adapter<AutoPollAdapter.BaseViewHolder> {    private final Context mContext;

          public AutoPollAdapter(Context context) { this.mContext = context; }
          @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.auto_list_item, parent, false); BaseViewHolder holder = new BaseViewHolder(view); return holder; }
          @Override public void onBindViewHolder(BaseViewHolder holder, int position) {
          }
          @Override public int getItemCount() { return Integer.MAX_VALUE; }
          class BaseViewHolder extends RecyclerView.ViewHolder { ImageView imageView;
          public BaseViewHolder(View itemView) { super(itemView);            imageView = itemView.findViewById(R.id.iv_login_bg); }    }}


          4、適配器布局文件


          auto_list_item.xml

          <?xml version="1.0" encoding="utf-8"?><ImageView xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/iv_login_bg"    android:layout_width="480dp"    android:layout_height="2065dp"    android:scaleType="matrix"    android:adjustViewBounds="true"    android:background="@drawable/login_bg01"/>


          5、主程序調(diào)用過程


          LoginActivity.java

          public class LoginActivity extends AppCompatActivity {    private AutoPollRecyclerView recyclerView;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);        recyclerView = findViewById(R.id.recyclerview);
          recyclerView.setLayoutManager( new LinearLayoutManager( this, //設(shè)置LinearLayoutManager.HORIZONTAL 則水平滾動 LinearLayoutManager.VERTICAL, false));
          AutoPollAdapter autoPollAdapter = new AutoPollAdapter(getApplicationContext()); recyclerView.setAdapter(autoPollAdapter); //啟動滾動            recyclerView.start(); }}


          6、主布局文件

          <?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent">

          <com.imooc.guessmusic.view.AutoPollRecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="wrap_content" tools:ignore="MissingConstraints" />
          <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY" android:src="@drawable/login_dark" />
          <ImageView android:layout_width="120dp" android:layout_height="120dp" android:layout_gravity="center_horizontal" android:layout_marginTop="120dp" android:src="@drawable/login_logo" />
          <TextView android:layout_width="400dp" android:layout_height="60dp" android:layout_marginTop="60dp" android:layout_gravity="center" android:background="@drawable/btn_c" android:gravity="center" android:textSize="22sp" android:textStyle="bold" android:textColor="@color/black" android:text="微信登錄" /> <TextView android:layout_width="400dp" android:layout_height="60dp" android:layout_marginTop="150dp" android:layout_gravity="center" android:background="@drawable/btn_c_b" android:gravity="center" android:textSize="22sp" android:textColor="@color/text_white" android:text="手機號碼快捷登錄" /></FrameLayout>


          需要源碼的童鞋在【龍旋】公眾號對話框發(fā)送關(guān)鍵字【炫酷背景】即可獲取。


          到這里就結(jié)束啦。

          瀏覽 136
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国一区二区 | 在线看亚洲三级 | 四虎性爱 | 99日精品| 内射红桃视频免费看 |