- 浏览: 362825 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
-
nglxl:
点赞啊,必须点赞!!深度好文,解决了困扰我多年的疑惑。
tcp 长连接与短连接 -
cofftech:
opengl源码http://www.eyesourcecod ...
OPenGL ES 关键API小结 -
mail_j:
不是很好用,很多情况都不能处理 1、没有区分关键字的大小写2、 ...
Java解析sql语句,分析出调用到的所有表 -
a455642158:
就算监听到变成了cmwap还不行,还得监听网络连接状态Stat ...
android APN切换cmwap实现 -
xuhl1022:
看了您的android 4篇 浏览器二次开发,感触颇深,写的很 ...
Android浏览器Browser二次开发(四)浏览器中的APN切换
今天主要探究Gallery和Animation的使用。 制作一个美女图片集锦。
1. 首先需要做一个列表, 用来显示类别:
...
需要自定义个一个TitleAdapter集成BaseAdapter,
使用ViewHolder的好处就是对控件进行缓存, 以便下次取方便,提高访问效率。
2. 接下来就是对类别中的美女图片的显示了,
定义xml布局文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView android:id="@+id/large_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
/>
<TextView android:id="@+id/tip"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:text="@string/slide_tip"
android:gravity="center_vertical"
android:textColor="#dd0000"
android:layout_above="@+id/gallery"/>
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:gravity="center"
android:padding="5dp"
android:layout_alignParentBottom="true"
android:paddingBottom="10dp" />
<LinearLayout
android:id="@+id/miniAdLinearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
/>
</RelativeLayout>
类代码如下:
中间大图片的显示加上动画,
动画文件如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="1500"/>
</set>
放在res/anim下。
实际效果请运行附件。
至此可完成。
1. 首先需要做一个列表, 用来显示类别:
public class CategoryActivity extends Activity implements OnItemClickListener{ private ListView mList; LayoutInflater mInflater; private Integer[] title = { R.string.jingxuan, R.string.mingxing, R.string.xinggan, R.string.cosplay, R.string.socks, R.string.more }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.category_list); mList = (ListView) findViewById(R.id.category_list); long time = System.currentTimeMillis(); if (time%3==0) { mList.setBackgroundResource(R.drawable.longze2); } else if (time%3==1){ mList.setBackgroundResource(R.drawable.pic02); } else { mList.setBackgroundResource(R.drawable.pic05); } mInflater = LayoutInflater.from(this); mList.setAdapter(new TitleAdapter(this)); mList.setOnItemClickListener(this); }
...
需要自定义个一个TitleAdapter集成BaseAdapter,
private class TitleAdapter extends BaseAdapter { private Context mContext; public TitleAdapter(Context context) { mContext = context; } @Override public int getCount() { // TODO Auto-generated method stub return title.length; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return title[arg0]; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.category_item, null); vh = new ViewHolder(); vh.titleView = (TextView) convertView.findViewById(R.id.cate_title); //hilight the last 'more' title if (position == title.length -1) { vh.titleView.setTextColor(CategoryActivity.this.getResources().getColor(R.color.red)); } convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } //set image resource vh.titleView.setText(title[position]); return convertView; } /** * holder for caching UI component * @author hp * */ class ViewHolder { public TextView titleView; } }
使用ViewHolder的好处就是对控件进行缓存, 以便下次取方便,提高访问效率。
2. 接下来就是对类别中的美女图片的显示了,
定义xml布局文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView android:id="@+id/large_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
/>
<TextView android:id="@+id/tip"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:text="@string/slide_tip"
android:gravity="center_vertical"
android:textColor="#dd0000"
android:layout_above="@+id/gallery"/>
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:gravity="center"
android:padding="5dp"
android:layout_alignParentBottom="true"
android:paddingBottom="10dp" />
<LinearLayout
android:id="@+id/miniAdLinearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
/>
</RelativeLayout>
类代码如下:
public class ViewActivity extends Activity implements OnItemSelectedListener { private Gallery mGallery; private ImageAdapter mAdapter; LayoutInflater mInflater; private ImageView largeView; private Animation mAnimation; private int categoryId; private String imgDir = ""; private Bitmap[] imageUri; private int showCount = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.setTitle(getIntent().getIntExtra(Constants.KEY_TITLE, R.string.app_name)); mGallery = (Gallery) findViewById(R.id.gallery); mInflater = LayoutInflater.from(this); mAdapter = new ImageAdapter(this); largeView = (ImageView) findViewById(R.id.large_image); largeView.setScaleType(ImageView.ScaleType.FIT_XY); mAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha_ani); largeView.startAnimation(mAnimation); } public void onResume() { super.onResume(); showCount++; if (getIntent().getBooleanExtra(Constants.KEY_AD, false)) { if (showCount == 1) { AppConnect.getInstance(this).showOffers(this); } } else { //build from asset initFromIntent(); mGallery.setAdapter(mAdapter); mGallery.setOnItemSelectedListener(this); } } private void initFromIntent() { //set title Intent intent = getIntent(); categoryId = getIntent().getIntExtra(Constants.KEY_CATEGORY, 0); String basePath = "images/"; switch (categoryId) { //suggest hot images case 0: imgDir = "jingxuantuijian"; break; //super starts case 1: imgDir = "mingxing"; break; //sexy girls case 2: imgDir = "xinggan"; break; //cosplay case 3: imgDir = "cosplay"; break; case 4: imgDir = "socks"; break; default: imgDir = "xinggan"; break; } try { basePath += imgDir; AssetManager am = this.getAssets(); String[] files = am.list(basePath); imageUri = new Bitmap[files.length]; basePath += "/"; for(int i = 0; i < files.length; i++) { imageUri[i] = BitmapFactory.decodeStream(am.open(basePath + files[i])); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private class ImageAdapter extends BaseAdapter { private Context mContext; public ImageAdapter(Context context) { mContext = context; } @Override public int getCount() { // TODO Auto-generated method stub return imageUri.length; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return imageUri[arg0]; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.item, null); vh = new ViewHolder(); vh.imgV = (ImageView) convertView.findViewById(R.id.imageV); vh.imgV.setScaleType(ImageView.ScaleType.FIT_XY); convertView.setTag(vh); } else { vh = (ViewHolder) convertView.getTag(); } //set image resource vh.imgV.setImageBitmap(imageUri[position]); return convertView; } /** * holder for caching UI component * @author hp * */ class ViewHolder { public ImageView imgV; } } @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3) { //recyle old bitmap BitmapDrawable drawable = (BitmapDrawable) largeView.getDrawable(); if (drawable != null && !drawable.getBitmap().isRecycled()) { drawable.getBitmap().recycle(); } largeView.setImageBitmap(imageUri[position]); largeView.startAnimation(mAnimation); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }
中间大图片的显示加上动画,
动画文件如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="1500"/>
</set>
放在res/anim下。
实际效果请运行附件。
至此可完成。
- BG2.zip (9 MB)
- 下载次数: 238
- BeautifulGirl.rar (8.1 MB)
- 下载次数: 236
发表评论
-
基于Java NIO的手机答题游戏开发
2014-03-31 17:59 1805先上个游戏截图: 豌豆荚地址: http://apps.w ... -
enable android deviceconnection under linux
2013-04-24 15:45 1013开发环境搭建完毕,Eclipse,Java,ADT都已经折腾 ... -
set CCache for building android source code
2013-04-24 15:14 1198Setting up ccache You can opti ... -
android 源码下载403 forbidden, 406 not acceptable 错误
2013-04-24 08:46 2456解决方法 1. 浏览器登录https://android.g ... -
ubuntu11.10 编译android4.0 错处
2013-04-08 21:45 1232今天使用ubuntu11.10编译android4.0出现以下 ... -
常用WebService列表
2013-01-31 23:22 2645快递查询接口 http://webservice.36wu.c ... -
startActivityForResult 无响应问题
2013-01-24 13:57 3875今天开发遇到了个问题, 就是从一个Activity中使用sta ... -
Android中仿新浪微博刷新列表
2012-11-22 17:35 7349大家看到新浪微博中的列表往下拉的时候, 头部出现正在刷新,然后 ... -
Grid调整间距
2012-09-29 08:52 1757今天使用GridView, 发现点中某一Item时选中部分的背 ... -
Android执行 shell command
2012-03-24 17:00 7275Android执行shell命令 一、方法 1. /* ... -
BBBBBB111
2012-03-23 11:42 10陈波: 本周:代码review,解决findbugs中bug以 ... -
MonkeyTestError
2012-03-21 10:15 903-20 21:36:42.439 W/dalvikvm( ... -
INSTALL_FAILED_OLDER_SDK ERROR
2012-03-12 15:52 4488Install APK with adb: $ platfo ... -
4.0源码编译问题
2012-03-07 17:12 31661、fatal error: GL/glx.h: No suc ... -
4.0 编译apk中无classes.dex
2012-03-07 17:11 3980下载完android 4.0代码,模拟器里面的gallery不 ... -
Android 4.0源码编译错误
2012-03-05 10:19 2589UNEXPECTED TOP-LEVEL EXCEPTION: ... -
AndroidLockScreenDemo
2012-02-18 15:54 1006锁屏解锁的成功案例。 -
G14 root权限获取
2012-02-13 23:36 2875HTC G14 ROOT权限获取后就能删除系统自带的程序,相信 ... -
锁屏d ds
2011-12-15 00:49 918private final IDevicePolicyMana ... -
HuHug
2011-11-14 00:30 974gfjijgsdklgkg
相关推荐
JESD79-2F DDR2 JESD79-3F DDR3 JESD79-4D DDR4 JESD79-5C DDR5 JESD209-2F LPDDR2 JESD209-3C LPDDR3 JESD209-4E LPDDR4 JESD209-4-1A LPDDR4X JESD209-5C LPDDR5(X)
COMSOL二维光子晶体角态研究:单胞与超胞能带计算及边界态与角态特性分析,COMSOL二维光子晶体角态研究:单胞与超胞能带计算及边界态与角态特性分析,comsol二维光子晶体角态。 单胞能带,超胞能带,边界态以及角态计算。 ,comsol;二维光子晶体;角态;单胞能带;超胞能带;边界态计算,基于Comsol的二维光子晶体角态及能带边界计算研究
六自由度机械臂抓取动作仿真与代码解析:抓取动画、关节参数变化及轨迹图解详解,六自由度机械臂抓取动作仿真指南:掌握两套代码实现动画与轨迹图模拟学习攻略,六自由度机械臂抓取动作仿真-8 两套关于抓取动作的代码,包括抓取动画、关节角、角速度、角加速度的变化仿真、以及抓取轨迹图 简单易懂好上手~ ,六自由度机械臂;抓取动作仿真;抓取动画;关节角变化;角速度角加速度;抓取轨迹图;两套代码;简单易懂好上手,六自由度机械臂抓取动作仿真演示:代码与轨迹图解
ITC网络广播工具软件
Multisim四位密码锁电路仿真设计:设定、开锁与声光报警功能演示资料包,Multisim四位密码锁电路仿真设计:设定、输入、开锁与报警功能详解,附源文件、原理说明书与演示视频,multisim四位密码锁电路仿真设计 功能: 1.通过拨码开关1进行初始密码设定。 2.通过拨码开关2输入密码,实现开锁判断。 3.如果密码正确,LED绿灯亮,表示开锁。 4.如果密码不正确,LED红灯亮,蜂鸣器鸣叫,声光报警。 资料包含:仿真源文件+原理说明书+演示视频 ,四位密码锁电路、Multisim仿真设计、初始密码设定;拨码开关输入;开锁判断;LED灯显示;声光报警;仿真源文件;原理说明书;演示视频,Multisim四位密码锁电路仿真设计:初始密码设置与智能解锁功能的声光报警展示
俗话说,摸鱼摸的好,上班没烦恼,毕竟谁能拒绝带薪拉屎呢(手动狗头) 这是一个云开发职场打工人专属上班摸鱼划水微信小程序源码,没有后台 直接导入微信开发者工具即可运行,UI简约大气漂亮,只需登录微信公众平台配置完合法域名即可轻松上线。 用户进入摸鱼小程序,可以自由设置薪资,上班时间、下班时间、发薪日、 月工作天数以提醒自己摸鱼,全民打酱油,让自己成为摸鱼冠军,《商鞅摸鱼哲学》 摸鱼不是自我放纵,而是个人实力的积蓄,我们的小目标是晚睡晚起 小程序中的今日待办会提醒用户带薪拉屎和闲逛,下方展示的是距离休息日的天数,距离下一次发工资的天数和节日的天数。
【毕业设计】基于Java的开发的一个集合校园二手交易、拼车、失物招领等功能的app_pgj
个人记录:PICkit3离线烧录流程 使用软件:MPLAB X IDE v5.30 记录时间:20250215
基于Matlab代码的电力系统状态估计与实验仿真研究:扩展卡尔曼滤波和无迹卡尔曼滤波在电力系统动态状态估计中的应用及效果分析,Matlab仿真实验研究:基于扩展卡尔曼滤波器与无迹卡尔曼滤波器对电力系统状态估计的影响及验证,状态估计 电力系统状态估计 Matlab代码 实验仿真研究 电力系统由于测量值和传输误差,还有测量噪声的影响,会对状态估计产生影响。 因此,需要对嘈杂的测量进行滤波,以获得准确的电力系统运行动态。 本文使用扩展卡尔曼滤波器(EKF)和无迹卡尔曼滤波器(UKF)来估计电力系统的动态状态。 扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF 利用扩展的无迹卡尔曼滤波器估计了动力系统的动态状态。 对WECC 3机9总线系统和新英格兰10机39总线系统进行了案例研究。 结果表明EKF和UKF都能准确地估计电力系统的动态状态。 ,核心关键词:状态估计; 电力系统状态估计; Matlab代码; 实验仿真; 测量值误差; 测量噪声; 扩展卡尔曼滤波器(EKF); 无迹卡尔曼滤波器(UKF); 动力系统; 动态状态估计; WECC 3机9总线系统; 新英格兰10机39总线系统。,Matlab
springboot在线考试--
台达DVP EH3与MS300 PLC&变频器通讯程序的全面解决方案,台达DVP EH3与MS300通讯程序:稳定可靠的频率控制与启停管理系统,台达DVP EH3与台达MS300通讯程序(TDEH-9) 可直接用于实际的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等。 程序采用轮询,可靠稳定 器件:台达DVP EH3系列PLC,台达MS300系列变频器,昆仑通态7022Ni 功能:实现频率设定,启停控制,实际频率读取,加减速时间设定。 资料:带注释程序,触摸屏程序,接线和设置说明,后续有技术咨询。 ,核心关键词:台达DVP EH3; 台达MS300; 通讯程序(TDEH-9); 轮询; 稳定; 频率设定; 启停控制; 实际频率读取; 加减速时间设定; 触摸屏程序; 接线方式; 设置说明; 技术咨询。,台达PLC与变频器通讯程序(带注释、触摸屏控制)
项目资源包含:可运行源码+sql文件 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 个人账户管理:支持用户注册、登录与个人信息编辑;提供密码找回及账号安全保护措施。 声纹采集:利用麦克风设备录制用户的声纹样本;支持多种录音格式和质量调整,确保采集到清晰、准确的声纹数据。 声纹模板库管理:建立和维护一个安全的声纹模板库;支持声纹模板的添加、删除、更新和查询操作。 声纹比对与识别:运用深度学习算法对输入的声纹数据进行特征提取和匹配;实现快速、准确的声纹身份验证。 多场景应用支持:适用于多种场景,如门禁系统、移动支付、远程登录等;可根据实际需求定制开发相应的应用场景。 实时监控与报警:实时监控系统运行状态,包括声纹识别成功率、处理速度等指标;当出现异常情况时,及时发出报警信息。 数据分析与报告生成:收集并分析声纹识别过程中的数据,如识别准确率、处理时间等;根据用户需求输出包含详细图表说明的专业级文档供下载打印保存。 社区互动交流:设立论坛版块鼓励用户分享心得体会讨论热点话题;定期邀请行业专家举办线上讲座传授实用技巧知识。 音乐筛选与推荐:集成音乐平台API,根据用户的浏览习惯和情绪状态推荐背景音乐,增强用户体验。 数据可视化:提供交互式的数据可视化面板,使非技术用户也能轻松理解复杂的数据集,从而做出更明智的决策。
三相与多相开绕组永磁同步电机仿真模型的先进控制策略探讨与实现,三相与多相开绕组永磁同步电机的Simulink仿真模型与先进控制策略研究,开绕组电机,开绕组永磁同步电机仿真模型、simulink仿真 共直流母线、独立直流母线,两相容错,三相容错控制,零序电流抑制,控制策略很多 三相开绕组永磁同步电机,六相开绕组永磁同步电机 五相开绕组永磁同步电机,五相开绕组电机 ,开绕组电机; 永磁同步电机仿真模型; simulink仿真; 共直流母线; 独立直流母线; 两相容错; 三相容错控制; 零序电流抑制; 控制策略; 六相开绕组永磁同步电机; 五相开绕组永磁同步电机,开绕组电机仿真研究:共直流母线与独立直流母线的容错控制策略
【毕业设计】基于Java的开发的网上汽车租赁管理系统_pgj
csv 模块是 Python 的标准库,无需额外安装。 运行结果如下图: ['姓名', '年龄', '城市'] ['张三', '25', '北京'] ['李四', '30', '上海'] ['王五', '22', '广州']
【毕业设计】基于Java+Springboot+Vue的宠物领养系统_pgj
让前端开发者学习“机器学习”!
【毕业设计】基于Java的实现的以宠物为主体的论坛式的APP
大模型应用工具实战2-有好玩的数字人