apidemos ->views/lists/Activate items 学习

看apidemos的 activate items 很简单,就是继承ListActivity, 然后给使用了 api 11中一个系统样式的textView.

然而在 API level 11 之前运行会报错.如果在11之前实现 Activateitems给出的效果,那必然要给textView 的background属性设置一个press等状态的xml来,drawable其选中的背景.

然而apidemos 给出的很简单的实现:

android:background="?android:attr/activatedBackgroundIndicator"?

接下来就看看这段代码是如何实现的.

官方注释是这样的

public static final int activatedBackgroundIndicator

Added in API level 11

Drawable used as a background for activated items.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute
in the form "?[package:][type:]name".

Constant Value: 16843517 (0x010102fd)

首先, 我们找到sdk/platforms/android-17/data/res/values/attrs.xml打开该文件,可以看到这样的描述

<attr name="activatedBackgroundIndicator" format="reference" />

在打开

sdk/platforms/android-17/data/res/values/themes.xml

可以查找到:

<item name="activatedBackgroundIndicator">@android:drawable/activated_background</item><item name="activatedBackgroundIndicator">@android:drawable/activated_background_light</item><item name="activatedBackgroundIndicator">@android:drawable/activated_background_holo_dark</item><item name="activatedBackgroundIndicator">@android:drawable/activated_background_holo_light</item>

接着,打开

sdk/platforms/android-17/data/res/drawable/activated_background.xml

打开文件

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_activated="true" android:drawable="@android:drawable/list_selector_background_selected" />    <item android:drawable="@color/transparent" /></selector>

我们可以从drawable-hdpi文件夹下找到"list_selector_background_selected",它是9 patch png 格式的.

关于state可以参考官方链接

把相关的资源文件和色值等拷贝下来,用我说的老版本的方法可实现api level 11的效果.

下面是仿效果的demo部分代码

Main.java

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Main extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, R.layout.main, mStrings));

        // Tell the list view to show one checked/activated item at a time.
        getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        // Start with first item activated.
        // Make the newly clicked item the currently selected one.
        getListView().setItemChecked(0, true);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // Make the newly clicked item the currently selected one.
        getListView().setItemChecked(position, true);
    }

    public static final String[] mStrings = { "Abbaye de Belloc",
            "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
            "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu",
            "Airag", "Airedale", "Aisy Cendre", "Allgauer Emmentaler",
            "Alverca", "Ambert", "American Cheese", "Ami du Chambertin",
            "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell",
            "Aragon", "Ardi Gasna", "Ardrahan", "Armenian String",
            "Aromes au Gene de Marc", "Asadero", "Asiago", "Aubisque Pyrenees",
            "Autun", "Avaxtskyr", "Baby Swiss", "Babybel",
            "Baguette Laonnaise", "Bakers", "Baladi", "Balaton", "Bandal",
            "Banon", "Barry's Bay Cheddar", "Basing", "Basket Cheese",
            "Bath Cheese", "Bavarian Bergkase", "Baylough", "Beaufort",
            "Beauvoorde", "Beenleigh Blue", "Beer Cheese", "Bel Paese",
            "Bergader", "Bergere Bleue", "Berkswell", "Beyaz Peynir",
            "Bierkase", "Bishop Kennedy", "Blarney", "Bleu d'Auvergne",
            "Bleu de Gex", "Bleu de Laqueuille", "Bleu de Septmoncel",
            "Bleu Des Causses", "Blue", "Blue Castello", "Blue Rathgore",
            "Blue Vein (Australian)", "Blue Vein Cheeses", "Bocconcini",
            "Bocconcini (Australian)", "Boeren Leidenkaas", "Bonchester",
            "Bosworth", "Bougon", "Boule Du Roves", "Boulette d'Avesnes",
            "Boursault", "Boursin", "Bouyssou", "Bra", "Braudostur",
            "Meyer Vintage Gouda", "Mihalic Peynir", "Milleens", "Mimolette",
            "Mine-Gabhar", "Mini Baby Bells", "Mixte", "Molbo",
            "Monastery Cheeses", "Mondseer", "Mont D'or Lyonnais", "Montasio",
            "Monterey Jack", "Monterey Jack Dry", "Morbier",
            "Morbier Cru de Montagne", "Mothais a la Feuille", "Mozzarella",
            "Mozzarella (Australian)", "Mozzarella di Bufala",
            "Mozzarella Fresh, in water", "Mozzarella Rolls", "Munster",
            "Murol", "Mycella", "Myzithra", "Naboulsi", "Nantais",
            "Neufchatel", "Neufchatel (Australian)", "Niolo", "Nokkelost",
            "Northumberland", "Oaxaca", "Olde York", "Olivet au Foin",
            "Olivet Bleu", "Olivet Cendre", "Orkney Extra Mature Cheddar",
            "Orla", "Oschtjepka", "Ossau Fermier", "Ossau-Iraty", "Oszczypek",
            "Oxford Blue", "P'tit Berrichon", "Palet de Babligny", "Paneer",
            "Panela", "Pannerone", "Pant ys Gawn", "Parmesan (Parmigiano)",
            "Parmigiano Reggiano", "Pas de l'Escalette", "Passendale",
            "Pasteurized Processed", "Pate de Fromage", "Patefine Fort",
            "Pave d'Affinois", "Pave d'Auge", "Pave de Chirac",
            "Pave du Berry", "Pecorino", "Pecorino in Walnut Leaves",
            "Pecorino Romano", "Peekskill Pyramid", "Pelardon des Cevennes",
            "Pelardon des Corbieres", "Penamellera", "Penbryn", "Pencarreg",
            "Perail de Brebis", "Petit Morin", "Petit Pardou", "Petit-Suisse",
            "Picodon de Chevre", "Picos de Europa", "Piora",
            "Pithtviers au Foin", "Plateau de Herve", "Plymouth Cheese",
            "Podhalanski", "Poivre d'Ane", "Polkolbin", "Pont l'Eveque",
            "Port Nicholson", "Port-Salut", "Postel", "Pouligny-Saint-Pierre",
            "Pourly", "Prastost", "Pressato", "Prince-Jean",
            "Processed Cheddar", "Provolone", "Provolone (Australian)",
            "Pyengana Cheddar", "Pyramide", "Quark", "Quark (Australian)",
            "Quartirolo Lombardo", "Quatre-Vents", "Quercy Petit",
            "Queso Blanco", "Queso Blanco con Frutas --Pina y Mango",
            "Queso de Murcia", "Queso del Montsec", "Queso del Tietar",
            "Queso Fresco", "Queso Fresco (Adobera)", "Queso Iberico",
            "Queso Jalapeno", "Queso Majorero", "Queso Media Luna",
            "Queso Para Frier", "Queso Quesadilla", "Rabacal", "Raclette",
            "Ragusano", "Raschera", "Reblochon", "Red Leicester",
            "Regal de la Dombes", "Reggianito", "Remedou", "Requeson",
            "Richelieu", "Ricotta", "Ricotta (Australian)", "Ricotta Salata",
            "Ridder", "Rigotte", "Rocamadour", "Rollot", "Romano",
            "Romans Part Dieu", "Roncal", "Roquefort", "Roule",
            "Rouleau De Beaulieu", "Royalp Tilsit", "Rubens", "Rustinu",
            "Saaland Pfarr", "Saanenkaese", "Saga", "Sage Derby",
            "Sainte Maure", "Saint-Marcellin", "Saint-Nectaire",
            "Saint-Paulin", "Salers", "Samso", "San Simon", "Sancerre",
            "Sap Sago", "Sardo", "Sardo Egyptian", "Sbrinz", "Scamorza",
            "Schabzieger", "Schloss", "Selles sur Cher", "Selva", "Serat",
            "Seriously Strong Cheddar", "Serra da Estrela", "Sharpam",
            "Shelburne Cheddar", "Shropshire Blue", "Siraz", "Sirene",
            "Smoked Gouda", "Somerset Brie", "Sonoma Jack",
            "Sottocenare al Tartufo", "Soumaintrain", "Sourire Lozerien",
            "Spenwood", "Sraffordshire Organic", "St. Agur Blue Cheese",
            "Stilton", "Stinking Bishop", "String", "Sussex Slipcote",
            "Sveciaost", "Swaledale", "Sweet Style Swiss", "Swiss",
            "Zanetti Grana Padano", "Zanetti Parmigiano Reggiano" };
}

选中样式avtivate_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_default_pressed_holo_light" android:state_activated="true"/>
    <item android:drawable="@color/transparent"/>
</selector>

main.xml 该文件只需一个textview组件即可

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="24dp"
    android:gravity="center_vertical"
    android:background="@drawable/avtivate_background"
/>

apidemos ->views/lists/Activate items 学习,布布扣,bubuko.com

时间: 2024-08-11 03:30:14

apidemos ->views/lists/Activate items 学习的相关文章

Django之views.py视图函数学习

视图函数: 视图函数时存在django项目中的应用程的一个名为views.py的文件模块: 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 一个简单的视图: 下面是一个以HTML文档的形式返回当前日期和时间的视图: views.py 1 from django.http import HttpResponse 2 3 import datetime 4 5 def current_datetime(request): 6 7 now =

Apidemos--&gt;Views-Lists-Cursor(people)学习

Apidemos-->Views-Lists-Cursor(people)-主要用到了获取手机联系人信息,属于内容提供者的范畴,要想了解这方面的内容,可以参考官方docs /sdk/docs/guide/topics/providers/content-provider-basics.html 这里简单说下contentprovider; contentprovider可实现不同应用程序之间的数据共享. 它是程序之间进行数据交换的api. 当一个程序需要把自己的数据暴露给其他程序使用时,该应用程

ApiDemos--&gt;Views-lists-slow adapter学习

今天来按照apidemos提供的方法来实现slow loading的效果. 简单说下实现方法: 实现ListView.OnScrollListener ,监听到手势滑动的情况,当处于滚动状态时,将新显示的items 设置为Loading , 当离开屏幕时,才加载真实的数据. 设置数据时,要用到getFirstVisiblePosition属性来计算应该加载第几个item. 该小demo应该算是学习Android AsyncTask异步加载的基础. Main.java import android

ApiDemos--&amp;gt;Views-lists-slow adapter学习

今天来依照apidemos提供的方法来实现slow loading的效果. 简单说下实现方法: 实现ListView.OnScrollListener ,监听到手势滑动的情况,当处于滚动状态时,将新显示的items 设置为Loading , 当离开屏幕时,才载入真实的数据. 设置数据时,要用到getFirstVisiblePosition属性来计算应该载入第几个item. 该小demo应该算是学习Android AsyncTask异步载入的基础. Main.java import android

Apidemos--&amp;gt;Views-Lists-Cursor(people)学?

Apidemos-->Views-Lists-Cursor(people)-主要用到了获取手机联系人信息,属于内容提供者的范畴,要想了解这方面的内容,能够參考官方docs /sdk/docs/guide/topics/providers/content-provider-basics.html 这里简单说下contentprovider; contentprovider可实现不同应用程序之间的数据共享. 它是程序之间进行数据交换的api. 当一个程序须要把自己的数据暴露给其它程序使用时,该应用程

Django框架学习

Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python写成. Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 . Django采用了MVC的软件设计模式,即模型M,视图V和控制器C. Django 安装 在安装 Django 前,系统需要已经安装了Python的开发环境.接下来我们来具体看下不同系统下Dja

[0406]学习一个——利

前言 最近发现了Github的Student认证,本来想用来注册Digital Ocean搭个梯子,结果注册验证不能用VISA借记卡=~=. 那么在这漫长的清明节假期里,只有学习能满足空虚的内心(划掉),疲劳刷完了,只有学习一个! thinkful提供了HTML/CSS, JavaScript入门教程,Github说是一月,但thinkful发的邮件里只有2周..就三个单元,应该能学完吧(望天). 1. Unit 1 Html CSS 与 版本控制 1.1 网页基础 1.1.1 使用CodePe

深入浅出排序学习:写给程序员的算法系统开发实践

引言 我们正处在一个知识爆炸的时代,伴随着信息量的剧增和人工智能的蓬勃发展,互联网公司越发具有强烈的个性化.智能化信息展示的需求.而信息展示个性化的典型应用主要包括搜索列表.推荐列表.广告展示等等. 很多人不知道的是,看似简单的个性化信息展示背后,涉及大量的数据.算法以及工程架构技术,这些足以让大部分互联网公司望而却步.究其根本原因,个性化信息展示背后的技术是排序学习问题(Learning to Rank).市面上大部分关于排序学习的文章,要么偏算法.要么偏工程.虽然算法方面有一些系统性的介绍文

Django 表单

学习参考:http://www.runoob.com/django/django-form.html HTTP 请求 HTTP协议以"请求-回复"的方式工作.客户发送请求时,可以在请求中附加数据.服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务. GET 方法 我们在之前项目的C:\Users\XCC\HelloWorld\HelloWorld路径下创建一个 search.py 文件,用于接收用户的请求: # -*- coding: utf-8 -*- fro