1. 程式人生 > >Android小例子:使用反射機制來讀取圖片制作一個圖片瀏覽器

Android小例子:使用反射機制來讀取圖片制作一個圖片瀏覽器

onclick lac protected blank pri tar lec 存儲 current

效果圖:
技術分享技術分享技術分享

                               

工程文件夾:
技術分享

  該例子可供於新手參考練習,如果有哪裏不對的地方,望指正>-<

《黑幕下的人》

  java代碼(MainActivity.java):
  

package com.example.imageswitchtest;

import java.lang.reflect.Field;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { private int[] imgs = null ;//存放圖片地址 private int currentImgIndex ; //當前圖片的標識號 private ImageView img = null ; private Button btnUp = null ; private
Button btnNext = null ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView)findViewById(R.id.img); btnUp = (Button)findViewById(R.id.btn_up); btnNext
= (Button)findViewById(R.id.btn_next); //初始化 init(); img.setImageResource(imgs[1]); currentImgIndex = 1; //為Button設置監聽事件 btnUp.setOnClickListener(new ButtonOnClick()); btnNext.setOnClickListener(new ButtonOnClick()); } /** * 使用反射機制讀取圖片資源,存儲到imgs數組裏面 */ public void init(){ Field[] fields = R.drawable.class.getFields();//反射讀取R.drawable imgs = new int[fields.length] ;//實例化imgs數組 for(int i = 0 ; i < fields.length ; i++){//遍歷fields try { //測試出現的問題是:imgs[0]值會默認為ic_launcher Log.d("field[" + i +"]", fields[i].getName() + "");//測試 if(fields[i].getName().indexOf("pic_")>-1){//過濾圖片,以pic_開頭的圖片名 imgs[i] = fields[i].getInt(R.drawable.class);//獲取該圖片存儲地址,儲存到imgs數組裏面 Log.d("field[" + i +"]", fields[i].getName() + "");//測試 } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } /** * * @author black sky * @使用 Button的單擊事件監聽處理類 */ private class ButtonOnClick implements View.OnClickListener{ @Override public void onClick(View view) { int id = view.getId();//獲取監聽到被單擊的組件ID switch(id){//識別ID case R.id.btn_up://上一張圖片按鈕被單擊執行的方法 if(currentImgIndex>1){//當前圖片標識號不是第一張 currentImgIndex--;//標識號-1 }else{//是第一張 //提示是第一張圖片 Toast.makeText(MainActivity.this, "這已經是第一張圖片!", Toast.LENGTH_SHORT).show(); } break; case R.id.btn_next://下一張圖片按鈕被單擊執行的方法 if(currentImgIndex<imgs.length-1){//當前圖片標識號不是最後一張 currentImgIndex++;//標識號+1 }else{//是最後一張 //提示是最後一張圖片 Toast.makeText(MainActivity.this, "這已經是最後一張圖片!", Toast.LENGTH_SHORT).show(); } break; } img.setImageResource(imgs[currentImgIndex]);//顯示圖片 } } }

  xml代碼(activity_main.xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.imageswitchtest.MainActivity" >

    <ImageView 
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">
        <Button 
            android:id="@+id/btn_up"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上一張圖片"/>
        <Button 
            android:id="@+id/btn_next"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一張圖片"/>
    </LinearLayout>

</LinearLayout>

  

  例子下載鏈接為:https://files.cnblogs.com/files/hmxin/ReadBookProject.zip

Android小例子:使用反射機制來讀取圖片制作一個圖片瀏覽器