a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 54|回复: 0

[综合辅导] Linux认证辅导Android图片浏览源码解读

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导Android图片浏览源码解读
! Q* ], Q/ U5 YAndroid图片浏览源码解读: W+ C0 S4 J9 ^9 D
Android手机操作系统的应用方式灵活,简单,深受广大编程爱好者的喜爱。尤其是它的开源代码,使得我们能够方便的得到自己想要的功能需求。今天我们就为大家带来了有关Android图片浏览的相关方法。2 I; @: R: S  ~- i
首先是Android图片浏览中layout xml:
, ]! @# p4 H: B8 k, L% K) {1.《 ?xml version=“1.0” encoding=“utf-8”?》
) ], Z% @0 n0 ^( @/ c2.《 RelativeLayout xmlns:android=“http://schemas.Android.com/apk/res/Android”% ]- U, p4 C1 o  p8 u% S* `
3.Android:layout_width=“fill_parent”
" @& ^, _! u) c4.Android:layout_height=“fill_parent”》
8 ~, P" c& b+ k8 Z( t1 ~$ b5.《 ImageSwitcher Android:id=“@+id/switcher”
5 J! p. L/ Z; f5 {( K6.Android:layout_width=“fill_parent”
0 z+ ?) u; D. W7.Android:layout_height=“fill_parent”9 w+ i8 g/ k: N$ i) A% y
8.Android:layout_alignParentTop=“true”
+ d+ g: k7 ?9 H4 g' t9.Android:layout_alignParentLeft=“true”1 u6 z% F! I  v/ f& y/ o; C. n" R
10./》1 C( `3 [; b. S
11.《 Gallery Android:id=“@+id/gallery”& [3 J6 F! G, L- R, I
12.Android:background=“#55000000”
3 Q# _/ o0 [) |) l13.Android:layout_width=“fill_parent”9 c: r; \& {. \1 \) q
14.Android:layout_height=“60dp”
5 r* e4 H7 f' q15.Android:layout_alignParentBottom=“true”" `, g, Z* o: J+ c& @9 p
16.Android:layout_alignParentLeft=“true”2 C! r1 S2 I8 ^0 c0 T' D& Y
17.Android:gravity=“center_vertical”
: n0 C: k% p7 [4 }4 j& P+ ]18.Android:spacing=“16dp”6 k! s! R7 ?/ [6 ?) K# _* o% y
19./》
, \  J9 C- X- t0 C7 _! f20.《 /RelativeLayout》% N2 U9 b4 f! Z" q
layout里面用到了前面所说的两个控件,ImageSwitcher用啦显示全图,Gallery用来显示缩略图。着重看看ImageSwitcher,在ImageSwitcher1中需要实现ViewSwitcher.ViewFactory这个接口,这个接口里有个方法makeView,这样就产生了用来显示图片的view. ImageSwitcher调用过程是这样的,首先要有一个Factory为它提供一个View,然后ImageSwitcher就可以初始化各种资源了。注意在使用一个ImageSwitcher之前,一定要调用setFactory方法,要不setImageResource这个方法会报空指针异常。
5 W" b  U: ]+ R& |# @4 b: t$ N* Q下面是Android图片浏览代码:7 P0 w- G0 o9 T- U  }0 |
1.package com.zx.imageswitcher;5 I% ~: X, j3 u* H; z
2.import Android.app.Activity;
2 p/ t' [6 \( r7 w2 t3.import Android.content.Context;+ }8 B1 {2 q; ]3 L: C/ r
4.import Android.os.Bundle;
9 z2 z8 d7 X6 r1 p: q+ L( {5.import Android.view.View;$ B! U* Y$ @) W1 @8 e
6.import Android.view.ViewGroup;
) f7 B4 J' z3 p( P- X7.import Android.view.animation.AnimationUtils;
4 e" A) ^/ z  B6 p2 J, |1 A) J8.import Android.widget.AdapterView;& ]7 k1 J+ D) G- L) u9 j
9.import Android.widget.BaseAdapter;# C' I$ X6 [3 @& G: X
10.import Android.widget.Gallery;- p, l8 ~+ ~2 Z# x0 P1 z) ]
11.import Android.widget.ImageSwitcher;1 H* J1 p( R! q" Z- ~
12.import Android.widget.ImageView;
: u  Q$ @. f2 x* S  b13.import Android.widget.ViewSwitcher;
  h3 {2 S+ [1 q/ a3 l) i6 h14.import Android.widget.Gallery.LayoutParams;8 [  O- c' ?9 h8 o: j! a8 n
15.public class ImageSwitcherTest extends Activity implements+ z% D5 z9 n' j. \* K* g

1 G8 u( K' u4 _3 R
4 e. r- g& Q  z+ n: l6 K9 t16.AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory{
9 P* q9 o$ v/ e' R9 p17.private ImageSwitcher mSwitcher;
1 y+ Z; U) Z4 V2 `* T18.private Integer[] mThumbIds = {7 r- H/ ^* @) M4 h4 k
19.R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,$ O7 \3 y5 F- p  t# L
20.R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,' Z( Z9 p  N! A: P6 {
21.R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
8 b, F) y5 i% \/ }1 r+ U22.R.drawable.sample_thumb_6, R.drawable.sample_thumb_7};
3 Y* b4 A6 [+ i  H* d; {23.private Integer[] mImageIds = {
/ V; b1 f- p+ n( C2 n( K& a24.R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2,
' I9 K6 s  s& l3 E/ F  J! J25.R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5,
) y) u; l  U5 X26.R.drawable.sample_6, R.drawable.sample_7};
- M" S- H3 n3 S# [27./** Called when the activity is first created. */$ j0 {2 v0 E5 z; a
28.@Override' c3 g5 j1 i9 w7 l% T3 k
29.public void onCreate(Bundle savedInstanceState) {
; Q" ~, \/ W" }0 {30.super.onCreate(savedInstanceState);
4 Y& b4 g6 c' R$ b/ m) C1 e31.setContentView(R.layout.main);
: s; P1 k1 e; S" V$ U32.mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
% }% E' D6 P" n  R/ J; N  e5 {33.mSwitcher.setFactory(this);1 D% Z1 e. w: h1 u
34.mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
0 p, B/ f* E8 V35.Android.R.anim.fade_in));
0 P3 k0 {  \  k2 O: I1 z: j/ ^6 q36.mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,/ ^1 J" q; N6 s+ J4 }6 r
37.Android.R.anim.fade_out));- c/ q. e2 B$ E! U: x8 a/ F
38.Gallery g = (Gallery) findViewById(R.id.gallery);3 a# K, Y/ A4 G% Z0 y! h
39.g.setAdapter(new ImageAdapter(this));
* M6 \( c: b$ y6 U# y, \# i8 ~& u40.g.setOnItemSelectedListener(this);7 `3 L* {5 o& J( V& k- B. ]
41.}6 B9 @$ F  s6 d5 G' Y
42./*
! g# @: F, @" M9 ^9 q7 s43.* override for ViewSwitcher.ViewFactory#makeView()! p+ D5 o3 U  _) i# \
44.*/
$ b7 q0 A. {# B' ?9 l45.public View makeView() {
2 @5 g, }& a- @+ n; u$ Y1 x$ Z46.ImageView i = new ImageView(this);  i8 l) z( a9 r/ m: Q: b. x
47.i.setBackgroundColor(0xFF000000);% k6 `6 v9 ]6 r% E$ {  N8 r; b2 v
48.i.setScaleType(ImageView.ScaleType.FIT_CENTER);  D8 H( g, F: D, U/ Q* o
49.i.setLayoutParams(new ImageSwitcher.LayoutParams2 q2 E  ^0 Q8 m+ Z+ L+ ?+ g
(LayoutParams.FILL_PARENT,& P  T3 l# ]1 B; T5 a
50.LayoutParams.FILL_PARENT));3 P  y: H' p  w8 v) q
51.return i;
( A' X" H2 ?0 j( k+ Q) m52.}
9 Q, j3 |+ z5 w' r9 ?53./*
' X8 R- n! b5 L$ b$ [3 q6 z: x4 ^54.* override for4 Z! T* o; v8 T2 Y( z* S- c' A
55.* AdapterView.OnItemSelectedListener#onItemSelected()/ N: ?- R# [3 }& ?6 C; \4 |
56.*/# B! j; |- U, W; f( y5 q6 E
57.public void onItemSelected(AdapterView parent,
3 @5 Q* e2 [5 Q" N' x8 c3 Z: H: BView v, int position, long id) {. t6 ]9 w, u: T; L% w) M/ Q$ N
58.mSwitcher.setImageResource(mImageIds[position]);
2 s( y8 q) _4 z) I59.}+ g5 f8 J$ A! o
60./*! p' h* {+ n3 v- G% S% I
  e. q. p9 N8 R6 `' V3 p; w7 \
% ~0 P+ T' k) q& [
61.* override for AdapterView.OnItemSelectedListener5 ?! t2 V0 ^3 x) z# p& ]
#onNothingSelected()* y. C& j2 Z8 f2 ]& t! n2 N; Q! g
62.*/
3 ^6 q% r# z$ i% f63.public void onNothingSelected(AdapterView《 ?》 arg0) {: x% {/ L6 ?5 @# L/ Z' ]
64.// TODO Auto-generated method stub8 ^5 i6 |  B; h$ G# q
65.}; U3 Y0 ^. S1 N  w, T( K+ n
66.public class ImageAdapter extends BaseAdapter {
/ M( y) ^2 H9 I4 c67.public ImageAdapter(Context c) {
+ {$ I9 a2 c% T3 g: X# v- `68.mContext = c;
$ m& |1 O  K6 D6 t69.}
7 V# N2 w6 h2 i% e# ?5 I' z0 h  T70.public int getCount() {
, _1 A; ~0 |9 c* b- y: X71.return mThumbIds.length;, w" B6 Q" }' i/ x+ r
72.}7 K8 e8 O  ~; Q4 x$ G
73.public Object getItem(int position) {
/ W& }+ f  _& g74.return position;
9 k6 L" z( j2 y* Q, n75.}0 B8 O5 }, S: B$ s( _
76.public long getItemId(int position) {1 K) V2 P2 b& F- B* O
77.return position;2 h2 k* f# R9 s3 W: e$ a% d8 K
78.}% Y# d6 X- I! s! _7 o; o+ Z8 k
79.public View getView(int position, View convertView,
- T9 A/ r0 a1 q" Q  ~+ BViewGroup parent) {! k9 q) w, y7 t$ G& n" x3 N
80.ImageView i = new ImageView(mContext);
& c! j6 p9 C, U. X; p0 a' U1 M! Y+ M, h81.i.setImageResource(mThumbIds[position]);
! q2 i& f1 U6 G& l4 U$ V+ ?$ U4 N82.i.setAdjustViewBounds(true);
) B3 z+ w) v0 z  h; F83.i.setLayoutParams(new Gallery.LayoutParams(+ a' u* k' M2 t& K
84.LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));( M% s5 x0 a+ i3 N9 `; ?
85.i.setBackgroundResource(R.drawable.picture_frame);6 w* ~" K6 {+ U+ [
86.return i;( N3 ~+ C$ }9 p$ |) ^
87.}
7 Y/ P7 U: y4 C8 A+ v88.private Context mContext;6 t+ _) M5 l! G, ]
89.}
4 |) |5 o0 `; ]! k+ o; V90.}
- @! w3 Z+ P( O- a% F$ t0 S' |从Android图片浏览的代码中看到还实现了AdapterView.OnItemSelectedListener,这样就需要重写onItemSelected()方法,然后在该方法中:mSwitcher.setImageResource(mImageIds[position]);这样就实现了图片在ImageSwitcher中的切换。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 12:19 , Processed in 0.241262 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表