亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【android基礎(chǔ)學(xué)習(xí)之六】——常用效果1

系統(tǒng) 4931 0

聲明:學(xué)習(xí)的書籍《Android應(yīng)用開發(fā)揭秘》,這里記錄學(xué)習(xí)該書籍的日志,引用的相關(guān)代碼與總結(jié)描述,沒有商業(yè)的用途,完全是自我學(xué)習(xí)的一個(gè)記錄,剛剛學(xué)習(xí)不可避免會(huì)出現(xiàn)很多問題,若是有錯(cuò)誤還請(qǐng)大家多多批評(píng)。

繼續(xù)學(xué)習(xí)《android應(yīng)用開發(fā)揭秘》這本書,這里把基礎(chǔ)控件的學(xué)習(xí)進(jìn)行了分類,下面兩篇博客主要是一些常用的效果

一、 拖動(dòng)效果(Gallery)

拖動(dòng)效果是現(xiàn)在智能手機(jī)的一個(gè)不可缺少的功能,Android平臺(tái)中實(shí)現(xiàn)拖動(dòng)效果,主要是使用了Gallery控件,Gallery英文是畫廊的意思,顧名思義存放這顯示的圖片,存放圖片資源容器是繼承自BaseAdapter類的派生類。當(dāng)然我們也可以通過setOnItemClickListener監(jiān)聽其事件。

【注意】Gallery 組件一般用于顯示圖像列表,因此也可稱相冊(cè)組件 Gallery 與GridView 的區(qū)別是Gallery只能水平顯示一行,而且支持水平滑動(dòng)效果。也就是說,單擊、選中或拖動(dòng)Gallery 中的圖像,Gallery中的圖像列表會(huì)根據(jù)不同的情況向左或右移動(dòng),直到顯示最后一個(gè)圖像為止.

實(shí)例分析:基于上述介紹,把要顯示的圖片資源索引存在一個(gè)int類型數(shù)組中,并且要顯示哪個(gè)圖片,通過setImageResource方法來設(shè)置ImageView要顯示的圖片。

關(guān)鍵源碼:

main.xml布局文件:

    <?xml version="1.0" encoding="utf-8"?>
<Gallery 
xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/Gallery01"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
/>

  

注意,以下ImageAdapter類繼承自BaseAdapter,并重寫其方法

    public class ImageAdapter extends BaseAdapter {
	private Context		mContext;		// 定義Context
	// 定義整型數(shù)組 即圖片源
	private Integer[]	mImageIds = { 						
			R.drawable.img1, 
			R.drawable.img2, 
			R.drawable.img3, 
			R.drawable.img4, 
			R.drawable.img5, 
			R.drawable.img6, 
			R.drawable.img7,
			R.drawable.img8,		
	};
	public ImageAdapter(Context c) {
		this.mContext = c;
	}
	//獲取圖片個(gè)數(shù)
	public int getCount() {
		return mImageIds.length;
	}
	//獲取圖片在圖庫的位置
	public Object getItem(int position) {
		return position;
	}
	// 獲取圖片ID
	public long getItemId(int position) {
		return position;
	}
	public View getView(int position, View convertView, ViewGroup parent{
		ImageView imageview = new ImageView(mContext);
		//給ImageView設(shè)置資源
		imageview.setImageResource(mImageIds[position]);
		//設(shè)置布局圖片120x120顯示
		imageview.setLayoutParams(new Gallery.LayoutParams(120,120));
		//設(shè)置顯示比例類型
		imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
		return imageview;
	}
}

  

而實(shí)際Activity01中只要把a(bǔ)dapter付給Gallery對(duì)象,并設(shè)置監(jiān)聽事件即可“

    //獲得Gallery對(duì)象
Gallery g = (Gallery) this.findViewById(R.id.Gallery01);
//添加ImageAdapter給Gallery對(duì)象
g.setAdapter(new ImageAdapter(this));
//設(shè)置Gallery對(duì)象的監(jiān)聽事件
g.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(Examples_04_17Activity.this,"你選擇了"+(arg2+1)+" 號(hào)圖片", Toast.LENGTH_SHORT).show();}
});

  

實(shí)例效果:

【android基礎(chǔ)學(xué)習(xí)之六】——常用效果1

二、 切換圖片(ImageSwitcher)

該功能類似于很多圖片瀏覽器,上一張下一張圖片進(jìn)行切換,ImageSwitcher在實(shí)現(xiàn)該效果時(shí),需要設(shè)置一個(gè) ViewSwitcher.ViewFactory ,注意ViewSwitcher.ViewFactory是個(gè)接口,目的:在視圖轉(zhuǎn)換器(ViewSwitcher)中創(chuàng)建視圖。并通過makeView()方法來顯示圖片。

公共方法:public abstract View makeView ()

創(chuàng)建一個(gè)用于添加到視圖轉(zhuǎn)換器(ViewSwitcher)中的新視圖

關(guān)鍵源碼:

    private ImageSwitcher m_Switcher; //創(chuàng)建ImageSwitcher對(duì)象
	private static int index = 0; //索引
	private static final int BUTTON_DOWN_ID = 0x123456; //“下一頁”按鈕ID
	private static final int BUTTON_UP_ID	= 0x123457; //“上一頁”按鈕ID
private static final int SWITCHER_ID	= 0x123458; //ImageSwitcher對(duì)象的ID
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout main_view = new LinearLayout(this);
        m_Switcher = new ImageSwitcher(this); //創(chuàng)建ImageSwitcher對(duì)象
        main_view.addView(m_Switcher); //在線性布局中添加ImageSwitcher視圖
        m_Switcher.setId(SWITCHER_ID); //設(shè)置ImageSwitcher對(duì)象的ID
        m_Switcher.setFactory(this); //設(shè)置ImageSwitcher對(duì)象的數(shù)據(jù)源
        m_Switcher.setImageResource(imagelist[index]);
        
        setContentView(main_view); //設(shè)置顯示上面創(chuàng)建的線性布局

        Button next = new Button(this); //創(chuàng)建“下一張”按鈕
        next.setId(BUTTON_DOWN_ID);
        next.setText("下一張");
        next.setOnClickListener(this);
        LinearLayout.LayoutParams param = new  LinearLayout.LayoutParams(100, 100);
        main_view.addView(next, param);
    
		Button pre = new Button(this); //創(chuàng)建“上一張”按鈕
		pre.setId(BUTTON_UP_ID);
		pre.setText("上一張");
		pre.setOnClickListener(this);
		main_view.addView(pre, param);
    }
//事件監(jiān)聽、處理
	public void onClick(View v) {
		switch(v.getId()){
			case BUTTON_DOWN_ID: //下一頁
			index++;
			if (index >= imagelist.length){
				index = 0;
			}
			//ImageSwitcher對(duì)象資源索引
			m_Switcher.setImageResource(imagelist[index]);
			break;
		    case BUTTON_UP_ID: //上一頁
			index--;
			if (index < 0){
				index = imagelist.length - 1;
			}
			//ImageSwitcher對(duì)象資源索引
			m_Switcher.setImageResource(imagelist[index]);
			break;
		default:
			break;
		}
	}
	@Override
	public View makeView() {
		return new ImageView(this); //將所有圖片通過ImageView來顯示
	}

  

【擴(kuò)展點(diǎn)】ViewSwitcher

一、結(jié)構(gòu)

public class ViewSwitcher extends ViewAnimator

Java .lang.Object

android.view.View

android.view.ViewGroup

android.widget.FrameLayout

android.widget.ViewAnimator

android.widget.ViewSwitcher

已知直接子類:ImageSwitcher, TextSwitcher

  二、概述

     在兩個(gè)視圖間轉(zhuǎn)換時(shí)顯示動(dòng)畫,有一個(gè)可以創(chuàng)建這些視圖的工廠類。你可以用工廠來創(chuàng)建這些視圖,也可以自己創(chuàng)建。一個(gè)ViewSwitcher只允許包含兩個(gè)子視圖,且一次僅能顯示一個(gè)。

  (譯者注:與ViewFlipper類相似,但該類不常用,常用其兩個(gè)子類ImageSwitcher:轉(zhuǎn)換圖片時(shí)增加動(dòng)畫效果; TextSwitcher: 轉(zhuǎn)換文字時(shí)增加動(dòng)畫效果; 其實(shí)例見apidemos中ImageSwitcher實(shí)例和TextSwitcher實(shí)例)

  三、內(nèi)部類

    interface ViewSwitcher.ViewFactory

    在一個(gè)ViewSwitcher里創(chuàng)建視圖

…………….

五、公共方法

public void setFactory (ViewSwitcher.ViewFactory factory)

  設(shè)置用來生成將在視圖轉(zhuǎn)換器中切換的兩個(gè)視圖的工廠。也可以調(diào)用兩次 addView(android.view.View, int, android.view.ViewGroup.LayoutParams)來替代使用工廠的方法。

參數(shù): factory 用來生成轉(zhuǎn)換器內(nèi)容的視圖工廠

引用自: http://dev.10086.cn/cmdn/wiki/index.php?doc-view-4764.html

實(shí)例效果:

【android基礎(chǔ)學(xué)習(xí)之六】——常用效果1

三、網(wǎng)格視圖(GridVIew)

網(wǎng)格視圖的排列方式與矩陣類似,它所需要顯示元素同樣適用BaseAdapter來實(shí)現(xiàn),適用方法,類似于Gallery控件

關(guān)鍵代碼:

    //取得GridView對(duì)象
GridView gridview = (GridView) this.findViewById(R.id.gridview);
//添加元素給gridview
gridview.setAdapter(new ImageAdapter(this));
gridview.setBackgroundResource(R.drawable.bg0);
//事件監(jiān)聽
gridview.setOnItemClickListener(new OnItemClickListener() {
	@Override
	public void onItemClick(AdapterView<?> parent, View v, int position, long id){
		Toast.makeText(Activity01.this, "你選擇了" + (position + 1) + " 號(hào)圖片", Toast.LENGTH_SHORT).show();
	}
});

  

四、卷軸視圖(ScrollView)

卷軸視圖主要用于,一頁數(shù)據(jù)顯示不開后,需要滾動(dòng)來顯示的視圖。

實(shí)例分析:ScrollView定義個(gè)線性布局,線性布局中一個(gè)TextView以及一個(gè)Button,每點(diǎn)擊一次按鈕就增加一個(gè)線性布局。

關(guān)鍵源碼:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
android:scrollbars="none" >
...... 
</ScrollView>
  

在按鈕點(diǎn)擊事件里:

    ......  
//改變默認(rèn)焦點(diǎn)切換  
buttonView.setOnKeyListener(mNewButtonKeyListener); 
//投遞一個(gè)消息進(jìn)行滾動(dòng)   
mHandler.post(mScrollToBottom);  

private Runnable mScrollToBottom = new Runnable() {   
        @Override  
        public void run(){   
            int off = mLayout.getMeasuredHeight() - mScrollView.getHeight();   
            if (off > 0) {   
                mScrollView.scrollTo(0, off);//設(shè)置當(dāng)前視圖滾動(dòng)到的位置
            }                          
        }   
    };   

  

今天學(xué)習(xí)到P101頁

【android基礎(chǔ)學(xué)習(xí)之六】——常用效果1


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产精品乱 | 成人午夜啪啪免费网站 | 天天插天天干天天操 | 99视频精品全部 在线 | 国产成+人+亚洲+欧美综合 | 日日夜夜精品 | 大学生一级黄色片 | 玖玖精品视频 | 欧美成人三级视频 | 九九亚洲综合精品自拍 | 国产精品久久久久久久久夜色 | 午夜国产精品色福利视频 | 色yeye成人免费视频 | 久久手机精品视频 | 青青久在线视频免费视频 | 欧美一区二区日韩一区二区 | 99爱在线精品视频免费观看9 | chinese国产人妖视频网站 | 亚洲综合色就色手机在线观看 | 亚洲综合狠狠99婷婷 | www.四虎影视 | 色婷婷在线观看视频 | 男人都懂www深夜免费网站 | 国产成人亚洲精品大帝 | 西西大胆实体啪啪色哟哟 | 美女羞羞视频网站 | 香蕉久久精品国产 | 亚洲视频在线一区 | 四虎影视www四虎免费 | 国产99视频精品草莓免视看 | 日本人69视频页码jlzz | 欧美韩国日本在线观看 | 99热久久这里只有精品首页 | 久久午夜影院 | 99资源| 久久美剧| 婷婷自拍 | 久草最新视频 | 日本色综合网 | 亚洲在线成人 | 九九视频在线免费观看 |