Android入门实例二 Android中图片浏览的实现

来源:互联网 发布:mysql主键外键 编辑:程序博客网 时间:2024/05/16 15:39

Android中图片浏览的实现

1.简介

本节主要通过使用ImageView来显示图片,使用ImageButton和自定义xml来实现动态的按钮点击效果,以及通过返回键退出程序的实现

2.源码&笔记

2.1通过【File--->New-->Other-->Android-->Android Application Project】新建一个Android project,起个名字【ImageView

 

2.2添加所有用到的图片到【res-->drawable

 

2.3ImageButton设置切换动画:

2.3.1在【res-->drawable(有几个不同的drawable,任选其一),【右击】-->New-->Other-->Android XML File-->Next-->在【File】里面起个名字selectorleft,注意名字不能有大写-->finish,添加代码如下:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 单击按钮时,ImageButton上显示的图片 -->

    <item android:drawable="@drawable/button_l_press" android:state_pressed="true"></item>

    <!-- 松开按钮时,ImageButton上显示的图片 -->

    <item android:drawable="@drawable/button_l_off" android:state_pressed="false"></item>

</selector>

 

2.3.2在【res-->drawable(有几个不同的drawable,任选其一),【右击】-->New-->Other-->Android XML File-->Next-->在【File】里面起个名字selectorright,注意名字不能有大写-->finish,添加代码如下:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 单击按钮时,ImageButton上显示的图片 -->

    <item android:drawable="@drawable/button_r_press" android:state_pressed="true"></item>

    <!-- 松开按钮时,ImageButton上显示的图片 -->

    <item android:drawable="@drawable/button_r_off" android:state_pressed="false"></item>

</selector>

 2.4 在布局文件【res-->layout-->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.tonghua.imageview.MainActivity" >

 

    <TextView

        android:id="@+id/showView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerHorizontal="true"

        android:layout_gravity="center_horizontal"

        android:text="图片浏览器" />

 

    <ImageView

        android:id="@+id/imageView1"

        android:layout_width="228dp"

        android:layout_height="326dp"

        android:layout_below="@+id/textView1"

        android:layout_gravity="center_horizontal"

        android:scaleType="centerCrop"

        android:src="@drawable/girl1" />

 

    <LinearLayout

        android:id="@+id/linear1"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_below="@+id/imageView1"

        android:layout_marginTop="25dip"

        android:orientation="horizontal" >

 

        <ImageButton

            android:id="@+id/preBtn"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_weight="1"

            android:src="@drawable/selectorleft" />

 

        <ImageButton

            android:id="@+id/nextBtn"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_weight="1"

            android:src="@drawable/selectorright" />

 

    </LinearLayout>

 

</LinearLayout>

2.5在【src-->com.tonghua.imageview-->MainActivity.java】里面代码如下:

package com.tonghua.imageview;

import com.example.imageview.R;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageButton;

import android.widget.ImageView;

import android.widget.Toast;

 

public class MainActivity extends ActionBarActivity {

private ImageButton preBtn, nextBtn;

private ImageView imageView;

private int currImgId = 0;// 记录当前ImageView中显示图片的ID

private int imgID[] = { R.drawable.girl, R.drawable.girl1,

R.drawable.girl2, R.drawable.girl3, R.drawable.girl4,

R.drawable.girl5, R.drawable.girl6 };

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

imageView = (ImageView) findViewById(R.id.imageView1);

preBtn = (ImageButton) findViewById(R.id.preBtn);

nextBtn = (ImageButton) findViewById(R.id.nextBtn);

preBtn.setOnClickListener(new ButtonListener());

nextBtn.setOnClickListener(new ButtonListener());

}

 

class ButtonListener implements OnClickListener {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if (v == preBtn) {// 如果点击的是“上一张”按钮

currImgId = (currImgId - 1 + imgID.length) % imgID.length;

// 计算图片在ID数组中的下标

imageView.setImageResource(imgID[currImgId]);

// 设置ImageView显示当前下标的图片

} else if (v == nextBtn) {

currImgId = (currImgId + 1 + imgID.length) % imgID.length;

// 计算图片在ID数组中的下标

imageView.setImageResource(imgID[currImgId]);

// 设置ImageView显示当前下标的图片

}

}

}

 

// 下面是连按返回键退出程序

private long exitTime = 0;

// 使用exitTime记录点击返回键的时间

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// 键盘按键的点击事件

if (keyCode == KeyEvent.KEYCODE_BACK

&& event.getAction() == KeyEvent.ACTION_DOWN) {

// 动作为按下,对象是返回键

if ((System.currentTimeMillis() - exitTime) > 2000) {

// 这次点击的时间与上次点击的时间的差值大于2

Toast.makeText(getApplicationContext(), "再按一次退出程序",

Toast.LENGTH_SHORT).show();

// 提示“再按一次退出程序”

exitTime = System.currentTimeMillis();

// 刷新时间

} else {

// 如果联系两次点击的时间差小于2秒,退出程序

finish();

System.exit(0);

}

return true;

}

return super.onKeyDown(keyCode, event);

}

}

2.6 调试--正常

 

 

3.可能会遇到的问题-----图片资源的命名问题

3.1包含大写字母

3.2包含defaultcontinueJava的保留字符

3.3 以下划线(“_”)开头

3.4以数字加下划线(“[0-9]_”)开头

出现以上4种情况都会出错,你错了吗?

 

0 0
原创粉丝点击