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

來源:互聯網
上載者:User

標籤:top   sch   end   預設   name   apk   adb   ++   資源   


                               

工程檔案夾:

 

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

《黑幕下的人》

  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小例子:使用反射機制來讀取圖片製作一個圖片瀏覽器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.