得知Android小遴选程序第七头(他们定义对话框、Gallery、ImageSwitcher)

效果如下面的:

          

一共一个activity和两个xml。

******当我们须要使用的组件不在setContentView()设置的布局文件里,那我们就须要使用inflate()方法来获取。使用view对象调用findViewByid(),作者一开直接调用findViewByid。走了好多弯路,于是写此博文来帮助各位博友,知道了就非常easy了。

*******

MainActivity.java

package com.example.head;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity implements ViewFactory{

	ImageButton imageButton ;
	Gallery gallery;
	ImageSwitcher imageSwitcher;

	int index;

	private final static Integer[] IMAGES = {
		R.drawable.z1,
		R.drawable.z2,
		R.drawable.z3

	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		imageButton = (ImageButton)findViewById(R.id.IB01);

		imageButton.setBackgroundResource(R.drawable.z1);

	}

	public void click(View v){

		LayoutInflater layoutInflater =LayoutInflater.from(MainActivity.this);
		View view = layoutInflater.inflate(R.layout.headchoose, null);
		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

		imageSwitcher= (ImageSwitcher)view.findViewById(R.id.IS01);
		 //组件不在activity_main。所以先要使用inflate获得headchoose布局
		//并赋值给view对象。使用view对象,来调用findViewByid()方法。假设不用view来
		//调用findViewByid(),找不到会报错。

		gallery =  (Gallery)view.findViewById(R.id.Gall01);

		imageSwitcher.setFactory(MainActivity.this);

		gallery.setAdapter(new ImageAdapter(MainActivity.this));

		gallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1,
					int position, long arg3) {
				imageSwitcher.setImageResource(IMAGES[position]);
				index = position;

			}
		});

		builder.setTitle("图片选择")
		.setView(view)
		.setPositiveButton("确定", new DialogInterface.OnClickListener() {

			public void onClick(DialogInterface dialog, int which) {
				imageButton.setBackgroundResource(IMAGES[index]);

			}

		});
		builder.show();

	}

	@Override
	public View makeView() {
		// TODO Auto-generated method stub
		return new ImageView(this);
	}

	/*
	 * ImageAdapter
	 *
	 */

	class ImageAdapter extends BaseAdapter{

		Context context;

		public ImageAdapter(Context context){
			this.context = context;

		}
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return IMAGES.length;
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View v, ViewGroup vg) {
			ImageView imageView = new ImageView(context);
			imageView.setImageResource(IMAGES[position]);
			imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
			imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

			return imageView;
		}
	}

}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
    <ImageButton
        android:id="@+id/IB01"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:onClick="click"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

headchoose.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Gallery
        android:id="@+id/Gall01"
        android:layout_width="fill_parent"
        android:spacing="10dp"
        android:layout_height="90dp" />

    <ImageSwitcher
        android:id="@+id/IS01"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_centerHorizontal="true">
    </ImageSwitcher>

</RelativeLayout>

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-11-07 17:47:21

得知Android小遴选程序第七头(他们定义对话框、Gallery、ImageSwitcher)的相关文章

Android调用C程序的七荤八素

在安卓平台上开发应用,通用的语言是 Java ,而对于从其它平台迁移到安卓的项目.产品,或者对于惯用 C/C++ 编程的开发人员来讲,会希望复用已有的 C/C++ 代码.安卓平台提供了复用 Native 代码的途径,也提供了编译 C 代码的环境和工具链: NDK . NDK 是一套工具链,有了它,在安卓上使用 C 语言成为可能.其实安卓原本是在 Linux 上套了个 Java 环境,要说不能用C 那才是不可思议的事儿,只是 Google 没完全开放而已(话说我到现在都在腹黑,为么不能让 C 程序

小程序对接七牛云存储

前言: 做小程序有一段时间了,总结一下做过的技术点,特此贡献给小伙伴们!项目中,有图片存储.视频存储.录音存储这三个需要云对接存储. 一.图片/视频/录音上传七牛对接 准备工作: a.你要有一个七牛账号,实名认证后,在七牛的个人中心,有个秘钥管理-里面有一对秘钥,是上传必须的.这对秘钥,配置在后端,配置时可以设置允许上传格式,也可以设置为任何格式都可上传,让我们的后端大哥去慢慢弄吧.另外,还需要在七牛的对象存储里新建一个存储空间,所要上传的文件就是存储在你创建的空间里,如果你为了方便管理,也可以

Android小程序-乐学成语学习(一)

目标效果: 1.程序所需素材:http://pan.baidu.com/s/1kV3y1Cz 2.新建项目,在res目录下新建raw文件夹,将素材中idioms.db数据库复制到该文件夹下,这是因为raw文件夹中的东西,android会原封不动的拷贝到程序中,而不会转换为二进制文件. 3.src目录下新建七个包,adapter包用于存放适配器,activity包用于存放页面活动相关的代码,dao包用于存放数据操作相关的代码,db包用于数据库相关的代码,util包用于存放所有工具相关的代码,tes

Android 真机 程序安装后手机桌面或应用/窗口小部件视图里不显示程序图标

本文主要介绍android应用程序安装后图标不显示的几个可能原因. 自己写的程序突然安装后图标不见了,在应用程序安装中能找到,但是桌面上就是没有图标,启动只能从最近列表中其中..一般这种情况只会在服务类程序和测试程序中出现,因为不需要图标. 手机是中兴手机,在试过更改Android api版本.图标图片等方法后依然无果,又试了修改程序名称,问题解决.原名称是voter,被中兴和谐了...和谐了...谐了...了....又试了习大大的名字,依然不显示图标....欲哭无泪.... 附带网络上其他可能

android小知识点代码片段

1 拨打电话的操作 播打电话号码 Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+number)); startActivity(intent); 2 发送短信的操作 短信过长时 拆分短信 一条短信最大的文本长度 是多少 ? 中文 70 汉字 英文 160字符 SmsManager smsmanager = SmsManager.get

Android群英传笔记——第七章:Android动画机制和使用技巧

Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中十分重要的一部分,从早期的Android版本中,由于动画机制和绘图机制的不健全,Android的人机交互备受诟病,Android从4.X开始,特别是5.X,动画越来越完善了,Google也开始重视这一方面了,我们本章学习的主要内容有 Android视图动画' Android属性动画 Android动画

Android开发艺术探索——第七章:Android动画深入分析

Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是api11的新特性,在低版本无法使用属性动画,但是我们依旧有一些兼容库,OK,我们还是继续来看下详细

Android开发之程序员必须要懂得Android的重要设计理念2

上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,只看到了一位博友在下面留言期待下一篇文章的发表,为了这小小的唯一支持,我决定继续把后面的8个要点介绍一下,自己也潜心反省一下,自己的理解是不是太浅薄. 二.增加易用性 (6)一样的标志,一样的功能 我们的程序 应该帮助人们通过视觉辨别就可以轻松判断该图案或者按钮代表着怎样的功能,能清晰的分辨出来,而不是让用户费劲脑筋的去猜想这个按钮可能代表什么功能.我们的程序应该极力避免一种情况,类似的图案或者按钮却在不同的地方,代

Android - 采用ApiDemos得知Android开展

采用ApiDemos得知Android开展 本文地址: http://blog.csdn.net/caroline_wendy 位置: android-sdk/samples/android-20/legacy/ApiDemos; ReadMe中,在使用ApiDemos须要加入依赖库: Project Structure - Dependencies: 加入 com.android.support:support-v4: 20.0.0, 就可以使用; 运行,输出app程序,就能够展现ApiDem