android动画结束弹出文本框,学完(Android疯狂猜歌 5-2 实现待选文字框点击事件)课程出现的小问题...
疯狂猜歌 5-2 实现待选文字框点击事件 自定义的GirdView中,holder的值是a0...a23
holder如果定义在getView 里就没事,点击a1就显示a1,但是,如果定义在成员变量里,无论点击哪个按钮,都只是显示a0,求解答
以下是源码
自定义的=====================================gridView======================
package cn.bashi.GuessMusic.mui;
import java.util.ArrayList;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import cn.bashi.GuessMusic.R;
import cn.bashi.GuessMusic.model.ButtonWorld;
import cn.bashi.GuessMusic.model.IWorldButtonClickListener;
import cn.bashi.GuessMusic.util.Util;
public class MyGridView extends GridView {
private ArrayList ButtonWorlds = new ArrayList();
private myBaseAdapter myBase;
private Context context;
private Animation mScaleAnimation;
private IWorldButtonClickListener WorldButtonClickListener;
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
myBase = new myBaseAdapter();
setAdapter(myBase);
}
public void updateData(ArrayList ButtonWorlds){
this.ButtonWorlds = ButtonWorlds;
setAdapter(myBase);
}
class myBaseAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO 自动生成的方法存根
return ButtonWorlds.size();
}
@Override
public Object getItem(int position) {
// TODO 自动生成的方法存根
return ButtonWorlds.get(position);
}
@Override
public long getItemId(int position) {
// TODO 自动生成的方法存根
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ButtonWorld holder;
// 加载了所有item后,一起再放动画,动画没放完,没有view
if(convertView == null){
// 加载动画
mScaleAnimation = AnimationUtils.loadAnimation(context, R.anim.scale);
mScaleAnimation.setStartOffset(position * 100);
convertView = Util.getView(context, R.layout.mygridview_item);
holder = ButtonWorlds.get(position);
holder.setWorldId(position);
holder.setViewButtonWorld((Button) convertView.findViewById(R.id.worldBut_item));
holder.getViewButtonWorld().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO 自动生成的方法存根
WorldButtonClickListener.onWorldButtonClick(holder);
}
});
convertView.setTag(holder);
}else{
holder = (ButtonWorld) convertView.getTag();
}
holder.getViewButtonWorld().setText(holder.getWorldValue());
convertView.startAnimation(mScaleAnimation);
return convertView;
}
}
public void regestOnWorldButtonClick(IWorldButtonClickListener listener){
this.WorldButtonClickListener = listener;
}
}
========================================holder================================
package cn.bashi.GuessMusic.model;
import android.widget.Button;
/** 显示的文字按钮*/
public class ButtonWorld {
private int worldId;
private String worldValue;
private Button ViewButtonWorld;
private boolean isVisibility;
public ButtonWorld(){
worldValue = "";
isVisibility = true;
}
public int getWorldId() {
return worldId;
}
public void setWorldId(int worldId) {
this.worldId = worldId;
}
public String getWorldValue() {
return worldValue;
}
public void setWorldValue(String worldValue) {
this.worldValue = worldValue;
}
public Button getViewButtonWorld() {
return ViewButtonWorld;
}
public void setViewButtonWorld(Button viewButtonWorld) {
ViewButtonWorld = viewButtonWorld;
}
public boolean isVisibility() {
return isVisibility;
}
public void setVisibility(boolean isVisibility) {
this.isVisibility = isVisibility;
}
}
==========================================MainActivity ============================
package cn.bashi.GuessMusic.ui;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast;
import cn.bashi.GuessMusic.R;
import cn.bashi.GuessMusic.model.ButtonWorld;
import cn.bashi.GuessMusic.model.IWorldButtonClickListener;
import cn.bashi.GuessMusic.mui.MyGridView;
import cn.bashi.GuessMusic.util.Util;
public class MainActivity extends Activity {
/** 文字个数*/
public final int WORLD_COUNT = 24;
/** 盘片动画*/
private Animation mPanAnim;
private LinearInterpolator mPanLinear;
/** 拨杆进入动画*/
private Animation mBarInAnim;
private LinearInterpolator mBarInLinear;
/** 拨杆退出动画*/
private Animation mBarOutAnim;
private LinearInterpolator mBarOutLinear;
/** 按键*/
private ImageButton mButtonPlay;
private ImageView mViewPan;
private ImageView mViewBar;
private LinearLayout worldSelectView;
/** 是否动画正在运行*/
private boolean mIsRunning = false;
/** 文字数据*/
private ArrayList ButtonSelectWorlds;
private ArrayList ButtonWorlds;
/** 自定义的控件*/
private MyGridView myGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 盘片
mViewPan = (ImageView) findViewById(R.id.pan);
// 摇杆
mViewBar = (ImageView) findViewById(R.id.bar);
// 按钮
mButtonPlay = (ImageButton) findViewById(R.id.but_play);
// 文字选区
worldSelectView = (LinearLayout) findViewById(R.id.world_select);
myGrid = (MyGridView) findViewById(R.id.mgrid);
myGrid.regestOnWorldButtonClick(new IWorldButtonClickListener(){
@Override
public void onWorldButtonClick(ButtonWorld buttonWorld) {
// TODO 自动生成的方法存根
Toast.makeText(MainActivity.this, buttonWorld.getWorldValue(), 1).show();
}
});
// 初始化动画
mPanAnim = AnimationUtils.loadAnimation(this, R.anim.rotate);
mPanLinear = new LinearInterpolator();
mPanAnim.setInterpolator(mPanLinear);
mPanAnim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mViewBar.setAnimation(mBarOutAnim);
mIsRunning = false;
mButtonPlay.setVisibility(View.VISIBLE);
}
});
mBarInAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_45);
mBarInAnim.setFillAfter(true);
mBarInLinear = new LinearInterpolator();
mBarInAnim.setInterpolator(mBarInLinear);
mBarInAnim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// 盘片开始转动
mViewPan.startAnimation(mPanAnim);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
mBarOutAnim = AnimationUtils.loadAnimation(this, R.anim.rotate_out_45);
mBarOutAnim.setFillAfter(true);
mBarOutLinear = new LinearInterpolator();
mBarOutAnim.setInterpolator(mBarOutLinear);
// 开始按钮
mButtonPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 动画开始
if(!mIsRunning && mViewBar != null){
mIsRunning = true;
mButtonPlay.setVisibility(View.GONE);
mViewBar.startAnimation(mBarInAnim);
}
}
});
LoadUnderView();
}
/** 获取字体的布局*/
public void LoadUnderView(){
// 加载文字选框
LoadWorldSelectView();
// 加载文字待选区
LoadWorldView();
}
/** 加载文字选框*/
public void LoadWorldSelectView(){
ButtonSelectWorlds = getWorldsSelectData();
for(int n = 0; n < ButtonSelectWorlds.size(); n++){
worldSelectView.addView(ButtonSelectWorlds.get(n).getViewButtonWorld(), new LayoutParams(140, 140));
}
}
/** 加载文字待选区*/
public void LoadWorldView(){
ButtonWorlds = getWorldsData();
// 加载数据
myGrid.updateData(ButtonWorlds);
}
@Override
protected void onPause() {
mViewPan.clearAnimation();
super.onPause();
}
/** 获取文字数据*/
public ArrayList getWorldsSelectData(){
ButtonSelectWorlds = new ArrayList();
ButtonWorld worldSelect;
for(int n = 0; n < 4; n++){
worldSelect = new ButtonWorld();
View v = Util.getView(MainActivity.this, R.layout.mygridview_item);
worldSelect.setViewButtonWorld((Button)v.findViewById(R.id.worldBut_item));
worldSelect.getViewButtonWorld().setBackgroundResource(R.drawable.game_wordblank);
worldSelect.getViewButtonWorld().setText("");
ButtonSelectWorlds.add(worldSelect);
}
return ButtonSelectWorlds;
}
/** 获取文字数据*/
public ArrayList getWorldsData(){
ButtonWorlds = new ArrayList();
ButtonWorld World;
for(int n = 0; n < WORLD_COUNT; n++){
World = new ButtonWorld();
World.setWorldValue("好"+n);
ButtonWorlds.add(World);
}
return ButtonWorlds;
}
}
==============================================IWorldButtonClickListener ===============
package cn.bashi.GuessMusic.model;
public interface IWorldButtonClickListener {
public void onWorldButtonClick(ButtonWorld buttonWorld);
}
android动画结束弹出文本框,学完(Android疯狂猜歌 5-2 实现待选文字框点击事件)课程出现的小问题...相关推荐
- android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...
- c语言获取安卓弹窗,Android实现信息弹出框
本文实例为大家分享了Android实现信息弹出框的具体代码,供大家参考,具体内容如下 layout下的dialog_common_layout.xml android:layout_width=&qu ...
- css实现的图片悬停旋转弹出文本框html页面前端源码
大家好,今天给大家介绍一款,css实现的图片悬停旋转弹出文本框html页面前端源码(图1).送给大家哦,获取方式在本文末尾. 图1 当鼠标经过图片的时候,就会激活旋转和文本弹出事件,非常适合用在图片展 ...
- android 弹出框带标题栏,Android微信右上角弹出的对话选择框实现
Android微信右上角弹出的对话选择框实现 我在之前的文章中曾给出了一个开源的微信UI大体实现方案具体代码实现,参见附录文章1.本文单单挑出一个微信的UI实现点:微信右上角弹出的选择对话框.如 ...
- Android EditText不弹出输入法焦点问题的总结
同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android 源码时再搞个清楚 ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
- android 盒子输入法不弹出来,Android EditText不弹出输入法焦点问题的总结
看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属性:android:windowSoftInputMod ...
- (转)Android软键盘弹出,界面整体上移
原地址:http://blog.csdn.net/u011622479/article/details/51161717 在做搜索功能的时候,点击搜索框,搜索框获取焦点,键盘弹出:现在问题出来了,an ...
- Android 软键盘弹出时布局内指定内容上移实现及问题解决
Android 软键盘弹出时布局内指定内容上移实现及问题解决 参考文章: (1)Android 软键盘弹出时布局内指定内容上移实现及问题解决 (2)https://www.cnblogs.com/as ...
最新文章
- 一个浙江商人立下的22条军规(转载)
- VS2010项目生成时提示错误“在证书存储区中找不到清单签名证书”?
- 从零单排学Redis【白银】
- 市值十亿美金公司的五个特点
- 参数等效模型可以用于_盘式永磁涡流驱动器的电磁温度耦合解析模型
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
- spring 之 import标签、alias标签、beans标签 解析
- hive内表和外表区别(转载+自己整理)
- win32 destroywindow函数
- asp.net 404页面
- RSA加密解密及RSA加签验签
- Matlab遗传算法工具箱(gaot)下载及安装
- iOS集成 Paypal 贝宝支付
- python apply函数的用法_python apply函数
- 羊皮卷之七 我要笑遍世界
- Ada的故事(转自互联网)
- 将时间序列转成图像——格拉姆角场方法 Matlab实现
- python制作ppt动画_天呐,还能这么玩!用 Python 生成动态 PPT
- 12月18日科技资讯|支付宝、微信回应3D面具破解人脸识别;ofo 否认「发币」;Kafka 2.4.0 发布
- 做移动网站还是移动应用程序?
热门文章
- FPGA信号处理系列文章——CRC运算的实现
- 转载:Tim O'Reilly与John Battelle谈即将开幕的Web
- 参考 史料揭秘:美曾计划攻打以色列
- 如何画出天天动听那样的待机歌词显示?
- Clickhouse Explain
- 地震勘探基础(四)之地震干扰波
- [bzoj 4976]宝石镶嵌
- ANDROID PAD模拟器设置
- excel xml mysql数据库,数据库文本文档excel表格-excel xml格式的文件 导入到 MYSQL 数据库的语句...
- html5点击复制文本框内容,js实现点击按钮复制文本功能