`

自定义android Intent Action与继承TextView形成一个动态改变text的View

阅读更多
//Activity
package com.android.Somejavaknowledget;

import java.util.Date;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Somejavaknowledget extends Activity {
/** Called when the activity is first created. */
public static final String MyAction="Customized-Action-ChangeText";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);*/
//客制化Title
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_gallery_title);
TextView tv = (TextView)getWindow().findViewById(R.id.left_text);
tv.setText("hello");


DateView dv= (DateView)findViewById(R.id.tv);
dv.setUpdates(true);
Button btn = (Button) getWindow().findViewById(
R.id.close);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
System.out.println("finish this activity");
finish();

}
});
Button show = (Button)findViewById(R.id.change);
show.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//自定义的Action
Intent intent= new Intent();
intent.setAction(MyAction);
sendBroadcast(intent);


}
});



}
}


//DateView 继承TextView 通过reciver broadcast 动态改变text

package com.android.Somejavaknowledget;



import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;
import android.view.MotionEvent;

import java.text.DateFormat;
import java.util.Date;
import java.util.Formatter;

public final class DateView extends TextView {
    private static final String TAG = "DateView";

    private boolean mUpdating = false;
    private Context mContext;
    private static int count=1;
  

    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
         /*   if (action.equals(Intent.ACTION_TIME_TICK)
                    || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
                updateClock();
            }*/
            if(action.equalsIgnoreCase(Somejavaknowledget.MyAction)){
            updateClock();
            }
        }

    };

    public DateView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext=context;
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
    }
   
    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        setUpdates(false);
    }

    @Override
    protected int getSuggestedMinimumWidth() {
        // makes the large background bitmap not force us to full width
        return 0;
    }

    private final void updateClock() {
        //Date now = new Date();
        //setText(DateFormat.getDateInstance(DateFormat.LONG).format(now));
    String s=String.format("count=%d", count);
    setText(s);
    count++;
    }

    void setUpdates(boolean update) {
        if (update != mUpdating) {
            mUpdating = update;
            if (update) {
                // Register for Intent broadcasts for the clock and battery
                IntentFilter filter = new IntentFilter();
                /*filter.addAction(Intent.ACTION_TIME_TICK);
                filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);*/
               filter.addAction(Somejavaknowledget.MyAction);
                mContext.registerReceiver(mIntentReceiver, filter, null, null);

                updateClock();
            } else {
                mContext.unregisterReceiver(mIntentReceiver);
            }
        }
    }
}







分享到:
评论

相关推荐

    Android TextView中链接的实现

    TextView是Android布局中的一个视图元素,它用于显示单行或多行的文本。通过XML布局文件或代码动态创建,可以设置字体、颜色、大小等属性。要使TextView中的文本成为可点击的链接,我们需要使用`android:autoLink`...

    Android如何通过TextView实现超链接的跳转

    在布局XML文件中定义一个TextView,并在代码中设置其文本,同时启用`android:textIsSelectable`属性以允许文本选择。 ```xml <TextView android:id="@+id/hyperlink_textview" android:layout_width="wrap_...

    Android识别TextView的Uri并在自己的应用程序中打开

    要让Android系统知道当用户点击TextView中的链接时应启动我们的应用,我们需要在AndroidManifest.xml中添加一个自定义的Intent Filter。例如,如果我们要处理http和https链接,可以这样配置: ```xml <activity ...

    Android应用:TextView超级链接的2种实现方法

    可以使用`Intent.ACTION_VIEW`和`Uri.parse()`检查链接是否有效,避免启动无效或不安全的URL。 - `Linkify`类可以方便地添加多种类型的链接,例如电子邮件、电话号码等,但可能无法处理所有自定义格式的链接。对于...

    Textview加入Intent、表情,点击跳转Activity

    在Android开发中,`TextView` 是一个非常基础且重要的组件,通常用于显示文本信息。然而,`TextView` 不仅仅局限于静态展示,它还可以通过添加Intent和处理表情来增强交互性,实现点击后跳转到其他Activity的功能。...

    Android自定义显示电池电量

    例如,可以创建一个自定义View,根据电池百分比改变View的宽度或高度,同时添加平滑过渡的动画效果。 在项目`BatteryDemo`中,开发者可能已经实现了类似的示例代码,你可以查看并学习其中的实现细节。通过以上步骤...

    android自定义控件LinkTextView实现

    首先,我们要创建一个新的Java类,继承自Android的`TextView`类。在`LinkTextView`类中,我们需要重写一些关键方法来实现链接的识别和点击事件处理。具体步骤如下: 1. **初始化**: 在构造函数中,我们可以添加一些...

    Android整数乘法计算器(帮助理解Intent)

    在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,比如启动一个Activity或Service,甚至在不同应用之间进行数据共享。在这个名为"Android整数乘法计算器"的学习项目中,我们...

    TextView实现超链接的四种方式

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(link.getURL())); widget.getContext().startActivity(intent); } return true; } else { return super.onTouchEvent(widget, buffer, event); } ...

    android textview 部分文本变色,点击跳转

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); ((Activity) widget.getContext()).startActivity(intent); } // 可选:设置链接的下划线样式 @Override public void updateDrawState...

    textview网页链接

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent); } }; spannable.setSpan(clickSpan, 0, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); textView....

    Android 中“自定义权限”源代码

    ### Android中的自定义权限详解与实现 #### 一、引言 在Android系统中,为了保护用户隐私和数据安全,应用程序被赋予了基于权限的安全模型。Android预定义了一系列权限,如访问联系人、发送短信等,但同时也允许...

    仿微博获取到TextView中的url地址并且用“网址链接”替换,点击跳转

    TextView是Android UI组件库中的一个基本元素,用于显示单行或多行文本。它支持多种格式化选项,包括设置字体、颜色、大小以及插入HTML标签等。在处理URL时,我们可以利用Spanned和ClickableSpan类来实现链接的识别...

    Android自定义动态布局—多图片上传

    在Android开发中,实现“Android自定义动态布局—多图片上传”是一项常见的需求,尤其是在社交应用、电商应用等场景中。下面将详细讲解这个过程,包括如何使用Java代码动态创建布局以及实现多图片上传功能。 一、...

    TextView上超链接可以点击.zip

    在Android开发中,TextView是用于显示文本的基本组件。在许多应用中,我们可能需要在TextView中展示带有超链接的文本,比如帮助文档、用户协议等。`TextView`默认并不支持直接点击超链接,但通过一些技巧,我们可以...

    textview文字样式包含部分文字事件

    在Android开发中,`TextView` 是一个非常重要的组件,它用于显示单行或多行文本。在许多场景下,我们不仅需要展示普通的文本,还可能需要对文本进行样式化处理,或者对部分文字添加特殊功能,比如点击触发事件、设置...

    TextView例程

    在Android开发中,`TextView` 是一个至关重要的组件,它用于显示单行或多行文本。在本例程中,我们将探讨如何使用`TextView`来实现更丰富的视觉效果,包括不同颜色、字体、带链接的文本,以及具有圆角边框和渐变背景...

    TextView单击链接Activity

    在Android应用开发中,`TextView`是一个非常基础且重要的组件,通常用于显示文本信息。而当我们需要在`TextView`中的文本中嵌入可点击的链接,以触发特定的行为,如跳转到另一个`Activity`,这时就需要用到特殊的...

    Android做一个显示电量的小控件

    我们可以创建一个自定义的View,比如BatteryView,继承自ImageView或者TextView。在BatteryView中,我们根据电池电量动态改变图片或文字的显示。如果选择使用ImageView,可以准备一组代表不同电量的图片资源,根据...

    Android 使用SpannableString在TextView中插入表情、超链接、文字变大、加粗Demo下载

    在Android开发中,文本展示是常见的需求之一,而TextView作为主要的文本展示控件,有时候我们需要在其中实现更丰富的展示效果,比如插入表情、添加超链接、改变文字大小和加粗等。本教程将深入讲解如何利用...

Global site tag (gtag.js) - Google Analytics