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

首頁 > 系統 > Android > 正文

Android仿京東快報信息滾動效果

2019-12-12 01:09:43
字體:
來源:轉載
供稿:網友

先來看看效果吧,Android仿京東快報信息滾動效果,具體內容如下

 

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

代碼:

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;    // 輪播間隔時間為3s    setFlipInterval(3000);    // 內邊距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://垂直滾動動畫設置        // 設置enter和leave動畫        setInAnimation(AnimationUtils.loadAnimation(context, R.anim.notify_in));        setOutAnimation(AnimationUtils.loadAnimation(context, R.anim.notify_out));        break;      case SCROLL_TYPE_HORIZONTAL://水平滾動動畫設置        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++) {      // 根據公告內容構建一個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);      // 將公告的位置設置為textView的tag方便點擊是回調給用戶      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 ;  }  /**   * 通知點擊監聽接口   */  public interface OnNoticeClickListener {    void onNotieClick(int position, String notice);  }  private OnNoticeClickListener mOnNoticeClickListener;  /**   * 設置通知點擊監聽器   *   * @param onNoticeClickListener 通知點擊監聽器   */  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) {//        // 當像左側滑動的時候//        //設置View進入屏幕時候使用的動畫//        //設置View退出屏幕時候使用的動畫//         ToLeftAnimation();//        showNext();//      } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE//          && Math.abs(velocityX) > FLING_MIN_VELOCITY) {//        // 當像右側滑動的時候//        ToRightAnimation();//        showPrevious();//      }//      handler.postDelayed(new Runnable() {//        @Override//        public void run() {//          startFlipping();//        }//      },0);////      return true;//    }//  }}

注釋掉的內容可以不用管,那是我做其他調試用的

使用方式

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("家電五折團,搶十億無門檻現金紅包");    notices.add("星球大戰剃須刀首發送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();  }}

//設置從左開始滾動還是,水平向上開始滾動jinDongKuaiBaoView.setScrollType(JinDongKuaiBaoView.SCROLL_TYPE_HORIZONTAL);//開始滾動的方法jinDongKuaiBaoView.startFlipping();// 輪播間隔時間為3ssetFlipInterval(3000);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿尔山市| 衡山县| 黔西县| 翁牛特旗| 亚东县| 临猗县| 万年县| 新泰市| 盐津县| 太原市| 合川市| 碌曲县| 汕头市| 石嘴山市| 孟州市| 南阳市| 绵竹市| 田东县| 石阡县| 磴口县| 莫力| 长沙市| 禹城市| 历史| 丹棱县| 白银市| 乐至县| 尚义县| 东平县| 登封市| 日喀则市| 汾西县| 莱西市| 资兴市| 叶城县| 湾仔区| 武城县| 桑植县| 河池市| 平南县| 利辛县|