怎样用java代码通过图片名设置linearlayout的背景图片

youdiving 2013-05-05 05:08:54
我想在自定义Myview类的类文件中通过图片名给Main_Activity的linearlayout设置背景图片,图片存在drawable文件夹里,
public class MainActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

LinearLayout in;
}

public void setbackgroundpicture(String imagename)
{
int resid=getResources().getIdentifier(imagename,"drawable","com.example.ybhy");
//in.setBackground(getResources().getDrawable(resid));
System.out.println(resid);
in.setBackgroundResource(resid);

}}

public class MyView extends View
{
MainActivity ay;
public MyView(Context context, AttributeSet attrs)
{
super(context, attrs);
ay = (MainActivity) context;
...
}

public boolean onTouchEvent(MotionEvent event)
{
...
db=dbhelp.getReadableDatabase();
Cursor cur=db.rawQuery("select imgname from zipic where zi=?",new String[]{cs.toString()});

while(cur.moveToNext())
{
String picname=cur.getString(cur.getColumnIndex("imgname"));
System.out.println(picname);
ay.setbackgroundpicture(picname);//出错
}
...
}

数据库里取出的图片名字是有的
LOgcat里面出现下面的错误:
05-05 08:46:07.789: I/ System.out(8560): kou01
05-05 08:46:07.789: I/ System.out(8560): 2130837516
05-05 08:46:07.889: D/ dalvikvm(8560): GC_FOR_ALLOC freed 1690K, 17% free 19108K/22791K, paused 69ms
05-05 08:46:07.934: I/ dalvikvm-heap(8560): Grow heap (frag case) to 21.225MB for 2601952-byte allocation
05-05 08:46:08.168: D/ dalvikvm(8560): GC_CONCURRENT freed 17K, 15% free 21631K/25351K, paused 8ms+26ms
05-05 08:46:08.469: D/ AndroidRuntime(8560): Shutting down VM
05-05 08:46:08.469: W/ dalvikvm(8560): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
05-05 08:46:08.530: E/ AndroidRuntime(8560): FATAL EXCEPTION: main
05-05 08:46:08.530: E/ AndroidRuntime(8560): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
05-05 08:46:08.530: E/ AndroidRuntime(8560): at com.example.ybhy.MyView.onTouchEvent(MyView.java:207)
...全文
786 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
carvinliao 2014-07-14
  • 打赏
  • 举报
回复
Resources resources = getContext().getResources(); Drawable btnDrawable = resources.getDrawable(R.drawable.layout_bg); layout.setBackgroundDrawable(btnDrawable);
youdiving 2013-05-06
  • 打赏
  • 举报
回复
自己顶一下,好像要沉了
youdiving 2013-05-06
  • 打赏
  • 举报
回复
这个主要是图片名字不好定,这个地方后续会改进的
CuGBabyBeaR 2013-05-05
  • 打赏
  • 举报
回复
奇怪 为啥你放在res里的图片还要把信息存在数据库里? 直接用个数组或者放XML的Array里不就行了? 何必多此一举... 另外 每次触摸屏幕都要访问一次数据库...这...
本 科 生 实 验 报 告 实验课程 Android 课程设计数独游戏 学院称 信息科学与技术学院 专业称 物联网工程 学生姓 学生学号 指导教师 实验地点 实验成绩 二〇一五 年 十 月 二〇一五 年 十二 月 Android 数独游戏 一、数独游戏简介 1. 数独游戏 "数独 Sudoku" 来自日文(すうどく), 但概念源自 "拉丁方块" , 是十八世纪瑞士数学家欧拉发明的,是一种运用纸、笔进行演算的逻辑游戏。数 独盘面是个九宫, 每一宫又分为九个小格。在这八十一格中给出一定的已知数字 和解题条件,利用逻辑和推理,在其他的空格上填入 1-9 的数字。使 1-9 每个数 字在每一行、每一列和每一宫中都只出现一次,所以又称"九宫格" 。谜题中会 预先填入 若干数字,它宫位则留白,玩家得依谜题中的数字分布状况,逻辑推 敲出剩下的空格里是什么数字 2. 该数独游戏是基于 Android 系统,通过过程性设计声明性两种方式来设 计用户界面,采用 Android 2D 绘图来实现数独的游戏界面中的九宫格和数字的 绘制,以及田填充页面的提示等。该数独游戏同时还涉及到活动的创建,游戏框 架的构建,多媒体功能的实现,主要用到了 Android 开发的入门基础知识,同时 设计到开发环境的配置和真机模拟和模拟器两方模拟 二、数独游戏设计 1. 游戏框架设计(以下图片都是通过 Android 真机所得) figure-1 系统框图 figure-2 进入页面 figure -3 新建游戏 figure-4 游戏界面 figure-5 关于游戏 figure-6 设置游戏 2. 游戏程序设计 figure-7 程序设计 figure-8 程序控制程序结构 figure-9 程序样式设置结构 Sudoku.java:程序的主控活动类,初始化游戏,控制其他的 java 类。 PuzzleView.java:2D 绘图的主控类,用来绘制游戏的主界面,包括九宫格、 数字、提示、虚拟键盘等。 Game.java:游戏的算法和难度的控制类。用来初始化游戏界面,控制 PuzzleView 类绘制数字;对当前九宫格的数字输入状态来提供数字的提示功 能,保存当前的状态;并根据首选项的有判断的初始化数独游戏开始界面的 难度。 About.java:主要用于关于游戏的页面的初始化和返回菜单页面。 Keypad.java:主要用于游戏提示键盘的初始化控制,获取输入的当前的数独 的输入数字和判断输入是否有效。 Prefs.java:负责对游戏设置选项的控制处理。 Music.java:多媒体的类,用来控制背景音乐的播放和暂停。 三、数独游戏实现 1. 游戏的界面设计 1)布局方式 LinearLayout(线性布局) :以相对于当行或当列的形式显示子对象,在 本数独游戏设计的开始页面采用该中布局和接下来的布局方式,通过嵌 套来实现。 RelativeLayout(相对布局) :以相对于其他子对象显示子对象。 main.xml: (伪代码设置选项 tools:context="com.example.sudoku.Sudoku" > <LinearLayout //线性布局 ...//设置布局的格式 设置文本样式 android:text="@string/main_title" />

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧