如何动态生成Selector状态选择器
2017-01-23 14:07
127 查看
前几天在项目有优化的时候,突然想动态生成selector 所以就写了一个工具类
/** * 动态设置 点击事件 selector 的工具类 可以从本地添加 也可以从网络添加 * Created by suwenlai on 16-12-26. */ public class SelectorUtil { /** * 从 drawable 获取图片 id 给 Imageview 添加 selector * @param context 调用方法的 Activity * @param idNormal 默认图片的 id * @param idPress 点击图片的 id * @param iv 点击的 view */ public static void addSelectorFromDrawable(Context context , int idNormal, int idPress,ImageView iv){ StateListDrawable drawable = new StateListDrawable(); Drawable normal = context.getResources().getDrawable(idNormal); Drawable press = context.getResources().getDrawable(idPress); drawable.addState(new int[]{android.R.attr.state_pressed},press); drawable.addState(new int[]{-android.R.attr.state_pressed},normal); iv.setBackgroundDrawable(drawable); } /** * 从 drawable 获取图片 id 给 Button 添加 selector * @param context 调用方法的 Activity * @param idNormal 默认图片的 id * @param idPress 点击图片的 id * @param button 点击的 view */ public static void addSelectorFromDrawable(Context context , int idNormal, int idPress,Button button){ StateListDrawable drawable = new StateListDrawable(); Drawable normal = context.getResources().getDrawable(idNormal); Drawable press = context.getResources().getDrawable(idPress); drawable.addState(new int[]{android.R.attr.state_pressed},press); drawable.addState(new int[]{-android.R.attr.state_pressed},normal); button.setBackgroundDrawable(drawable); } /** * 从网络获取图片 给 ImageView 设置 selector * @param clazz 调用方法的类 * @param normalUrl 获取默认图片的链接 * @param pressUrl 获取点击图片的链接 * @param imageView 点击的 view */ public static void addSeletorFromNet(final Class clazz, final String normalUrl, final String pressUrl, final ImageView imageView){ new AsyncTask<Void,Void,Drawable>(){ @Override protected Drawable doInBackground(Void... params) { StateListDrawable drawable = new StateListDrawable(); Drawable normal = loadImageFromNet(clazz,normalUrl); Drawable press = loadImageFromNet(clazz, pressUrl); drawable.addState(new int[]{android.R.attr.state_pressed},press); drawable.addState(new int[]{-android.R.attr.state_pressed},normal); return drawable; } @Override protected void onPostExecute(Drawable drawable) { super.onPostExecute(drawable); imageView.setBackgroundDrawable(drawable); } }.execute(); } /** * * 从网络获取图片 给 Button 设置 selector * @param clazz 调用方法的类 * @param normalUrl 获取默认图片的链接 * @param pressUrl 获取点击图片的链接 * @param button 点击的 view */ public static void addSeletorFromNet(final Class clazz, final String normalUrl, final String pressUrl, final Button button){ new AsyncTask<Void,Void,Drawable>(){ @Override protected Drawable doInBackground(Void... params) { StateListDrawable drawable = new StateListDrawable(); Drawable normal = loadImageFromNet(clazz,normalUrl); Drawable press = loadImageFromNet(clazz, pressUrl); drawable.addState(new int[]{android.R.attr.state_pressed},press); drawable.addState(new int[]{-android.R.attr.state_pressed},normal); return drawable; } @Override protected void onPostExecute(Drawable drawable) { super.onPostExecute(drawable); button.setBackgroundDrawable(drawable); } }.execute(); } /** * 从网络获取图片 * @param clazz 调用方法的类 * @param netUrl 获取图片的链接 * @return 返回一个 drawable 类型的图片 */ private static Drawable loadImageFromNet(Class clazz, String netUrl) { Drawable drawable =null; try { drawable = Drawable.createFromStream(new URL(netUrl).openStream(), "netUrl.jpg"); } catch (IOException e) { MyLog.e(clazz.getName(),e.getMessage()); } return drawable; } }
相关文章推荐
- 如何动态生成Selector状态选择器
- Android动态生成Selector选择器代码
- 如何自定义`Selector`状态选择器
- Android开发笔记之代码动态生成图片状态选择器
- 如何利用ASP.NET技术动态生成HTML页面
- 如何利用ASP.NET技术动态生成HTML页面
- 动态增加的DropDownList如何保持状态
- 在Lua中如何动态生成两个函数的复合函数
- 如何动态加载web control在postback后记住视图状态(viewstate)
- 动态网站如何生成静态页面
- DataGrid动态生成模板列,模板列里面有一个TextBox,如何获取用户在TextBox里面输入的值啊?
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能 activeandbadboy [原作]
- 如何动态生成代码?
- 如何用Asp动态生成xml文件
- 如何动态生成静态页面
- SqlServer如何生成动态交叉表查询-zz
- 如何使用PHP动态生成饼状图、柱状图和折线图
- 如何动态生成页面控件,并取到值?(.net)
- ASP.NET中如何动态生成模板列(转)
- 如何用动态网页生成静态网页