当前位置:  编程技术>移动开发
本页文章导读:
    ▪一个由onKeyUp引起的有关问题        一个由onKeyUp引起的问题 刚写一个小程序,在用户按下Back按键返回时,需要保存一些数据。在实际应用中发现有时数据会重复保存多次,而有时则只保存一次,经过跟踪发现,当快速的按.........
    ▪ TextView的泛滥使用        TextView的众多使用 .1更改与显示文字标签——TextView标签的使用main.xml下修改TextView<TextViewandroid:id="@+id/myTextView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/str_1.........
    ▪ TextView刷进与刷出的效果       TextView刷入与刷出的效果 //// attrs.xml    自定义属性<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="SlidingText">       <attr name="animationDuration" format="integer" /&.........

[1]一个由onKeyUp引起的有关问题
    来源: 互联网  发布时间: 2014-02-18
一个由onKeyUp引起的问题
刚写一个小程序,在用户按下Back按键返回时,需要保存一些数据。

在实际应用中发现有时数据会重复保存多次,而有时则只保存一次,经过跟踪发现,当快速的按下Back按键时,此时前台Activity尚未消失,会收到多次onKeyUp回调,导致数据保存了多次。

将数据保存代码调整到onBackPressed()后就没有此现象了,即使快速的多次点击Back,也只会回调一次。

    
[2] TextView的泛滥使用
    来源: 互联网  发布时间: 2014-02-18
TextView的众多使用
.1更改与显示文字标签——TextView标签的使用

main.xml下修改TextView

<TextView
android:id="@+id/myTextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_1"
android:layout_x="30px"
android:layout_y="50px"
>

这里设置了一个TextView显示框,设置了显示ID,显示内容和显示的布局。

要怎么显示TextView的内容呢?请看 工程名.java 如下

/*必须引入widget.TextView才能在程序声明TextView对象*/
import android.widget.TextView;

public class EX03_01 extends Activity
{
/*必须引入widget.TextView才能在程序声明TextView对象*/
private TextView mTextView01;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

/*更新main.xml Layout此时mTextView01:textstr_1*/
setContentView(R.layout.main);

/*使用findViewById函数,利用ID找到该TextView对象* /
mTextView01 = (TextView) findViewById(R.id.myTextView01);

String str_2 = "欢饮来到Android的TextView世界";
mTextView01.setText(str_2);

}
}

我们的目标是改变显示的文字TextView要显示str_2

但是我们定义的str_1,在main.xml是固定显示的。所以我们通过了str_2实现了字符串的显示的更改。

实验一完成。实验拓展

TextView里的setText支持多态的构造方法:

pubic final void setText(chargeSequence text)

pubic final void setText(int resid)

pubic final void setText(int resid,TextView.BufferType type)

pubic final void setText(char[],int start,int len)

这里的start是显示开始的字节,len为显示的长度

3.2更改窗口画面底色——drawable颜色常数的方法

主程序如下:

public class ex3 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

我们这里只要修改main.xml就OK了,因为他是设置界面的。

main.xml如下

主界面部分

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/white"
>

TextView部分

这里是显示std_id字符串,显示颜色为darkgray

<TextView
android:id="@+id/widget28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_id"
android:textColor="@drawable/darkgray"
android:layout_x="61px"
android:layout_y="69px"
>
</TextView>

这里显示显现str_pwd字符串,显示颜色为darkgray


<TextView
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_pwd"
android:textColor="@drawable/darkgray"
android:layout_x="61px"
android:layout_y="158px"
>
</TextView

EditView部分:

这里设置一个EditText框
<EditText
android:id="@+id/widget31"
android:layout_width="120dip"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="114px"
android:layout_y="57px"
>
</EditText>

这里设置一个EditText框
<EditText
android:id="@+id/widget30"
android:layout_width="120dip"
android:layout_height="wrap_content"
android:textSize="18sp"
android:password="true"
android:layout_x="112px"
android:layout_y="142px"
>
</EditText>

不过这里要有white和darkgray就要先定义这两个颜色变量

在values下新建一个color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable name="darkgray">#808080FF</drawable>
<drawable name="white">#FFFFFFFF</drawable>
</resources>

这样的就我们就实现了随意改变窗口的颜色了。yeah

实验拓展:

可以利用drawable实现定义众多的颜色参量(在resource里面),方便使用。也可以通过程序随意改变窗口的颜色。程序如下

Resources resources = getBaseContext .getResources();

Drawable HippoDrawable =resources.getDrawable(R.drawable.white);

TextView tv = (TextView) findViewById(R.id.text);

tv.SetBackground(HippoDrawable );

3.更改TextView文字的颜色——drawable颜色常数的方法

实验说明,通过上例,我们知道Drawable来定义颜色常数,但实际上是用程序控制TextView和或者其他对象(setBackgroundDrawable),

如判断对象被单击是背景颜色亮起和单失去背景颜色时,又恢复原来的颜色。

以下的范例将拓展前一个范例的实现,预先设计两个TextView对象,并在onCreat同时通过两种程序描述方法,实时更改原来Layout里的背景色以及文字颜色,最后使用Android默认颜色常数来更改文字的背景色。

主程序如下:

public class ex3 extends Activity {

private TextView mTextView01;
private TextView mTextView02;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mTextView01 = (TextView) findViewById(R.id.myTextView01);
mTextView01.setText("我是应用程序的背景颜色");

//更改文字内容
Resources resources = getBaseContext().getResources();
Drawable HippoDrawable = resources.getDrawable(R.drawable.white);
mTextView01.setBackgroundDrawable(HippoDrawable);

//设置文字框的背景颜色

mTextView02 = (TextView) findViewById(R.id.myTextView02);
mTextView02.setTextColor(Color.MAGENTA);

//改变文字显示的颜色
}
}

程序里新建两个类成员变量:mTextView01和mTextView02,这两个变量在onCreat之初,以findViewById方法使初始化为layout里面的TextView对象。在当中使用了Resource类以及Drawable类,分别创建了resources对象以及HippoDrawable对象,并将前一个范例中所所创建的R.drawable.white以及getDrawable方法加载,最后则调用了setBackgroundDrawable来更改mTextView01的文字底纹。更改TextView的文字,则使用setText方法。

3.4置换TextView文字——CharSequence数据类型和Source ID应用

实验示范如何在程序运行时,通过CharSequence依据Resource ID取出字符串,并正确更改TextView的文字。

import android.widget.TextView;

public class ex3_4 extends Activity {

private TextView mTextView02;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mTextView02 = (TextView) findViewById(R.id.myTextView02);
CharSequence str_2 = getString(R.string.str_2);

String str_3 = "我是程序里面调用的Resource";
mTextView02.setText(str_3 + str_2);
}
}

两个用法是一致的。

3.5 读取手机屏幕的大小

程序如下:

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;

public class ex3_5 extends Activity {

private TextView mTextView01;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

/*必须引用 android.util.DisplayMetrics */
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

//得到手机分辨率

String strOpt = "手机分辨率为" + dm.widthPixels + " ⊙ " + dm.heightPixels;

//将这些文字都连接起来。

mTextView01 = (TextView) findViewById(R.id.myTextView01);
mTextView01.setText(strOpt);

//输出文字。
}
}

在2.1的环境下运行屏幕大小为320*480

3.6样式化的定性对象——Style样式的使用

在这个实验中如何教你改变字体的大小

具体程序如下:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 套用樣式1的TextView -->
<TextView

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="@string/str_text_view1"
/>
<!-- 套用樣式2的TextView -->
<TextView

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="@string/str_text_view2"
/>
</LinearLayout>

在values先新建一个style.xml

具体如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DavidStyleText1">
<item name="android:textSize">18sp</item> //大小
<item name="android:textColor">#EC9237</item> //颜色
</style>

//设置字体的大小和text的颜色。
<style name="DavidStyleText2">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#FF7F7C</item>
<item name="android:fromAlpha">0.0</item>
<item name="android:toAlpha">0.0</item>
</style>
</resources>

3.14控制不同文字字体——Typeface对象使用

除了文字颜色之外,与文字对象息息相关的文字大小及字体。

TextView对象里有很多与字形相关的方法,如使用setTextSize来改变文字大小和、setTypeface来指定使用字体,设置两个按钮,其一控制字体,其二控制大小,需要解说的是通过外部资源asserts,引用外部的字体文件(True Type Font),在通过Typeface类的creatFromAsset方法,让TextView可通过setTypeface来改变字体。

具体程序如下

/*必须引用graphics.Typeface才能用creatFromAsset().*/
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class ex3_14 extends Activity {

private TextView mText;
private Button sizeButton;
private Button fontButton;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


mText=(TextView)findViewById(R.id.mytextview);
sizeButton=(Button) findViewById(R.id.sizebutton);
fontButton=(Button) findViewById(R.id.fontbutton);
/*设置onClickListener与按钮对象连接*/
sizeButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
/*使用setTextSize()改变字体的大小 */
mText.setTextSize(20);
}
}
);
fontButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
/*必须在assets创建一个fonts子文件夹
* 并放入要使用的字体文件(.ttf)
* 并提供相对路劲creatFromAsset()来创建Typeface对象*/
mText.setTypeface
(Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"));
}
}
); 关键代码


}
}

今天感觉学到不少东西,感觉快过年,我得抓紧时间学习才行,不然的话,到过年都没有时间搞这个方面了。加油呀。现在喜欢上Android了。

    
[3] TextView刷进与刷出的效果
    来源: 互联网  发布时间: 2014-02-18
TextView刷入与刷出的效果
//// attrs.xml    自定义属性

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <declare-styleable name="SlidingText">

       <attr name="animationDuration" format="integer" />

    </declare-styleable>

</resources>



///// main.xml  

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="fill_parent"

    xmlns:slidingtext="http://schemas.android.com/apk/res/com.testSildingTextView"

    android:layout_height="fill_parent">





<com.testSildingTextView.SlidingTextView

       android:id="@+id/sliding_textview" android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       slidingtext:animationDuration="500"

       android:layout_gravity="center">

       <TextView android:layout_width="fill_parent" android:gravity="center_horizontal"

           android:layout_height="wrap_content" android:text="sssssss" />

    </com.testSildingTextView.SlidingTextView>



</LinearLayout>



首先自定义名称xmlns:slidingtext=http://schemas.android.com/apk/res/com.testSildingTextView

这里使用了自定义的名称

slidingtext:animationDuration="500"





///// SlidingTextView

private String[] showTexts = new String[] { "ssssss", "aaaaaa", "bbbbbb" };    // 用来记录显示哪个字符串    private int count = 0;    private int mDuration;    private TextView text;    private int textWidth = 200;//获取自定义变量public SlidingTextView(Context context, AttributeSet attrs) {        super(context, attrs);        TypedArray a = context.obtainStyledAttributes(attrs,                R.styleable.SlidingText);        mDuration = a                .getInteger(R.styleable.SlidingText_animationDuration, 750);    }//设置要显示的字符串    public void setShowText(String[] showTexts){        this.showTexts=showTexts;    }    // 回调函数 界面初始化快结束时调用protected void onFinishInflate() {        super.onFinishInflate();        text = (TextView) this.getChildAt(0);        mHandler.postDelayed(appear, 1000);    }private Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            // 1为出现,2为隐藏            switch (msg.arg1) {            case 1:                doAnimationOpen();                break;            case 2:                doAnimationClose();                break;            }        }    };public void doAnimationOpen() {        post(appear);    }    // 出现的效果    Runnable appear = new Runnable() {        public void run() {            TranslateAnimation animation;            int fromXDelta = 0, toXDelta = 0, fromYDelta = 0, toYDelta = 0;            int calculatedDuration = 0;            fromXDelta = textWidth;            toXDelta = 0;            calculatedDuration = mDuration * Math.abs(toXDelta - fromXDelta)                    / textWidth;            animation = new TranslateAnimation(fromXDelta, toXDelta,                    fromYDelta, toYDelta);            animation.setDuration(calculatedDuration);            animation.setAnimationListener(new AnimationListener() {                @Override                public void onAnimationStart(Animation animation) {                    if(showTexts.length!=0){                        count = (count + 1) % showTexts.length;                        text.setText(showTexts[count]);                    }                    text.setVisibility(VISIBLE);                }                @Override                public void onAnimationRepeat(Animation animation) {                }                @Override                public void onAnimationEnd(Animation animation) {                    mHandler.postDelayed(hide, 2500);                }            });            startAnimation(animation);        }    };    public void doAnimationClose() {        post(hide);    }    // 隐藏的效果    Runnable hide = new Runnable() {        public void run() {            TranslateAnimation animation;            int fromXDelta = 0, toXDelta = 0, fromYDelta = 0, toYDelta = 0;            int calculatedDuration = 0;            toXDelta = -1 * textWidth;            calculatedDuration = mDuration * Math.abs(toXDelta - fromXDelta)                    / textWidth;            animation = new TranslateAnimation(fromXDelta, toXDelta,                    fromYDelta, toYDelta);            animation.setDuration(calculatedDuration);            animation.setAnimationListener(new AnimationListener() {                @Override                public void onAnimationStart(Animation animation) {                }                @Override                public void onAnimationRepeat(Animation animation) {                }                //动画结束时  设置textview的状态                @Override                public void onAnimationEnd(Animation animation) {                    mHandler.postDelayed(appear, 500);                    text.setVisibility(INVISIBLE);                }            });            startAnimation(animation);        }    };
这个动画效果主要是每次开出一条线程来运行的,首次运行后等2点5秒,就将textview以动画效果向左运行,等0.5秒后从右边出现,动画结束后隐藏,不断循

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
oracle iis7站长之家
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3