android 跑马灯事件,Android Studio 实现跑马灯微项目实例

**闲来无事,自己做了很多小的Demo,现在分享一个小的跑马灯项目实例,有机会把2048小游戏的Demo也发了。不过那个的算法稍微有点儿复杂,需要整理。

首先在创建一个MarqueeTextViewDemo项目

在res-layout-activity_main.xml中编写出相应的布局EditText,Button还有TextView

第一步要实现一个静态的跑马灯样式,然后通过后台方法的调用,来实现动态跑马灯效果。

很多朋友在编写跑马灯时,会出现第一行文字内容正常,其他不会出现跑马灯效果,我这里的解决办法需要在Android:id上做文章,在MarqueeText.java中调用TextView。

activity_main.xml代码如下<?xml version="1.0" encoding="utf-8"?>

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:background="#93ff93"

tools:context="com.example.dujiang.marqueetextviewdemo.MainActivity">

android:id="@+id/tv_result"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:singleLine="true"

android:ellipsize="marquee"

android:focusable="true"

android:focusableInTouchMode="true"

android:textSize="100dp"

android:textColor="#CE0000"

android:layout_marginTop="10dp"

android:text="加微信:dujiang0311"

/>

android:id="@+id/et_text"

android:hint="输入跑马灯文字"

android:layout_marginTop="400dp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

/>

android:id="@+id/b_btn"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="点击生成跑马灯"

android:layout_marginTop="450dp"

android:onClick="scan"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="75dp"

android:singleLine="true"

android:ellipsize="marquee"

android:focusable="true"

android:focusableInTouchMode="true"

android:text="自己动手丰衣足食,谢谢大家哈哈哈哈哈哈哈哈"

android:layout_below="@id/tv_result"

android:layout_alignParentStart="true" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="25dp"

android:singleLine="true"

android:ellipsize="marquee"

android:focusable="true"

android:focusableInTouchMode="true"

android:text="自己动手丰衣足食,谢谢大家哈哈哈哈哈哈哈哈"

android:layout_marginBottom="93dp"

android:layout_alignBottom="@id/et_text"

android:layout_alignParentStart="true" />

废话不多说,第二步你需要让不止一行的文字显示出跑马灯的效果,所以,你需创建一个类在:java-com...marqueetextviewdemo中。我取的类名称是MarqueeText.java代码如下package com.example.dujiang.marqueetextviewdemo;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.TextView;

/**

* Created by Dujiang on 2016/10/27.

*/

public class MarqueeText extends TextView {

public MarqueeText(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean isFocused(){

//判断TextView是不是在一个被选中的状态上。

return true ;//返回的是true,确定其在被选中的状态上

}//刚才第一个可以滚动而第二个不可以滚动,是因为第一个Textview已经把focus(焦点)拿到了,

//并没有被第二个得到(因为拿不到)

//而我们自定义的值是让所有的Focused都能得到(焦点),因此两个都可以滚动

public MarqueeText(Context context) {

super(context);

}

public MarqueeText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

public MarqueeText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

}

}

你一定要清楚自己想要实现的效果,不是仅仅实现你后台输入的固定文字,这样的不足以称之为程序,只能称为垃圾代码,我们要能实现在前端编写相应的文字,让显示出来的文字呈现出跑马灯效果。

MainActivity 是在程序中自动生成的,在这个类中,你需要将你EditText中编辑的文字,通过Button事件,在TextView中生成出来。MainActivity.java中的代码如下:package com.example.dujiang.marqueetextviewdemo;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.EditText;

import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private EditText editText;

private TextView textView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.b_btn).setOnClickListener(this);

editText = (EditText) findViewById(R.id.et_text);

textView = (TextView) findViewById(R.id.tv_result);

}

public void onClick(View v) {

textView.setText(editText.getText()); // !

}

}

以上就实现了代码的动态显示的过程,其实并不太难,里面涉及到的强制类型转换的问题,这个就需要读者自己体悟了。以下是个人经验:关于编程我们最重要的是要养成自己的编程习惯,其次,我们写出来的代码首先让自己看着舒服,其次是让别人看着舒服,最最忌讳的是让电脑看着舒服,你控制着你的代码, 并不是你的代码控你。致我们这些一直走在路上的程序猿!!!!

**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值