国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android仿京東快報(bào)信息滾動(dòng)效果

2019-10-22 18:15:12
字體:
供稿:網(wǎng)友

先來看看效果吧,Android仿京東快報(bào)信息滾動(dòng)效果,具體內(nèi)容如下

Android,快報(bào)信息,滾動(dòng),京東

(截圖效果不是很好,但是差不多出來了)

代碼:

package com.test.scrolltransptoolbar;import android.content.Context;import android.graphics.Color;import android.os.Handler;import android.text.TextUtils;import android.util.AttributeSet;import android.util.TypedValue;import android.view.GestureDetector;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.view.animation.AnimationUtils;import android.widget.TextView;import android.widget.ViewFlipper;import java.util.List;/** * Created by Administrator on 2017/8/31. */public class JinDongKuaiBaoView extends ViewFlipper implements View.OnClickListener, View.OnTouchListener {  private Context context;  private List<String> mNotices;  public final static int SCROLL_TYPE_VERTICAL = 0;  public final static int SCROLL_TYPE_HORIZONTAL = 1;  private GestureDetector mGestureDetector;  public static final int FLING_MIN_DISTANCE = 80;  public static final int FLING_MIN_VELOCITY = 120;  private boolean isFling=false;  public JinDongKuaiBaoView(Context context) {    super(context);  }  Handler handler=new Handler();  public JinDongKuaiBaoView(Context context, AttributeSet attrs) {    super(context, attrs);    init(context);  }  private void init(Context context) {    // mGestureDetector = new GestureDetector(new simpleGestureListener());    this.context = context;    // 輪播間隔時(shí)間為3s    setFlipInterval(3000);    // 內(nèi)邊距5dp    setPadding(dp2px(5f), dp2px(5f), dp2px(5f), dp2px(5f));     setScrollType(SCROLL_TYPE_VERTICAL);    // setOnTouchListener(this);  }  private int dp2px(float dpValue) {    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,        dpValue,        context.getResources().getDisplayMetrics());  }  public void setScrollType(int type) {    clearAnimation();    switch (type) {      case SCROLL_TYPE_VERTICAL://垂直滾動(dòng)動(dòng)畫設(shè)置        // 設(shè)置enter和leave動(dòng)畫        setInAnimation(AnimationUtils.loadAnimation(context, R.anim.notify_in));        setOutAnimation(AnimationUtils.loadAnimation(context, R.anim.notify_out));        break;      case SCROLL_TYPE_HORIZONTAL://水平滾動(dòng)動(dòng)畫設(shè)置        setInAnimation(AnimationUtils.loadAnimation(context, R.anim.horizontal_notify_in));        setOutAnimation(AnimationUtils.loadAnimation(context, R.anim.horizontal_notify_out));        break;      default:        break;    }  }  /**   * 添加需要輪播展示的公告   *   * @param notices   */  public void addNotice(List<String> notices) {    this.mNotices = notices;    removeAllViews();    for (int i = 0; i < mNotices.size(); i++) {      // 根據(jù)公告內(nèi)容構(gòu)建一個(gè)TextView      String notice = notices.get(i);      TextView textView = new TextView(context);      textView.setSingleLine();      textView.setText(notice);      textView.setTextSize(13f);      textView.setEllipsize(TextUtils.TruncateAt.END);      textView.setTextColor(Color.parseColor("#666666"));      textView.setGravity(Gravity.CENTER_VERTICAL);      // 將公告的位置設(shè)置為textView的tag方便點(diǎn)擊是回調(diào)給用戶      textView.setTag(i);       textView.setOnClickListener(this);      // 添加到ViewFlipper      JinDongKuaiBaoView.this.addView(textView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));    }  }  @Override  public void onClick(View v) {    int position = (int) v.getTag();    String notice = (String) mNotices.get(position);    if (mOnNoticeClickListener != null) {      mOnNoticeClickListener.onNotieClick(position, notice);    }  }//  private void ToRightAnimation() {//    clearAnimation();//    setInAnimation(AnimationUtils.loadAnimation(context, R.anim.right_notify_in));//    setOutAnimation(AnimationUtils.loadAnimation(context, R.anim.right_notify_out));//  }////  private void ToLeftAnimation() {//    clearAnimation();//    setInAnimation(AnimationUtils.loadAnimation(context, R.anim.horizontal_notify_in));//    setOutAnimation(AnimationUtils.loadAnimation(context, R.anim.horizontal_notify_out));//  }  @Override  public boolean onTouch(View v, MotionEvent event) {    mGestureDetector.onTouchEvent(event);    return true ;  }  /**   * 通知點(diǎn)擊監(jiān)聽接口   */  public interface OnNoticeClickListener {    void onNotieClick(int position, String notice);  }  private OnNoticeClickListener mOnNoticeClickListener;  /**   * 設(shè)置通知點(diǎn)擊監(jiān)聽器   *   * @param onNoticeClickListener 通知點(diǎn)擊監(jiān)聽器   */  public void setOnNoticeClickListener(OnNoticeClickListener onNoticeClickListener) {    mOnNoticeClickListener = onNoticeClickListener;  }//  private class simpleGestureListener extends GestureDetector.SimpleOnGestureListener {//    @Override//    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//      isFling=true;//      if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE//          && Math.abs(velocityX) > FLING_MIN_VELOCITY) {//        // 當(dāng)像左側(cè)滑動(dòng)的時(shí)候//        //設(shè)置View進(jìn)入屏幕時(shí)候使用的動(dòng)畫//        //設(shè)置View退出屏幕時(shí)候使用的動(dòng)畫//         ToLeftAnimation();//        showNext();//      } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE//          && Math.abs(velocityX) > FLING_MIN_VELOCITY) {//        // 當(dāng)像右側(cè)滑動(dòng)的時(shí)候//        ToRightAnimation();//        showPrevious();//      }//      handler.postDelayed(new Runnable() {//        @Override//        public void run() {//          startFlipping();//        }//      },0);////      return true;//    }//  }}

注釋掉的內(nèi)容可以不用管,那是我做其他調(diào)試用的

使用方式

package com.test.scrolltransptoolbar;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/8/31. */public class ViewFlipperActivity extends Activity implements JinDongKuaiBaoView.OnNoticeClickListener {  private JinDongKuaiBaoView jinDongKuaiBaoView;  private GestureDetector gestureDetector;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_viewflipper);    jinDongKuaiBaoView = (JinDongKuaiBaoView) findViewById(R.id.jindongkuaibaoview);    List<String> notices = new ArrayList<>();    notices.add("大促銷下單拆福袋,億萬新年紅包隨便拿");    notices.add("家電五折團(tuán),搶十億無門檻現(xiàn)金紅包");    notices.add("星球大戰(zhàn)剃須刀首發(fā)送200元代金券");    jinDongKuaiBaoView.setScrollType(JinDongKuaiBaoView.SCROLL_TYPE_HORIZONTAL);    jinDongKuaiBaoView.addNotice(notices);    jinDongKuaiBaoView.startFlipping();    jinDongKuaiBaoView.setOnNoticeClickListener(this);  }  @Override  public void onNotieClick(int position, String notice) {    Toast.makeText(ViewFlipperActivity.this,"position"+position,Toast.LENGTH_LONG).show();  }}
//設(shè)置從左開始滾動(dòng)還是,水平向上開始滾動(dòng)jinDongKuaiBaoView.setScrollType(JinDongKuaiBaoView.SCROLL_TYPE_HORIZONTAL);//開始滾動(dòng)的方法jinDongKuaiBaoView.startFlipping();// 輪播間隔時(shí)間為3ssetFlipInterval(3000);

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 且末县| 美姑县| 沈阳市| 宽城| 南陵县| 平顶山市| 乐安县| 怀仁县| 新密市| 广西| 凌源市| 信阳市| 忻城县| 攀枝花市| 荔波县| 体育| 剑川县| 云浮市| 棋牌| 东阳市| 依兰县| 岳池县| 南皮县| 隆林| 麻阳| 宁晋县| 江达县| 历史| 仁怀市| 田东县| 雷州市| 三河市| 巫溪县| 台中县| 新和县| 灌阳县| 塔城市| 图木舒克市| 乌海市| 南宫市| 张家港市|