- 浏览: 261824 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tonytony3:
THANK YOU
Android多级树形菜单的实现 -
haiyang08101:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
求求你帮帮我:
怎么把我的空格也当成节点处理了?
java对xml文件做增删改查 -
求求你帮帮我:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
lpj13579:
多谢分享,学习学习
高仿小米盒子UI效果实现
自定义View类控制焦点以及android现实缩小图片的像素和如何通过BitmapFactory读得图片资源,做了笔记。以下代码提供给大伙参考。
package com.view; import java.util.HashMap; import com.pojo.Constants; import com.test.R; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; public class ADWView extends View { Context myContext = this.getContext(); //读得String.xml里面的资源 private String a = myContext.getString(R.string.app_a); private String b = myContext.getString(R.string.app_b); private String c = myContext.getString(R.string.app_c); private String d = myContext.getString(R.string.app_d); private String e = myContext.getString(R.string.app_e); private int focusID = 0; private Bitmap focusbmp, progressBar_A,progressBar_B,progressBar_C,progressBar_D,progressBar_E,progressBar; private Bitmap bitmap_A,bitmap_B,bitmap_C,bitmap_D,bitmap_E; HashMap<Integer, Integer> progressBarMap = null; public ADWView(Context context) { super(context); this.setFocusable(true); this.requestFocus(); initData(); //焦点图片通过BitmapFactory来得到图片资源R.drawable.shortcut_bg_sel focusbmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.shortcut_bg_sel); } @Override protected void onDraw(Canvas canvas) { //焦点图片初始位置 if (focusbmp != null) { canvas.drawBitmap(focusbmp, this.getPaddingLeft()-20, this.getPaddingTop() + focusID * 100 + 230, null); } super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.WHITE); paint.setTextSize(25); paint.setAntiAlias(true); //获得图片的集合progressBarMap.get(Constants.progressBarValueA) progressBar_A = BitmapFactory.decodeResource(this.getResources(),progressBarMap.get(Constants.progressBarValueA)); progressBar_B = BitmapFactory.decodeResource(this.getResources(),progressBarMap.get(Constants.progressBarValueB)); progressBar_C = BitmapFactory.decodeResource(this.getResources(),progressBarMap.get(Constants.progressBarValueC)); progressBar_D = BitmapFactory.decodeResource(this.getResources(),progressBarMap.get(Constants.progressBarValueD)); progressBar_E = BitmapFactory.decodeResource(this.getResources(),progressBarMap.get(Constants.progressBarValueE)); //获得图片的宽和高 int w = 22000/progressBar_A.getWidth(); int h = 22000/progressBar_A.getHeight(); //刷新图片的像素大小 bitmap_A = progressBar.createScaledBitmap(progressBar_A, w, h, true); bitmap_B = progressBar.createScaledBitmap(progressBar_B, w, h, true); bitmap_C = progressBar.createScaledBitmap(progressBar_C, w, h, true); bitmap_D = progressBar.createScaledBitmap(progressBar_D, w, h, true); bitmap_E = progressBar.createScaledBitmap(progressBar_E, w, h, true); //文字放置在屏幕的位置 canvas.drawText(a + " " + String.valueOf(Constants.A), getPaddingLeft() + 80, getPaddingTop() + 300, paint); //图片的放置在屏幕的位置 canvas.drawBitmap(bitmap_A,getPaddingLeft()+ 244, getPaddingTop() + 247, null); canvas.drawText(b + " " + String.valueOf(Constants.B), getPaddingLeft() + 80, getPaddingTop() + 400, paint); canvas.drawBitmap(bitmap_B, getPaddingLeft()+ 244, getPaddingTop() + 347, null); canvas.drawText(c + " " + String.valueOf(Constants.C), getPaddingLeft() + 80,getPaddingTop() + 500, paint); canvas.drawBitmap(bitmap_C, getPaddingLeft()+ 244, getPaddingTop() + 447, null); canvas.drawText(d + " " + String.valueOf(Constants.D), getPaddingLeft() + 80,getPaddingTop() + 600, paint); canvas.drawBitmap(bitmap_D, getPaddingLeft()+ 244, getPaddingTop() + 547, null); canvas.drawText(e + " " + String.valueOf(Constants.E), getPaddingLeft() + 80,getPaddingTop() + 700, paint); canvas.drawBitmap(bitmap_E, getPaddingLeft()+ 244, getPaddingTop() + 647, null); } public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: if (focusID > 0) { focusID--; } else { focusID = 4; } this.invalidate(); break; case KeyEvent.KEYCODE_DPAD_DOWN: if (focusID < 4) { focusID++; } else { focusID = 0; } this.invalidate(); break; //左键的响应 case KeyEvent.KEYCODE_DPAD_LEFT: if (focusID == 0) { if (Constants.A >-10) { Constants.A--; Constants.progressBarValueA--; } else { Constants.A = -10; Constants.progressBarValueA=6; } this.invalidate(); } else if (focusID == 1) { if (Constants.B > -10) { Constants.B--; Constants.progressBarValueB--; } else { Constants.B = -10; Constants.progressBarValueB=6; } this.invalidate(); }else if (focusID == 2) { if (Constants.C > -10) { Constants.C--; Constants.progressBarValueC--; } else { Constants.C = -10; Constants.progressBarValueC=6; } this.invalidate(); }else if (focusID == 3) { if (Constants.D > -10) { Constants.D--; Constants.progressBarValueD--; } else { Constants.D = -10; Constants.progressBarValueD=6; } this.invalidate(); }else if (focusID == 4) { if (Constants.E > -10) { Constants.E--; Constants.progressBarValueE--; } else { Constants.E = -10; Constants.progressBarValueE=6; } this.invalidate(); } break; //右键的响应 case KeyEvent.KEYCODE_DPAD_RIGHT: if (focusID == 0) { if (Constants.A < (10-1)) { Constants.A++; Constants.progressBarValueA++; } else { Constants.A = 10; Constants.progressBarValueA = 26; } this.invalidate(); } else if (focusID == 1) { if (Constants.B < (10 - 1)) { Constants.B++; Constants.progressBarValueB++; } else { Constants.B = 10; Constants.progressBarValueB = 26; } this.invalidate(); }else if (focusID == 2) { if (Constants.C < (10 - 1)) { Constants.C++; Constants.progressBarValueC++; } else { Constants.C = 10; Constants.progressBarValueC = 26; } this.invalidate(); }else if (focusID == 3) { if (Constants.D < (10 - 1)) { Constants.D++; Constants.progressBarValueD++; } else { Constants.D = 10; Constants.progressBarValueD = 26; } this.invalidate(); }else if (focusID == 4) { if (Constants.E < (10 - 1)) { Constants.E++; Constants.progressBarValueE++; } else { Constants.E = 10; Constants.progressBarValueE = 26; } this.invalidate(); } break; //焦点的控制 case KeyEvent.KEYCODE_ENTER: switch (focusID) { case 0: focusID = 1; break; case 1: focusID = 2; break; case 2: focusID = 3; break; case 3: focusID = 4; break; case 4: focusID = 0; break; default: break; } this.invalidate(); break; //退出按键的响应 case KeyEvent.KEYCODE_BACK: ((ViewGroup) (this.getParent())).removeView(this); break; default: break; } return true; } //做一个图片资源的集合 public void initData() { progressBarMap = new HashMap<Integer, Integer>(); progressBarMap.put(1, R.drawable.sound_1); progressBarMap.put(2, R.drawable.sound_2); progressBarMap.put(3, R.drawable.sound_3); progressBarMap.put(4, R.drawable.sound_4); progressBarMap.put(5, R.drawable.sound_5); progressBarMap.put(6, R.drawable.sound_6); progressBarMap.put(7, R.drawable.sound_7); progressBarMap.put(8, R.drawable.sound_8); progressBarMap.put(9, R.drawable.sound_9); progressBarMap.put(10, R.drawable.sound_10); progressBarMap.put(11, R.drawable.sound_11); progressBarMap.put(12, R.drawable.sound_12); progressBarMap.put(13, R.drawable.sound_13); progressBarMap.put(14, R.drawable.sound_14); progressBarMap.put(15, R.drawable.sound_15); progressBarMap.put(16, R.drawable.sound_16); progressBarMap.put(17, R.drawable.sound_17); progressBarMap.put(18, R.drawable.sound_18); progressBarMap.put(19, R.drawable.sound_19); progressBarMap.put(20, R.drawable.sound_20); progressBarMap.put(21, R.drawable.sound_21); progressBarMap.put(22, R.drawable.sound_22); progressBarMap.put(23, R.drawable.sound_23); progressBarMap.put(24, R.drawable.sound_24); progressBarMap.put(25, R.drawable.sound_25); progressBarMap.put(26, R.drawable.sound_26); progressBarMap.put(27, R.drawable.sound_27); progressBarMap.put(28, R.drawable.sound_28); progressBarMap.put(29, R.drawable.sound_29); progressBarMap.put(30, R.drawable.sound_30); progressBarMap.put(31, R.drawable.sound_31); progressBarMap.put(32, R.drawable.sound_32); } }
发表评论
-
Android 三大图片加载框架比较
2016-11-30 10:31 10291.哪三大图片加载框架? 1) Pi ... -
仿微信小视屏拍摄的进度条/自定义的progressBar的样式。
2016-08-20 00:25 974今天有个需求,就是需要倒计时的进度条,样式参考微信小视屏拍摄 ... -
android 闹钟定时任务 AlarmManager
2016-06-02 13:41 1766直接上代码 package com.exampl ... -
android应用实现重启系统
2016-06-02 13:33 34201.在AndroidManifest.xml文件的manif ... -
android 每天定时提醒功能实现
2016-06-01 22:42 0android要实现定时的功 ... -
Java Calendar 类的时间操作
2016-06-01 21:02 614ava Calendar 类时间操作,这也许是创建日历和管理 ... -
android中fragment和activity之间相互通信
2014-11-13 16:25 1385在用到fragment的时候,老是会遇到一个问题,就是fra ... -
墨迹天气上下滑动viewpager
2014-11-04 17:15 665墨迹天气上下滑动viewpager -
Android杂谈--打开文件的Intent及使用
2014-10-25 13:03 594在写文件管理系统时会用到各种打开不同格式的文件的需求,由于A ... -
获取Android签名证书的sha1值
2014-08-23 23:14 620前言:今天开始研 ... -
java中Keytool的使用总结
2014-08-23 22:40 495J2SDK提供了keytool命令行工具,可以根据指定的参数 ... -
android获取versionName和versionCode
2014-07-08 18:02 685<TextView android:textSize= ... -
Android如何防止apk程序被反编译
2014-07-08 17:22 658作为Android应用开发者,不得不面对一个尴尬的局面,就是 ... -
在GridView中实现单选或多选功能
2014-06-26 13:08 767由于项目需要,要用到GridView实现多选功能,在网上搜 ... -
Android中Tween动画和Frame动画实例
2014-06-26 10:46 672Animation主要有两种动画模式:Tween动画和Fra ... -
android 禁用和开启四大组件的方法(setComponentEnabledSetting )
2014-06-19 15:26 0为什么要关闭组件? 在用到组件时,有时候我们可能暂时性的不使 ... -
android MD5校验码的生成与算法实现
2014-06-17 10:58 815在Java中,java.security.Mes ... -
android 自动检测版本升级
2014-06-15 14:10 347这里我用别的app代替了,简单省事,正常的话,你要对你的 ... -
layout左右平滑控制.
2014-04-30 09:41 562<?xml version="1.0&quo ... -
android让你的TabHost滑动起来
2014-04-22 22:13 772在Android应用中,一般TabActivity和若干个T ...
相关推荐
Android代码中动态设置图片的大小(自动缩放),位置
5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android...
这是本人的毕设,源码大公开。Android2.2以上,只在480*848的屏幕上测试过,其他屏幕的不保证。实现的功能包括: 绘制效果 ...1.实现了图片预览和图片浏览器 2.可以删除图片、分享图片和重新编辑图片
5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android...
项目简介: 该项目为加载大图片 详细介绍: 对于超大的图片,如果不缩放的话,容易导致内存溢出。而经过处理后,无论多大的... 2).Android中保存图片是用ARGB保存的,A表示阿尔法透明度,所以一个像素点占用了4个字节
5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android...
5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android...
主要实现动态修改图像的色相、饱和度及亮度,颜色矩阵,图像像素点调整、图像矩阵实现图像的平移缩放等,Xfermode相关知识点,渐变相关,图像倒影,像素块的坐标变化等等。 博客地址:...
本文给大家分享android图片压缩的三种方法并压缩到指定大小,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
核心思想是通过BitmapFactory.Options来缩放图片,主要是用到了它的inSampleSize参数(采样率) 当inSampleSize为1的时候,采样后的图片大小为图片的原始大小; 当inSampleSize为2的时候,采样后的图片的宽和高是...
6.5 Android图像处理之色彩特效处理 122 6.5.1 色彩矩阵分析 122 6.5.2 Android颜色矩阵——ColorMatrix 128 6.5.3 常用图像颜色矩阵处理效果 131 6.5.4 像素点分析 134 6.5.5 常用图像像素点处理效果 135 6.6...
公司的设计师在做设计图的时候都是以iphone6(宽为750物理像素)为基准进行设计的。...CSS3有缩放的属性,我们可以利用这个属性,缩小50%的1px的边框,来实现这个功能,具体实现代码如下 <div cla
修改density(屏幕密度,若每英寸有160像素点,该值就为1)、scaleDensity(字体缩放比例),densityDpi(屏幕上每英寸有多少像素点,如160)的值,就是修改系统内部对于目标尺寸而言的像素密度。 二、追根溯源 每个...
了解并学习OpenCV的Python第三方库——opencv-python中实现读取图像、图像缩放、图像滤波、显示图像、保存图像等功能的函数。2.编写算法,对所给图像进行均值滤波,改变kernel的大小,得到不同的美颜图片,并进行...
Android UI设计规范文档 1 设计原则 2 风格 2.1 设备和显示 Android 驱动了数百万的手机、平板和其它设备,兼容了各种屏幕宽度和比例。利用 Android 灵活的布局系统,您可以创造出从平板到手机都看起来很优雅的应用...
1.图片浏览放大缩小。 2.单一图片点击,放大效果,和缩放效果。 3.列表图片点击,放大效果,和缩放效果。 4.网格图片点击,放大效果,和缩放效果。 5.增加列表混合布局 6.加入缩略图和原图加载过程--> 加入高清图...
为了解决这些问题,做了一个DEMO,利用photoswipe4.1.1 + JQM 实现了图片轮播。 同时也修改了一些photoswipe4.1.1的源码和样式,供参考。 Demo花了半天精力才解决。 Tips:图片最好不要大于2000像素,推荐1800以内,...