欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android控件動(dòng)態(tài)用法實(shí)例分析

 更新時(shí)間:2015年10月12日 14:50:06   作者:無鴦  
這篇文章主要介紹了Android控件動(dòng)態(tài)用法,以實(shí)例形式較為詳細(xì)的分析了Android控件動(dòng)態(tài)的具體編程實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Android控件動(dòng)態(tài)用法。分享給大家供大家參考。具體如下:

通常android里的界面布局都是在XML里設(shè)定好的
也就是說 在程序中,不能更改界面上的元素?cái)?shù)量等,
比如聊天會(huì)話界面

當(dāng)有人發(fā)言就要增加一個(gè)TextView,這就是動(dòng)態(tài)增加控件,這就不能在XML里事先布局了!

不過還好,ANDROID使用控件也不是只有XML這一種方式

以下代碼就是動(dòng)態(tài)生產(chǎn)控件的JAVA程序

package com.fetion.android;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Layout;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.KeyEvent;
import android.view.ViewGroup.LayoutParams;
import android.widget.*;
import java.util.Calendar;
/**
 * 測試動(dòng)態(tài)使用android控件
 * @author gaolei by 20090827
 */
public class fetion2009 extends Activity
{
  /** Called when the activity is first created. */
  ProgressBar pb; //進(jìn)度條控件,但拿出來是為了可控,動(dòng)態(tài)改變其進(jìn)度
  //聊天對話的底色是間隔的
  private static final int[] bg = { Color.WHITE, Color.GRAY };
  private static int bgIndex=0;  //聊天對話的底色 當(dāng)前色應(yīng)該是bg中的索引值
  //以下 布局參數(shù) 標(biāo)識(shí)當(dāng)前控件的寬高情況FILL_PARENT=占據(jù)全部父控件,WRAP_CONTENT=僅包裹控件中的內(nèi)容//還有其他作用比如左右邊距,這里我們使用默認(rèn)的
  private LinearLayout.LayoutParams LP_FF = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
  private LinearLayout.LayoutParams LP_FW = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
  private LinearLayout.LayoutParams LP_WW = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  @Override
  public void onCreate( Bundle savedInstanceState )
  {
    super.onCreate( savedInstanceState );
    //聊天對白窗口需要滾動(dòng)
    ScrollView sv  = new ScrollView(this);
    sv.setLayoutParams( LP_FF );
    LinearLayout layout = new LinearLayout(this); //線性布局方式
    layout.setOrientation( LinearLayout.VERTICAL ); //控件對其方式為垂直排列
    layout.setBackgroundColor( 0xff00ffff ); //設(shè)置布局板的一個(gè)特殊顏色,這可以檢驗(yàn)我們會(huì)話時(shí)候是否有地方顏色不正確!
    //豐富聊天頁面,也順帶測試頁面滾動(dòng)效果,增加了10個(gè)重復(fù)的對話內(nèi)容
    for( int i=0; i<10; i++ )
    {
      setSendMsg( layout, this, getCurrColor(), i+"聊天內(nèi)容在這里。。" );
    }
    //發(fā)送文件效果1,圓環(huán)進(jìn)度條,也是ProgressBar默認(rèn)的效果
    setSendFile( layout, this, getCurrColor(),"我的照片.jpg");
    //發(fā)送文件效果2,矩行進(jìn)度條,也是ProgressBar的風(fēng)格設(shè)置成style="?android:attr/progressBarStyleHorizontal"的效果
    setSendFile2( layout, this, getCurrColor(),"我的照片.jpg");
    for( int i=0; i<10; i++ )
    {
      setSendMsg( layout, this, getCurrColor(), i+"聊天內(nèi)容在這里。。" );
    }
    sv.addView( layout );  //把線性布局加入到ScrollView中
    setContentView(sv);   //設(shè)置當(dāng)前的頁面為ScrollView
  }
  /**
   * 獲取當(dāng)前聊天對白的底色值
   * @return 當(dāng)前聊天對白的底色值
   */
  private int getCurrColor()
  {
    return bg[ (++bgIndex)% bg.length ];
  }
  /**
   * 動(dòng)態(tài)增加一個(gè)聊天內(nèi)容
   * 這里為了簡化編程把 某人說 和 內(nèi)容放到一個(gè)TextView中,可以根據(jù)設(shè)計(jì)文檔拆成2個(gè)TextView分別顯示,設(shè)置字體等
   * @param layout  TextView控件欲添加到的目標(biāo)layout
   * @param context  構(gòu)建View控件的必須參數(shù) 既View控件的環(huán)境
   * @param bgColur  TextView控件的背景色
   * @param MSG    TextView控件要現(xiàn)實(shí)的文本內(nèi)容
   */
  private void setSendMsg(LinearLayout layout, Context context, int bgColur, String MSG)
  {
    TextView tv = new TextView(context);  //普通聊天對話
    //獲取一個(gè)全局的日歷實(shí)例,用于獲取當(dāng)前系統(tǒng)時(shí)間并格式化成小時(shí):分鐘形式,僅用于測試,這里的時(shí)間應(yīng)該是由其他程序提供
    tv.setText( "某人 說: ["+DateFormat.format( "kk:mm" , Calendar.getInstance())+"]\n"+MSG );
    tv.setBackgroundColor( bgColur );
    layout.addView( tv );
  }
  /**
   * 動(dòng)態(tài)增加一個(gè)發(fā)送文件的會(huì)話條目
   * 這里因?yàn)槭前l(fā)送進(jìn)度條與取消按鈕的水平對其方式,所以需要增加一個(gè)LinearLayout
   * @param layout  欲添加到的目標(biāo)layout
   * @param context  構(gòu)建View控件的必須參數(shù) 既View控件的環(huán)境
   * @param bgColur  控件的背景色
   * @param MSG    控件要現(xiàn)實(shí)的文本內(nèi)容
   */
  private void setSendFile(LinearLayout layout, Context context, int bgColur, String fileName)
  {
    //把 某人說 [時(shí)間]
    //要發(fā)送的文件信息 全都交給 setSendMsg 繪制吧!
    setSendMsg( layout, context, bgColur, "正在發(fā)送"+fileName );
    //水平排列2個(gè)控件需要一個(gè)LinearLayout,排列方式默認(rèn)的就是水平排列
    LinearLayout myLayout = new LinearLayout(context);
    //這個(gè)LinearLayout控件的背景色需要設(shè)置,要不就會(huì)顯示出主LinearLayout的顏色了,即0xff00ffff
    myLayout.setBackgroundColor( bgColur );
    //動(dòng)態(tài)創(chuàng)建一個(gè)ProgressBar,以默認(rèn)屬性加入到myLayout中
    ProgressBar pb = new ProgressBar(context);
    pb.setLayoutParams( LP_WW );
    myLayout.addView( pb );
    //動(dòng)態(tài)創(chuàng)建一個(gè)Button,以默認(rèn)屬性加入到myLayout中
    Button bt = new Button(context);
    bt.setLayoutParams( LP_WW );
    bt.setText( "取消" );
    myLayout.addView( bt );
    //將水平布局的LinearLayout及其內(nèi)如所有控件添加到主layout中
    layout.addView( myLayout );
  }
  /**
   * 動(dòng)態(tài)增加一個(gè)發(fā)送文件的會(huì)話條目
   * 但為了保障ProgressBar和Button的底色符合設(shè)計(jì)要求,增加了一個(gè)LinearLayout,并設(shè)置其背景色
   * @param layout  欲添加到的目標(biāo)layout
   * @param context  構(gòu)建View控件的必須參數(shù) 既View控件的環(huán)境
   * @param bgColur  控件的背景色
   * @param MSG    控件要現(xiàn)實(shí)的文本內(nèi)容
   */
  private void setSendFile2(LinearLayout layout, Context context, int bgColur, String fileName)
  {
    setSendMsg( layout, context, bgColur, "正在發(fā)送"+fileName );
    LinearLayout myLayout = new LinearLayout(context);
    myLayout.setBackgroundColor( bgColur );
    myLayout.setOrientation( LinearLayout.VERTICAL );//控件對其方式為垂直,默認(rèn)為水平
    //ProgressBar的默認(rèn)風(fēng)格是圓環(huán)型,這里需要設(shè)置她的風(fēng)格為Horizontal(水平線)
    pb = new ProgressBar(context,null,android.R.attr.progressBarStyleHorizontal);
    pb.setLayoutParams( LP_FW );
    pb.setProgress( 45 ); //設(shè)置第1進(jìn)度為45
    pb.setSecondaryProgress( 0 ); //這里我們不需要第2進(jìn)度,所以為0
    myLayout.addView( pb );
    Button bt = new Button(context);
    bt.setLayoutParams( LP_WW );
    bt.setText( "取消" );
    myLayout.addView( bt );
    layout.addView( myLayout );
  }
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event)
  {
    Log.d("onKeyDown:", " keyCode=" + keyCode + " KeyEvent=" + event);
    switch (keyCode)
    {
      case KeyEvent.KEYCODE_DPAD_UP:
      break;
      case KeyEvent.KEYCODE_DPAD_DOWN:
      break;
      case KeyEvent.KEYCODE_DPAD_LEFT:
        //右左按鍵可以控制第一進(jìn)度的增減
        pb.setProgress( pb.getProgress()-5 );
      break;
      case KeyEvent.KEYCODE_DPAD_RIGHT:
        pb.setProgress( pb.getProgress()+5 );
      break;
      case KeyEvent.KEYCODE_DPAD_CENTER:
      break;
      case KeyEvent.KEYCODE_0:
      break;
    }
    return super.onKeyDown(keyCode, event);
  }
}

希望本文所述對大家的Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android仿活動(dòng)時(shí)分秒倒計(jì)時(shí)效果

    Android仿活動(dòng)時(shí)分秒倒計(jì)時(shí)效果

    這篇文章主要為大家詳細(xì)介紹了Android仿活動(dòng)時(shí)分秒倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Android App中使用AudioManager類來編寫音頻播放器

    Android App中使用AudioManager類來編寫音頻播放器

    這篇文章主要介紹了Android App中使用AudioManager類來編寫音樂播放器的方法,文中舉了一個(gè)簡單的例子實(shí)現(xiàn)了基礎(chǔ)的播放暫停和靜音等功能,需要的朋友可以參考下
    2016-04-04
  • Ubuntu中為Android增加硬件抽象層(HAL)模塊訪問Linux內(nèi)核驅(qū)動(dòng)程序

    Ubuntu中為Android增加硬件抽象層(HAL)模塊訪問Linux內(nèi)核驅(qū)動(dòng)程序

    本文主要介紹在Ubuntu上為Android HAL模塊訪問Linux內(nèi)核驅(qū)動(dòng)程序,這里給大家提供方法和一個(gè)小的測試程序代碼,以及常遇到的問題和解決方法,有需要的小伙伴可以參考下
    2016-08-08
  • kotlin使用Dagger2的過程全紀(jì)錄

    kotlin使用Dagger2的過程全紀(jì)錄

    Dagger2是一款基于Java注解,在編譯階段完成依賴注入的開源庫,主要用于模塊間解耦,方便進(jìn)行測試。下面這篇文章主要給大家介紹了關(guān)于kotlin使用Dagger2的過程的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Android中監(jiān)聽軟鍵盤輸入的使用方式

    Android中監(jiān)聽軟鍵盤輸入的使用方式

    今天我們來討論一下Android中監(jiān)聽軟鍵盤輸入的使用方式,它允許用戶輸入文本和執(zhí)行其他操作,但是,有時(shí)候我們需要在用戶輸入文本時(shí)進(jìn)行一些特殊的處理,比如實(shí)時(shí)驗(yàn)證輸入內(nèi)容、限制輸入字符的類型等,因此,了解如何監(jiān)聽軟鍵盤輸入是非常重要的
    2023-10-10
  • 深入淺析Android JSON解析

    深入淺析Android JSON解析

    android中網(wǎng)絡(luò)數(shù)據(jù)傳輸是經(jīng)常被用到的,通常我們使用xml或者json,而json更加輕量,便捷,我們使用的更多。我自己在項(xiàng)目中使用很多,今天就說說android中怎么去解析JSON,幫助自己總結(jié)內(nèi)容,同時(shí)幫助別人少走彎路
    2015-12-12
  • Kotlin中協(xié)變、逆變和不變示例詳解

    Kotlin中協(xié)變、逆變和不變示例詳解

    這篇文章主要給大家介紹了關(guān)于Kotlin中協(xié)變、逆變和不變的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Android音頻開發(fā)之音頻采集的實(shí)現(xiàn)示例

    Android音頻開發(fā)之音頻采集的實(shí)現(xiàn)示例

    本篇文章主要介紹了Android音頻開發(fā)之音頻采集的實(shí)現(xiàn)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • ViewPager2滑動(dòng)沖突解決方案

    ViewPager2滑動(dòng)沖突解決方案

    這篇文章主要介紹了ViewPager2滑動(dòng)沖突解決方案,幫助大家更好的進(jìn)行Android開發(fā),感興趣的朋友可以了解下
    2020-12-12
  • android中圓角圖像生成方法

    android中圓角圖像生成方法

    這篇文章主要介紹了android中圓角圖像生成方法,涉及Android處理圓角圖像的技巧,需要的朋友可以參考下
    2015-04-04

最新評論