Toy Program---------ContextMenu+Gallery混合实践
2015-09-01 14:55
232 查看
main.xml
Java代码
package com.Harris.ch08_ex2;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button nextButton;
private ImageView bookImage;
private TextView txtShow;
private Gallery bookGallery;
int[] Books = {R.drawable.f091,R.drawable.f092,R.drawable.f093,R.drawable.f097};
private String[] bookNumbers = {"第一本","第二本","第三本","第50本"};
private String[] bookNames = {"one","two","three","nine"};
int count = Books.length;
int p =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bookImage = (ImageView) findViewById(R.id.bookImage);
nextButton = (Button) findViewById(R.id.nextButton);
txtShow = (TextView) findViewById(R.id.txtShow);
bookGallery = (Gallery) findViewById(R.id.bookGallery);
bookGallery.setAdapter(new MyAdapter(this));
bookImage.setImageResource(Books[0]);
bookGallery.setOnItemSelectedListener(new bookListener());
nextButton.setOnClickListener(new BtnListener());
registerForContextMenu(bookImage);
}
protected static final int MENU_INFO = Menu.FIRST;
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(0, MENU_INFO, 0, "显示图片信息");
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
int p = item.getItemId();
Toast.makeText(MainActivity.this, bookNumbers[p]+"\n"+bookNames[p], Toast.LENGTH_LONG).show();
return super.onContextItemSelected(item);
}
class MyAdapter extends BaseAdapter{
private Context mContext;
public MyAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(mContext);
iv.setImageResource(Books[position%Books.length]);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
return iv;
}
}
class bookListener implements OnItemSelectedListener{
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
bookImage.setImageResource(Books[position%Books.length]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}
class BtnListener implements OnClickListener{
@Override
public void onClick(View v) {
p++;
if(p == count)
p=0;
bookImage.setImageResource(Books[p]);
txtShow.setText("书号:"+bookNumbers[p]+"\n"+"书名: "+bookNames[p]);
}
}
}
同时使用了ContextMenu和Gallery,并实现了二者的动作响应,纯粹是个Toy Program。
可以改进的方向,
1.把String[]和int[]数组放到res/string.xml文件里,ArrayAdapter<T>的使用。Java的本地化问题。
2.还可以往这个Layout里面加ListView,甚至使用Inflater自定义ListView的样式。
xml文件里的RelativeLayout就像是一个大的容器,随便往里面添加东西(控件),然后根据这些控件的特性作出事件相应(Listener接口的实现),完全就是互不干涉。
3.考虑到面向对象,是否可以把一个控件的生成和监听器生成及绑定放在一个类里面,比如class CreateButton,直接就完成了
4.通过取余数的方法实现循环浏览。
5.我知道Gallery已经被Deprecated了,pageviewr不是还没学嘛。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" 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.Harris.ch08_ex2.MainActivity" > <Button android:id="@+id/nextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="下一张" /> <Gallery android:id="@+id/bookGallery" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/nextButton" android:padding="5dp" android:spacing="-5dp" /> <ImageView android:id="@+id/bookImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/bookGallery" android:layout_marginTop="6dp" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/txtShow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="书名 \n书号 " android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:gravity="center" /> </RelativeLayout>
Java代码
package com.Harris.ch08_ex2;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button nextButton;
private ImageView bookImage;
private TextView txtShow;
private Gallery bookGallery;
int[] Books = {R.drawable.f091,R.drawable.f092,R.drawable.f093,R.drawable.f097};
private String[] bookNumbers = {"第一本","第二本","第三本","第50本"};
private String[] bookNames = {"one","two","three","nine"};
int count = Books.length;
int p =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bookImage = (ImageView) findViewById(R.id.bookImage);
nextButton = (Button) findViewById(R.id.nextButton);
txtShow = (TextView) findViewById(R.id.txtShow);
bookGallery = (Gallery) findViewById(R.id.bookGallery);
bookGallery.setAdapter(new MyAdapter(this));
bookImage.setImageResource(Books[0]);
bookGallery.setOnItemSelectedListener(new bookListener());
nextButton.setOnClickListener(new BtnListener());
registerForContextMenu(bookImage);
}
protected static final int MENU_INFO = Menu.FIRST;
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
menu.add(0, MENU_INFO, 0, "显示图片信息");
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
int p = item.getItemId();
Toast.makeText(MainActivity.this, bookNumbers[p]+"\n"+bookNames[p], Toast.LENGTH_LONG).show();
return super.onContextItemSelected(item);
}
class MyAdapter extends BaseAdapter{
private Context mContext;
public MyAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(mContext);
iv.setImageResource(Books[position%Books.length]);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
return iv;
}
}
class bookListener implements OnItemSelectedListener{
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
bookImage.setImageResource(Books[position%Books.length]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
}
class BtnListener implements OnClickListener{
@Override
public void onClick(View v) {
p++;
if(p == count)
p=0;
bookImage.setImageResource(Books[p]);
txtShow.setText("书号:"+bookNumbers[p]+"\n"+"书名: "+bookNames[p]);
}
}
}
同时使用了ContextMenu和Gallery,并实现了二者的动作响应,纯粹是个Toy Program。
可以改进的方向,
1.把String[]和int[]数组放到res/string.xml文件里,ArrayAdapter<T>的使用。Java的本地化问题。
2.还可以往这个Layout里面加ListView,甚至使用Inflater自定义ListView的样式。
xml文件里的RelativeLayout就像是一个大的容器,随便往里面添加东西(控件),然后根据这些控件的特性作出事件相应(Listener接口的实现),完全就是互不干涉。
3.考虑到面向对象,是否可以把一个控件的生成和监听器生成及绑定放在一个类里面,比如class CreateButton,直接就完成了
nextButton.setOnClickListener(new BtnListener());这样的方法,还包办了BtnListener这个类的定义,只要提供给外面一个new CreateButton nextButton.do();方法就可以完成上述动作,这样看起来整洁多了。
4.通过取余数的方法实现循环浏览。
5.我知道Gallery已经被Deprecated了,pageviewr不是还没学嘛。
相关文章推荐
- 动态规划之数钱
- Hey,别搞错了Win32项目和Win32控制台程序
- 课上十分钟课下1小时
- Document.cookie
- 【leetcode每日一题】237.Delete Node in a Linked List
- MFC之列表框控件ListBox
- Hey,别搞错了Win32项目和Win32控制台程序
- jquery 设置css样式
- Ajax解决缓存的5种方法
- SPOJ 10628 求树上的某条路径上第k小的点
- 华为4X和4C无法使用电信4G的解决办法
- 程序员必备:技术面试准备手册
- 使用Python的requests库作接口测试——响应结果处理
- Linux系统的信号详解
- mysql 自定义函数
- 生成一系列不重复的随机数 及写入文件
- MFC之按钮
- C#多线程的同步与通信
- [转] Finding the Best Programmer's Font
- [freemarker篇]01.入门Freemarker示例