原创 Android第二站 TextView的众多使用

2011-1-26 00:07 4449 7 7 分类: 智能手机

终于不在纠结于eclipse了,原本随便编译都有错,相当郁闷,本来电脑就慢了,原来是没有选好平台的原因,现在的话基本上是能熟练的掌握这个软件,于是乎,进度也加大不少。

 

这几天我也看了Java的书,也知道不少关于Java面向对象方面的知识,如java的程序结构,类的构成和使用,包及访问控制权限,import语句的使用(个人感觉那本学java的书太给力了,通俗易懂,易上手)。import语句常用于类的导入(import 包名称.子包名称.类名称;import 包名称.子包名称;)包的用处主要是用于程序打包,实例化本包对象。

 

虽然我本人不是很聪明,但是我感觉只要我有恒心,没有成功不了的事,相信时间能证明一切。刚刚入门,所以现在明白了,来来去去都是修改那几个文件,就是主程序java ,布局程序main.xml,字符串和其他资源的设置strings.xml和color.xml。Android编程时入门简单,想精难呀。

 

废话少说,直奔主题:

3.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
  style="@style/DavidStyleText1" 
  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
 
style="@style/DavidStyleText2"
  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>

 

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

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条