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

首頁 > 系統 > Android > 正文

簡單實現Android滾動公告欄

2019-10-23 19:50:48
字體:
來源:轉載
供稿:網友

實現的效果,是一個滾動的公告欄,是這樣的:

Android,滾動公告欄

可以看到這個公告欄一方面是滾動,另外一方面是可點擊。

實現的思路:

1.textView放在ViewFlipper中實現滑動效果(可設置左右、或者上下滾動),很明顯這應該是自定義view;

2.利用textView的點擊事件即可實現點擊;

OK,先看看自定義view的代碼:

public class MarqueeTextView extends LinearLayout {   private Context mContext;  private ViewFlipper viewFlipper;  private View marqueeTextView;  private String[] textArrays;  private MarqueeTextViewClickListener marqueeTextViewClickListener;   public MarqueeTextView(Context context) {  super(context);  mContext = context;  initBasicView();  }    public MarqueeTextView(Context context, AttributeSet attrs) {  super(context, attrs);  mContext = context;  initBasicView();  }   public void setTextArraysAndClickListener(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {//1.設置數據源;2.設置監聽回調(將textView點擊事件傳遞到目標界面進行操作)  this.textArrays = textArrays;  this.marqueeTextViewClickListener = marqueeTextViewClickListener;  initMarqueeTextView(textArrays, marqueeTextViewClickListener);  }   public void initBasicView() {//加載布局,初始化ViewFlipper組件及效果  marqueeTextView = LayoutInflater.from(mContext).inflate(R.layout.marquee_textview_layout, null);  LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);  addView(marqueeTextView, layoutParams);  viewFlipper = (ViewFlipper) marqueeTextView.findViewById(R.id.viewFlipper);  viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_in_bottom));//設置上下的動畫效果(自定義動畫,所以改左右也很簡單)  viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_out_top));  viewFlipper.startFlipping();  }   public void initMarqueeTextView(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {  if (textArrays.length == 0) {   return;  }   int i = 0;  viewFlipper.removeAllViews();  while (i < textArrays.length) {   TextView textView = new TextView(mContext);   textView.setText(textArrays[i]);   textView.setOnClickListener(marqueeTextViewClickListener);   LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);   viewFlipper.addView(textView, lp);   i++;  }  }   public void releaseResources() {  if (marqueeTextView != null) {   if (viewFlipper != null) {   viewFlipper.stopFlipping();   viewFlipper.removeAllViews();   viewFlipper = null;   }   marqueeTextView = null;  }  }  } 

然后,主Activity異常簡單(還是封裝得好):

public class MainActivity extends AppCompatActivity {  private MarqueeTextView marqueeTv;  private String [] textArrays = new String[]{"this is content No.1","this is content No.2","this is content No.3"};   @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  marqueeTv = (MarqueeTextView) findViewById(R.id.marqueeTv);   marqueeTv.setTextArraysAndClickListener(textArrays, new MarqueeTextViewClickListener() {   @Override   public void onClick(View view) {   startActivity(new Intent(MainActivity.this,AnotherActivity.class));   }  });  }   @Override  protected void onDestroy() {  marqueeTv.releaseResources();  super.onDestroy();  } } 

Git地址>>https://github.com/ganshenml/MarqueeTextViewApp

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新化县| 慈溪市| 永康市| 靖安县| 黄冈市| 石嘴山市| 珲春市| 桐乡市| 金阳县| 三河市| 沙坪坝区| 巴楚县| 鄂尔多斯市| 诏安县| 福安市| 义乌市| 绥中县| 洪洞县| 玛多县| 新蔡县| 林西县| 桑植县| 密云县| 台前县| 通海县| 台东县| 齐河县| 盈江县| 阿拉善左旗| 乌苏市| 科技| 泽州县| 咸宁市| 嘉义市| 自贡市| 海阳市| 郸城县| 米易县| 安新县| 乌审旗| 高清|