auto import from //depot/cupcake/@135843
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
|
||||
public class Animation1 extends Activity implements View.OnClickListener {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.animation_1);
|
||||
|
||||
View loginButton = findViewById(R.id.login);
|
||||
loginButton.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
|
||||
findViewById(R.id.pw).startAnimation(shake);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.ViewFlipper;
|
||||
|
||||
|
||||
public class Animation2 extends Activity implements
|
||||
AdapterView.OnItemSelectedListener {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.animation_2);
|
||||
|
||||
mFlipper = ((ViewFlipper) this.findViewById(R.id.flipper));
|
||||
mFlipper.startFlipping();
|
||||
|
||||
Spinner s = (Spinner) findViewById(R.id.spinner);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_spinner_item, mStrings);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
s.setAdapter(adapter);
|
||||
s.setOnItemSelectedListener(this);
|
||||
}
|
||||
|
||||
public void onItemSelected(AdapterView parent, View v, int position, long id) {
|
||||
switch (position) {
|
||||
|
||||
case 0:
|
||||
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
|
||||
R.anim.push_up_in));
|
||||
mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
|
||||
R.anim.push_up_out));
|
||||
break;
|
||||
case 1:
|
||||
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
|
||||
R.anim.push_left_in));
|
||||
mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
|
||||
R.anim.push_left_out));
|
||||
break;
|
||||
case 2:
|
||||
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
|
||||
android.R.anim.fade_in));
|
||||
mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
|
||||
android.R.anim.fade_out));
|
||||
break;
|
||||
default:
|
||||
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
|
||||
R.anim.hyperspace_in));
|
||||
mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
|
||||
R.anim.hyperspace_out));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void onNothingSelected(AdapterView parent) {
|
||||
}
|
||||
|
||||
private String[] mStrings = {
|
||||
"Push up", "Push left", "Cross fade", "Hyperspace"};
|
||||
|
||||
private ViewFlipper mFlipper;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
public class AutoComplete1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.autocomplete_1);
|
||||
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_dropdown_item_1line, COUNTRIES);
|
||||
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit);
|
||||
textView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
static final String[] COUNTRIES = new String[] {
|
||||
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
|
||||
"Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
|
||||
"Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
|
||||
"Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
|
||||
"Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
|
||||
"Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
|
||||
"British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
|
||||
"Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
|
||||
"Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
|
||||
"Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
|
||||
"Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
|
||||
"Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
|
||||
"East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
|
||||
"Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
|
||||
"Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
|
||||
"French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
|
||||
"Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
|
||||
"Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
|
||||
"Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
|
||||
"Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
|
||||
"Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
|
||||
"Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
|
||||
"Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
|
||||
"Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
|
||||
"Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
|
||||
"Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
|
||||
"Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
|
||||
"Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
|
||||
"Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
|
||||
"Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
|
||||
"Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
|
||||
"Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
|
||||
"Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
|
||||
"Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
|
||||
"Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
|
||||
"The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
|
||||
"Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
|
||||
"Ukraine", "United Arab Emirates", "United Kingdom",
|
||||
"United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
|
||||
"Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
|
||||
"Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
|
||||
|
||||
public class AutoComplete2 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.autocomplete_2);
|
||||
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_dropdown_item_1line,
|
||||
AutoComplete1.COUNTRIES);
|
||||
AutoCompleteTextView textView = (AutoCompleteTextView)
|
||||
findViewById(R.id.edit);
|
||||
textView.setAdapter(adapter);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
|
||||
|
||||
public class AutoComplete3 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.autocomplete_3);
|
||||
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_dropdown_item_1line,
|
||||
AutoComplete1.COUNTRIES);
|
||||
AutoCompleteTextView textView = (AutoCompleteTextView)
|
||||
findViewById(R.id.edit);
|
||||
textView.setAdapter(adapter);
|
||||
textView = (AutoCompleteTextView) findViewById(R.id.edit2);
|
||||
textView.setAdapter(adapter);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Contacts;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.CursorAdapter;
|
||||
import android.widget.Filterable;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class AutoComplete4 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.autocomplete_4);
|
||||
|
||||
ContentResolver content = getContentResolver();
|
||||
Cursor cursor = content.query(Contacts.People.CONTENT_URI,
|
||||
PEOPLE_PROJECTION, null, null, Contacts.People.DEFAULT_SORT_ORDER);
|
||||
ContactListAdapter adapter = new ContactListAdapter(this, cursor);
|
||||
|
||||
AutoCompleteTextView textView = (AutoCompleteTextView)
|
||||
findViewById(R.id.edit);
|
||||
textView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
// XXX compiler bug in javac 1.5.0_07-164, we need to implement Filterable
|
||||
// to make compilation work
|
||||
public static class ContactListAdapter extends CursorAdapter implements Filterable {
|
||||
public ContactListAdapter(Context context, Cursor c) {
|
||||
super(context, c);
|
||||
mContent = context.getContentResolver();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View newView(Context context, Cursor cursor, ViewGroup parent) {
|
||||
final LayoutInflater inflater = LayoutInflater.from(context);
|
||||
final TextView view = (TextView) inflater.inflate(
|
||||
android.R.layout.simple_dropdown_item_1line, parent, false);
|
||||
view.setText(cursor.getString(5));
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindView(View view, Context context, Cursor cursor) {
|
||||
((TextView) view).setText(cursor.getString(5));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String convertToString(Cursor cursor) {
|
||||
return cursor.getString(5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
|
||||
if (getFilterQueryProvider() != null) {
|
||||
return getFilterQueryProvider().runQuery(constraint);
|
||||
}
|
||||
|
||||
StringBuilder buffer = null;
|
||||
String[] args = null;
|
||||
if (constraint != null) {
|
||||
buffer = new StringBuilder();
|
||||
buffer.append("UPPER(");
|
||||
buffer.append(Contacts.ContactMethods.NAME);
|
||||
buffer.append(") GLOB ?");
|
||||
args = new String[] { constraint.toString().toUpperCase() + "*" };
|
||||
}
|
||||
|
||||
return mContent.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION,
|
||||
buffer == null ? null : buffer.toString(), args,
|
||||
Contacts.People.DEFAULT_SORT_ORDER);
|
||||
}
|
||||
|
||||
private ContentResolver mContent;
|
||||
}
|
||||
|
||||
private static final String[] PEOPLE_PROJECTION = new String[] {
|
||||
Contacts.People._ID,
|
||||
Contacts.People.PRIMARY_PHONE_ID,
|
||||
Contacts.People.TYPE,
|
||||
Contacts.People.NUMBER,
|
||||
Contacts.People.LABEL,
|
||||
Contacts.People.NAME,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ContentResolver;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Contacts;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
|
||||
public class AutoComplete5 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.autocomplete_5);
|
||||
|
||||
ContentResolver content = getContentResolver();
|
||||
Cursor cursor = content.query(Contacts.People.CONTENT_URI,
|
||||
PEOPLE_PROJECTION, null, null, Contacts.People.DEFAULT_SORT_ORDER);
|
||||
AutoComplete4.ContactListAdapter adapter =
|
||||
new AutoComplete4.ContactListAdapter(this, cursor);
|
||||
|
||||
AutoCompleteTextView textView = (AutoCompleteTextView)
|
||||
findViewById(R.id.edit);
|
||||
textView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
private static final String[] PEOPLE_PROJECTION = new String[] {
|
||||
Contacts.People._ID,
|
||||
Contacts.People.PRIMARY_PHONE_ID,
|
||||
Contacts.People.TYPE,
|
||||
Contacts.People.NUMBER,
|
||||
Contacts.People.LABEL,
|
||||
Contacts.People.NAME
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.MultiAutoCompleteTextView;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
public class AutoComplete6 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.autocomplete_6);
|
||||
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_dropdown_item_1line, COUNTRIES);
|
||||
MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.edit);
|
||||
textView.setAdapter(adapter);
|
||||
textView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
|
||||
}
|
||||
|
||||
static final String[] COUNTRIES = new String[] {
|
||||
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
|
||||
"Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
|
||||
"Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
|
||||
"Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
|
||||
"Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
|
||||
"Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
|
||||
"British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
|
||||
"Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
|
||||
"Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
|
||||
"Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
|
||||
"Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
|
||||
"Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
|
||||
"East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
|
||||
"Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
|
||||
"Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
|
||||
"French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
|
||||
"Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
|
||||
"Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
|
||||
"Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
|
||||
"Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
|
||||
"Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
|
||||
"Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
|
||||
"Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
|
||||
"Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
|
||||
"Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
|
||||
"Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
|
||||
"Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
|
||||
"Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
|
||||
"Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
|
||||
"Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
|
||||
"Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
|
||||
"Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
|
||||
"Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
|
||||
"Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
|
||||
"Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
|
||||
"The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
|
||||
"Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
|
||||
"Ukraine", "United Arab Emirates", "United Kingdom",
|
||||
"United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
|
||||
"Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
|
||||
"Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Baseline alignment in LinearLayout.
|
||||
*/
|
||||
public class Baseline1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.baseline_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Baseline alignment in LinearLayout with a BOTTOM gravity.
|
||||
*/
|
||||
public class Baseline2 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.baseline_2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Baseline alignement in LinearLayout with a center_vertical gravity. This sample shows that
|
||||
* using a center_vertical gravity disables baseline alignment.
|
||||
*/
|
||||
public class Baseline3 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.baseline_3);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Baseline alignment in LinearLayout with mixed gravities.
|
||||
*/
|
||||
public class Baseline4 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.baseline_4);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Baseline alignment in RelativeLayout.
|
||||
*/
|
||||
public class Baseline6 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.baseline_6);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Baseline alignment in RelativeLayout with various font weights.
|
||||
*/
|
||||
public class Baseline7 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.baseline_7);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* Baseline alignment includes elements within nested vertical
|
||||
* {@link android.widget.LinearLayout}s.
|
||||
*/
|
||||
public class BaselineNested1 extends Activity {
|
||||
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.baseline_nested_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* Baseline alignment includes an element within a nested horizontal
|
||||
* {@link android.widget.LinearLayout}.
|
||||
*/
|
||||
public class BaselineNested2 extends Activity {
|
||||
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.baseline_nested_2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* Baseline alignment includes a {@link android.widget.LinearLayout}
|
||||
* within another {@link android.widget.LinearLayout}.
|
||||
*/
|
||||
public class BaselineNested3 extends Activity {
|
||||
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.baseline_nested_3);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* A gallery of the different styles of buttons.
|
||||
*/
|
||||
public class Buttons1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.buttons_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.Chronometer;
|
||||
|
||||
public class ChronometerDemo extends Activity {
|
||||
Chronometer mChronometer;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.chronometer);
|
||||
|
||||
Button button;
|
||||
|
||||
mChronometer = (Chronometer) findViewById(R.id.chronometer);
|
||||
|
||||
// Watch for button clicks.
|
||||
button = (Button) findViewById(R.id.start);
|
||||
button.setOnClickListener(mStartListener);
|
||||
|
||||
button = (Button) findViewById(R.id.stop);
|
||||
button.setOnClickListener(mStopListener);
|
||||
|
||||
button = (Button) findViewById(R.id.reset);
|
||||
button.setOnClickListener(mResetListener);
|
||||
|
||||
button = (Button) findViewById(R.id.set_format);
|
||||
button.setOnClickListener(mSetFormatListener);
|
||||
|
||||
button = (Button) findViewById(R.id.clear_format);
|
||||
button.setOnClickListener(mClearFormatListener);
|
||||
}
|
||||
|
||||
View.OnClickListener mStartListener = new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mChronometer.start();
|
||||
}
|
||||
};
|
||||
|
||||
View.OnClickListener mStopListener = new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mChronometer.stop();
|
||||
}
|
||||
};
|
||||
|
||||
View.OnClickListener mResetListener = new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mChronometer.setBase(SystemClock.elapsedRealtime());
|
||||
}
|
||||
};
|
||||
|
||||
View.OnClickListener mSetFormatListener = new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mChronometer.setFormat("Formatted time (%s)");
|
||||
}
|
||||
};
|
||||
|
||||
View.OnClickListener mClearFormatListener = new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mChronometer.setFormat(null);
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* A gallery of basic controls: Button, EditText, RadioButton, Checkbox,
|
||||
* Spinner. This example uses the light theme.
|
||||
*/
|
||||
public class Controls1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.controls_1);
|
||||
|
||||
Spinner s1 = (Spinner) findViewById(R.id.spinner1);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_spinner_item, mStrings);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
s1.setAdapter(adapter);
|
||||
}
|
||||
|
||||
private static final String[] mStrings = {
|
||||
"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* A gallery of basic controls: Button, EditText, RadioButton, Checkbox,
|
||||
* Spinner. This example uses the default theme.
|
||||
*/
|
||||
public class Controls2 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.controls_1);
|
||||
|
||||
Spinner s1 = (Spinner) findViewById(R.id.spinner1);
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_spinner_item, mStrings);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
s1.setAdapter(adapter);
|
||||
}
|
||||
|
||||
private static final String[] mStrings = {
|
||||
"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates creating a Screen that uses custom views. This example uses
|
||||
* {@link com.example.android.apis.view.LabelView}, which is defined in
|
||||
* SDK/src/com/example/android/apis/view/LabelView.java.
|
||||
*
|
||||
*/
|
||||
public class CustomView1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.custom_view_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.TimePickerDialog;
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Button;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.TimePicker;
|
||||
import android.view.View;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
/**
|
||||
* Basic example of using date and time widgets, including
|
||||
* {@link android.app.TimePickerDialog} and {@link android.widget.DatePicker}.
|
||||
*
|
||||
* Also provides a good example of using {@link Activity#onCreateDialog},
|
||||
* {@link Activity#onPrepareDialog} and {@link Activity#showDialog} to have the
|
||||
* activity automatically save and restore the state of the dialogs.
|
||||
*/
|
||||
public class DateWidgets1 extends Activity {
|
||||
|
||||
// where we display the selected date and time
|
||||
private TextView mDateDisplay;
|
||||
|
||||
// date and time
|
||||
private int mYear;
|
||||
private int mMonth;
|
||||
private int mDay;
|
||||
private int mHour;
|
||||
private int mMinute;
|
||||
|
||||
static final int TIME_DIALOG_ID = 0;
|
||||
static final int DATE_DIALOG_ID = 1;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.date_widgets_example_1);
|
||||
|
||||
mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
|
||||
|
||||
Button pickDate = (Button) findViewById(R.id.pickDate);
|
||||
pickDate.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
showDialog(DATE_DIALOG_ID);
|
||||
}
|
||||
});
|
||||
|
||||
Button pickTime = (Button) findViewById(R.id.pickTime);
|
||||
pickTime.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
showDialog(TIME_DIALOG_ID);
|
||||
}
|
||||
});
|
||||
|
||||
final Calendar c = Calendar.getInstance();
|
||||
mYear = c.get(Calendar.YEAR);
|
||||
mMonth = c.get(Calendar.MONTH);
|
||||
mDay = c.get(Calendar.DAY_OF_MONTH);
|
||||
mHour = c.get(Calendar.HOUR_OF_DAY);
|
||||
mMinute = c.get(Calendar.MINUTE);
|
||||
|
||||
updateDisplay();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Dialog onCreateDialog(int id) {
|
||||
switch (id) {
|
||||
case TIME_DIALOG_ID:
|
||||
return new TimePickerDialog(this,
|
||||
mTimeSetListener, mHour, mMinute, false);
|
||||
case DATE_DIALOG_ID:
|
||||
return new DatePickerDialog(this,
|
||||
mDateSetListener,
|
||||
mYear, mMonth, mDay);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPrepareDialog(int id, Dialog dialog) {
|
||||
switch (id) {
|
||||
case TIME_DIALOG_ID:
|
||||
((TimePickerDialog) dialog).updateTime(mHour, mMinute);
|
||||
break;
|
||||
case DATE_DIALOG_ID:
|
||||
((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateDisplay() {
|
||||
mDateDisplay.setText(
|
||||
new StringBuilder()
|
||||
// Month is 0 based so add 1
|
||||
.append(mMonth + 1).append("-")
|
||||
.append(mDay).append("-")
|
||||
.append(mYear).append(" ")
|
||||
.append(pad(mHour)).append(":")
|
||||
.append(pad(mMinute)));
|
||||
}
|
||||
|
||||
private DatePickerDialog.OnDateSetListener mDateSetListener =
|
||||
new DatePickerDialog.OnDateSetListener() {
|
||||
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear,
|
||||
int dayOfMonth) {
|
||||
mYear = year;
|
||||
mMonth = monthOfYear;
|
||||
mDay = dayOfMonth;
|
||||
updateDisplay();
|
||||
}
|
||||
};
|
||||
|
||||
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
|
||||
new TimePickerDialog.OnTimeSetListener() {
|
||||
|
||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||
mHour = hourOfDay;
|
||||
mMinute = minute;
|
||||
updateDisplay();
|
||||
}
|
||||
};
|
||||
|
||||
private static String pad(int c) {
|
||||
if (c >= 10)
|
||||
return String.valueOf(c);
|
||||
else
|
||||
return "0" + String.valueOf(c);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TimePicker;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class DateWidgets2 extends Activity {
|
||||
|
||||
// where we display the selected date and time
|
||||
private TextView mTimeDisplay;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.date_widgets_example_2);
|
||||
|
||||
TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker);
|
||||
timePicker.setCurrentHour(12);
|
||||
timePicker.setCurrentMinute(15);
|
||||
|
||||
mTimeDisplay = (TextView) findViewById(R.id.dateDisplay);
|
||||
|
||||
updateDisplay(12, 15);
|
||||
|
||||
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
|
||||
|
||||
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
|
||||
updateDisplay(hourOfDay, minute);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateDisplay(int hourOfDay, int minute) {
|
||||
mTimeDisplay.setText(
|
||||
new StringBuilder()
|
||||
.append(pad(hourOfDay)).append(":")
|
||||
.append(pad(minute)));
|
||||
}
|
||||
|
||||
private static String pad(int c) {
|
||||
if (c >= 10)
|
||||
return String.valueOf(c);
|
||||
else
|
||||
return "0" + String.valueOf(c);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ExpandableListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.Gravity;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.ViewGroup.MarginLayoutParams;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.BaseExpandableListAdapter;
|
||||
import android.widget.ExpandableListAdapter;
|
||||
import android.widget.ExpandableListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* Demonstrates expandable lists using a custom {@link ExpandableListAdapter}
|
||||
* from {@link BaseExpandableListAdapter}.
|
||||
*/
|
||||
public class ExpandableList1 extends ExpandableListActivity {
|
||||
|
||||
ExpandableListAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Set up our adapter
|
||||
mAdapter = new MyExpandableListAdapter();
|
||||
setListAdapter(mAdapter);
|
||||
registerForContextMenu(getExpandableListView());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
menu.setHeaderTitle("Sample menu");
|
||||
menu.add(0, 0, 0, R.string.expandable_list_sample_action);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
|
||||
|
||||
String title = ((TextView) info.targetView).getText().toString();
|
||||
|
||||
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
|
||||
if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
|
||||
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
|
||||
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
|
||||
Toast.makeText(this, title + ": Child " + childPos + " clicked in group " + groupPos,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
|
||||
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
|
||||
Toast.makeText(this, title + ": Group " + groupPos + " clicked", Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple adapter which maintains an ArrayList of photo resource Ids.
|
||||
* Each photo is displayed as an image. This adapter supports clearing the
|
||||
* list of photos and adding a new photo.
|
||||
*
|
||||
*/
|
||||
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
|
||||
// Sample data set. children[i] contains the children (String[]) for groups[i].
|
||||
private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" };
|
||||
private String[][] children = {
|
||||
{ "Arnold", "Barry", "Chuck", "David" },
|
||||
{ "Ace", "Bandit", "Cha-Cha", "Deuce" },
|
||||
{ "Fluffy", "Snuggles" },
|
||||
{ "Goldy", "Bubbles" }
|
||||
};
|
||||
|
||||
public Object getChild(int groupPosition, int childPosition) {
|
||||
return children[groupPosition][childPosition];
|
||||
}
|
||||
|
||||
public long getChildId(int groupPosition, int childPosition) {
|
||||
return childPosition;
|
||||
}
|
||||
|
||||
public int getChildrenCount(int groupPosition) {
|
||||
return children[groupPosition].length;
|
||||
}
|
||||
|
||||
public TextView getGenericView() {
|
||||
// Layout parameters for the ExpandableListView
|
||||
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
|
||||
ViewGroup.LayoutParams.FILL_PARENT, 64);
|
||||
|
||||
TextView textView = new TextView(ExpandableList1.this);
|
||||
textView.setLayoutParams(lp);
|
||||
// Center the text vertically
|
||||
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
|
||||
// Set the text starting position
|
||||
textView.setPadding(36, 0, 0, 0);
|
||||
return textView;
|
||||
}
|
||||
|
||||
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
|
||||
View convertView, ViewGroup parent) {
|
||||
TextView textView = getGenericView();
|
||||
textView.setText(getChild(groupPosition, childPosition).toString());
|
||||
return textView;
|
||||
}
|
||||
|
||||
public Object getGroup(int groupPosition) {
|
||||
return groups[groupPosition];
|
||||
}
|
||||
|
||||
public int getGroupCount() {
|
||||
return groups.length;
|
||||
}
|
||||
|
||||
public long getGroupId(int groupPosition) {
|
||||
return groupPosition;
|
||||
}
|
||||
|
||||
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
|
||||
ViewGroup parent) {
|
||||
TextView textView = getGenericView();
|
||||
textView.setText(getGroup(groupPosition).toString());
|
||||
return textView;
|
||||
}
|
||||
|
||||
public boolean isChildSelectable(int groupPosition, int childPosition) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean hasStableIds() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ExpandableListActivity;
|
||||
import android.content.ContentUris;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Contacts.People;
|
||||
import android.widget.ExpandableListAdapter;
|
||||
import android.widget.SimpleCursorTreeAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates expandable lists backed by Cursors
|
||||
*/
|
||||
public class ExpandableList2 extends ExpandableListActivity {
|
||||
private int mGroupIdColumnIndex;
|
||||
|
||||
private String mPhoneNumberProjection[] = new String[] {
|
||||
People.Phones._ID, People.Phones.NUMBER
|
||||
};
|
||||
|
||||
|
||||
private ExpandableListAdapter mAdapter;
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Query for people
|
||||
Cursor groupCursor = managedQuery(People.CONTENT_URI,
|
||||
new String[] {People._ID, People.NAME}, null, null, null);
|
||||
|
||||
// Cache the ID column index
|
||||
mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow(People._ID);
|
||||
|
||||
// Set up our adapter
|
||||
mAdapter = new MyExpandableListAdapter(groupCursor,
|
||||
this,
|
||||
android.R.layout.simple_expandable_list_item_1,
|
||||
android.R.layout.simple_expandable_list_item_1,
|
||||
new String[] {People.NAME}, // Name for group layouts
|
||||
new int[] {android.R.id.text1},
|
||||
new String[] {People.NUMBER}, // Number for child layouts
|
||||
new int[] {android.R.id.text1});
|
||||
setListAdapter(mAdapter);
|
||||
}
|
||||
|
||||
public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
|
||||
|
||||
public MyExpandableListAdapter(Cursor cursor, Context context, int groupLayout,
|
||||
int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
|
||||
int[] childrenTo) {
|
||||
super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childrenFrom,
|
||||
childrenTo);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Cursor getChildrenCursor(Cursor groupCursor) {
|
||||
// Given the group, we return a cursor for all the children within that group
|
||||
|
||||
// Return a cursor that points to this contact's phone numbers
|
||||
Uri.Builder builder = People.CONTENT_URI.buildUpon();
|
||||
ContentUris.appendId(builder, groupCursor.getLong(mGroupIdColumnIndex));
|
||||
builder.appendEncodedPath(People.Phones.CONTENT_DIRECTORY);
|
||||
Uri phoneNumbersUri = builder.build();
|
||||
|
||||
// The returned Cursor MUST be managed by us, so we use Activity's helper
|
||||
// functionality to manage it for us.
|
||||
return managedQuery(phoneNumbersUri, mPhoneNumberProjection, null, null, null);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ExpandableListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ExpandableListAdapter;
|
||||
import android.widget.SimpleExpandableListAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates expandable lists backed by a Simple Map-based adapter
|
||||
*/
|
||||
public class ExpandableList3 extends ExpandableListActivity {
|
||||
private static final String NAME = "NAME";
|
||||
private static final String IS_EVEN = "IS_EVEN";
|
||||
|
||||
private ExpandableListAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
|
||||
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
|
||||
for (int i = 0; i < 20; i++) {
|
||||
Map<String, String> curGroupMap = new HashMap<String, String>();
|
||||
groupData.add(curGroupMap);
|
||||
curGroupMap.put(NAME, "Group " + i);
|
||||
curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");
|
||||
|
||||
List<Map<String, String>> children = new ArrayList<Map<String, String>>();
|
||||
for (int j = 0; j < 15; j++) {
|
||||
Map<String, String> curChildMap = new HashMap<String, String>();
|
||||
children.add(curChildMap);
|
||||
curChildMap.put(NAME, "Child " + j);
|
||||
curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
|
||||
}
|
||||
childData.add(children);
|
||||
}
|
||||
|
||||
// Set up our adapter
|
||||
mAdapter = new SimpleExpandableListAdapter(
|
||||
this,
|
||||
groupData,
|
||||
android.R.layout.simple_expandable_list_item_1,
|
||||
new String[] { NAME, IS_EVEN },
|
||||
new int[] { android.R.id.text1, android.R.id.text2 },
|
||||
childData,
|
||||
android.R.layout.simple_expandable_list_item_2,
|
||||
new String[] { NAME, IS_EVEN },
|
||||
new int[] { android.R.id.text1, android.R.id.text2 }
|
||||
);
|
||||
setListAdapter(mAdapter);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates the use of non-focusable views.
|
||||
*/
|
||||
public class Focus1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.focus_1);
|
||||
|
||||
WebView webView = (WebView) findViewById(R.id.rssWebView);
|
||||
webView.loadData(
|
||||
"<html><body>Can I focus?<br /><a href=\"#\">No I cannot!</a>.</body></html>",
|
||||
"text/html", "utf-8");
|
||||
|
||||
ListView listView = (ListView) findViewById(R.id.rssListView);
|
||||
listView.setAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1,
|
||||
new String[] {"Ars Technica", "Slashdot", "GameKult"}));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class Focus2 extends Activity {
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.focus_2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Button;
|
||||
import com.example.android.apis.R;
|
||||
|
||||
public class Focus3 extends Activity {
|
||||
private Button mTopButton;
|
||||
private Button mBottomButton;
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.focus_3);
|
||||
|
||||
mTopButton = (Button) findViewById(R.id.top);
|
||||
mBottomButton = (Button) findViewById(R.id.bottom);
|
||||
}
|
||||
|
||||
public Button getTopButton() {
|
||||
return mTopButton;
|
||||
}
|
||||
|
||||
public Button getBottomButton() {
|
||||
return mBottomButton;
|
||||
}
|
||||
}
|
||||
125
samples/ApiDemos/src/com/example/android/apis/view/Gallery1.java
Normal file
125
samples/ApiDemos/src/com/example/android/apis/view/Gallery1.java
Normal file
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.os.Bundle;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Gallery;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
|
||||
public class Gallery1 extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gallery_1);
|
||||
|
||||
// Reference the Gallery view
|
||||
Gallery g = (Gallery) findViewById(R.id.gallery);
|
||||
// Set the adapter to our custom adapter (below)
|
||||
g.setAdapter(new ImageAdapter(this));
|
||||
|
||||
// Set a item click listener, and just Toast the clicked position
|
||||
g.setOnItemClickListener(new OnItemClickListener() {
|
||||
public void onItemClick(AdapterView parent, View v, int position, long id) {
|
||||
Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
|
||||
// We also want to show context menu for longpressed items in the gallery
|
||||
registerForContextMenu(g);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
||||
menu.add(R.string.gallery_2_text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
|
||||
Toast.makeText(this, "Longpress: " + info.position, Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
public class ImageAdapter extends BaseAdapter {
|
||||
int mGalleryItemBackground;
|
||||
|
||||
public ImageAdapter(Context c) {
|
||||
mContext = c;
|
||||
// See res/values/attrs.xml for the <declare-styleable> that defines
|
||||
// Gallery1.
|
||||
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
|
||||
mGalleryItemBackground = a.getResourceId(
|
||||
R.styleable.Gallery1_android_galleryItemBackground, 0);
|
||||
a.recycle();
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return mImageIds.length;
|
||||
}
|
||||
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i = new ImageView(mContext);
|
||||
|
||||
i.setImageResource(mImageIds[position]);
|
||||
i.setScaleType(ImageView.ScaleType.FIT_XY);
|
||||
i.setLayoutParams(new Gallery.LayoutParams(136, 88));
|
||||
|
||||
// The preferred Gallery item background
|
||||
i.setBackgroundResource(mGalleryItemBackground);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private Integer[] mImageIds = {
|
||||
R.drawable.gallery_photo_1,
|
||||
R.drawable.gallery_photo_2,
|
||||
R.drawable.gallery_photo_3,
|
||||
R.drawable.gallery_photo_4,
|
||||
R.drawable.gallery_photo_5,
|
||||
R.drawable.gallery_photo_6,
|
||||
R.drawable.gallery_photo_7,
|
||||
R.drawable.gallery_photo_8
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.provider.Contacts.People;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Gallery;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
import android.widget.SpinnerAdapter;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
public class Gallery2 extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gallery_2);
|
||||
|
||||
// Get a cursor with all people
|
||||
Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
|
||||
startManagingCursor(c);
|
||||
|
||||
SpinnerAdapter adapter = new SimpleCursorAdapter(this,
|
||||
// Use a template that displays a text view
|
||||
android.R.layout.simple_gallery_item,
|
||||
// Give the cursor to the list adatper
|
||||
c,
|
||||
// Map the NAME column in the people database to...
|
||||
new String[] {People.NAME},
|
||||
// The "text1" view defined in the XML template
|
||||
new int[] { android.R.id.text1 });
|
||||
|
||||
Gallery g = (Gallery) findViewById(R.id.gallery);
|
||||
g.setAdapter(adapter);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
//Need the following import to get access to the app resources, since this
|
||||
//class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
public class Grid1 extends Activity {
|
||||
|
||||
GridView mGrid;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
loadApps(); // do this in onresume?
|
||||
|
||||
setContentView(R.layout.grid_1);
|
||||
mGrid = (GridView) findViewById(R.id.myGrid);
|
||||
mGrid.setAdapter(new AppsAdapter());
|
||||
}
|
||||
|
||||
private List<ResolveInfo> mApps;
|
||||
|
||||
private void loadApps() {
|
||||
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
|
||||
}
|
||||
|
||||
public class AppsAdapter extends BaseAdapter {
|
||||
public AppsAdapter() {
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i;
|
||||
|
||||
if (convertView == null) {
|
||||
i = new ImageView(Grid1.this);
|
||||
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
i.setLayoutParams(new GridView.LayoutParams(50, 50));
|
||||
} else {
|
||||
i = (ImageView) convertView;
|
||||
}
|
||||
|
||||
ResolveInfo info = mApps.get(position);
|
||||
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
public final int getCount() {
|
||||
return mApps.size();
|
||||
}
|
||||
|
||||
public final Object getItem(int position) {
|
||||
return mApps.get(position);
|
||||
}
|
||||
|
||||
public final long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
166
samples/ApiDemos/src/com/example/android/apis/view/Grid2.java
Normal file
166
samples/ApiDemos/src/com/example/android/apis/view/Grid2.java
Normal file
@@ -0,0 +1,166 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
/**
|
||||
* A grid that displays a set of framed photos.
|
||||
*
|
||||
*/
|
||||
public class Grid2 extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.grid_2);
|
||||
|
||||
GridView g = (GridView) findViewById(R.id.myGrid);
|
||||
g.setAdapter(new ImageAdapter(this));
|
||||
}
|
||||
|
||||
public class ImageAdapter extends BaseAdapter {
|
||||
public ImageAdapter(Context c) {
|
||||
mContext = c;
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return mThumbIds.length;
|
||||
}
|
||||
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView imageView;
|
||||
if (convertView == null) {
|
||||
imageView = new ImageView(mContext);
|
||||
imageView.setLayoutParams(new GridView.LayoutParams(45, 45));
|
||||
imageView.setAdjustViewBounds(false);
|
||||
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
|
||||
imageView.setPadding(8, 8, 8, 8);
|
||||
} else {
|
||||
imageView = (ImageView) convertView;
|
||||
}
|
||||
|
||||
imageView.setImageResource(mThumbIds[position]);
|
||||
|
||||
return imageView;
|
||||
}
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private Integer[] mThumbIds = {
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7,
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
public class ImageButton1 extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.image_button_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Gallery;
|
||||
import android.widget.Gallery.LayoutParams;
|
||||
import android.widget.ImageSwitcher;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ViewSwitcher;
|
||||
|
||||
|
||||
public class ImageSwitcher1 extends Activity implements
|
||||
AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
|
||||
setContentView(R.layout.image_switcher_1);
|
||||
|
||||
mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
|
||||
mSwitcher.setFactory(this);
|
||||
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
|
||||
android.R.anim.fade_in));
|
||||
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
|
||||
android.R.anim.fade_out));
|
||||
|
||||
Gallery g = (Gallery) findViewById(R.id.gallery);
|
||||
g.setAdapter(new ImageAdapter(this));
|
||||
g.setOnItemSelectedListener(this);
|
||||
}
|
||||
|
||||
public void onItemSelected(AdapterView parent, View v, int position, long id) {
|
||||
mSwitcher.setImageResource(mImageIds[position]);
|
||||
}
|
||||
|
||||
public void onNothingSelected(AdapterView parent) {
|
||||
}
|
||||
|
||||
public View makeView() {
|
||||
ImageView i = new ImageView(this);
|
||||
i.setBackgroundColor(0xFF000000);
|
||||
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
|
||||
LayoutParams.FILL_PARENT));
|
||||
return i;
|
||||
}
|
||||
|
||||
private ImageSwitcher mSwitcher;
|
||||
|
||||
public class ImageAdapter extends BaseAdapter {
|
||||
public ImageAdapter(Context c) {
|
||||
mContext = c;
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return mThumbIds.length;
|
||||
}
|
||||
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i = new ImageView(mContext);
|
||||
|
||||
i.setImageResource(mThumbIds[position]);
|
||||
i.setAdjustViewBounds(true);
|
||||
i.setLayoutParams(new Gallery.LayoutParams(
|
||||
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
|
||||
i.setBackgroundResource(R.drawable.picture_frame);
|
||||
return i;
|
||||
}
|
||||
|
||||
private Context mContext;
|
||||
|
||||
}
|
||||
|
||||
private Integer[] mThumbIds = {
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1,
|
||||
R.drawable.sample_thumb_2, R.drawable.sample_thumb_3,
|
||||
R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7};
|
||||
|
||||
private Integer[] mImageIds = {
|
||||
R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2,
|
||||
R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5,
|
||||
R.drawable.sample_6, R.drawable.sample_7};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates setting size constraints on {@link android.widget.ImageView}
|
||||
*
|
||||
*/
|
||||
public class ImageView1 extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.image_view_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
/**
|
||||
* {@link android.view.View#requestFocus(int, android.graphics.Rect)}
|
||||
* and
|
||||
* {@link android.view.View#onFocusChanged(boolean, int, android.graphics.Rect)}
|
||||
* work together to give a newly focused item a hint about the most interesting
|
||||
* rectangle of the previously focused view. The view taking focus can use this
|
||||
* to set an internal selection more appropriate using this rect.
|
||||
*
|
||||
* This Activity excercises that behavior using three adjacent {@link InternalSelectionView}
|
||||
* that report interesting rects when giving up focus, and use interesting rects
|
||||
* when taking focus to best select the internal row to show as selected.
|
||||
*
|
||||
* Were {@link InternalSelectionView} not to override {@link android.view.View#getFocusedRect}, or
|
||||
* {@link android.view.View#onFocusChanged(boolean, int, android.graphics.Rect)}, the focus would
|
||||
* jump to some default internal selection (the top) and not allow for the smooth handoff.
|
||||
*/
|
||||
public class InternalSelectionFocus extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
final LinearLayout layout = new LinearLayout(this);
|
||||
layout.setOrientation(LinearLayout.HORIZONTAL);
|
||||
layout.setLayoutParams(new ViewGroup.LayoutParams(
|
||||
ViewGroup.LayoutParams.FILL_PARENT,
|
||||
ViewGroup.LayoutParams.FILL_PARENT));
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,
|
||||
ViewGroup.LayoutParams.FILL_PARENT, 1);
|
||||
|
||||
final InternalSelectionView leftColumn = new InternalSelectionView(this, 5, "left column");
|
||||
leftColumn.setLayoutParams(params);
|
||||
leftColumn.setPadding(10, 10, 10, 10);
|
||||
layout.addView(leftColumn);
|
||||
|
||||
final InternalSelectionView middleColumn = new InternalSelectionView(this, 5, "middle column");
|
||||
middleColumn.setLayoutParams(params);
|
||||
middleColumn.setPadding(10, 10, 10, 10);
|
||||
layout.addView(middleColumn);
|
||||
|
||||
final InternalSelectionView rightColumn = new InternalSelectionView(this, 5, "right column");
|
||||
rightColumn.setLayoutParams(params);
|
||||
rightColumn.setPadding(10, 10, 10, 10);
|
||||
layout.addView(rightColumn);
|
||||
|
||||
setContentView(layout);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ScrollView;
|
||||
|
||||
/**
|
||||
* Demonstrates how a well behaved view with internal selection
|
||||
* ({@link InternalSelectionView}) can cause its parent {@link android.widget.ScrollView}
|
||||
* to scroll to keep the internally interesting rectangle on the screen.
|
||||
*
|
||||
* {@link InternalSelectionView} achieves this by calling {@link android.view.View#requestRectangleOnScreen}
|
||||
* each time its internal selection changes.
|
||||
*
|
||||
* {@link android.widget.ScrollView}, in turn, implements {@link android.view.View#requestRectangleOnScreen}
|
||||
* thereby acheiving the result. Note that {@link android.widget.ListView} also implements the
|
||||
* method, so views that call {@link android.view.View#requestRectangleOnScreen} that are embedded
|
||||
* within either {@link android.widget.ScrollView}s or {@link android.widget.ListView}s can
|
||||
* expect to keep their internal interesting rectangle visible.
|
||||
*/
|
||||
public class InternalSelectionScroll extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
ScrollView sv = new ScrollView(this);
|
||||
ViewGroup.LayoutParams svLp = new ScrollView.LayoutParams(
|
||||
ViewGroup.LayoutParams.FILL_PARENT,
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
|
||||
LinearLayout ll = new LinearLayout(this);
|
||||
ll.setLayoutParams(svLp);
|
||||
sv.addView(ll);
|
||||
|
||||
InternalSelectionView isv = new InternalSelectionView(this, 10);
|
||||
int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
|
||||
LinearLayout.LayoutParams llLp = new LinearLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.FILL_PARENT,
|
||||
2 * screenHeight); // 2x screen height to ensure scrolling
|
||||
isv.setLayoutParams(llLp);
|
||||
ll.addView(isv);
|
||||
|
||||
setContentView(sv);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* A view that has a known number of selectable rows, and maintains a notion of which
|
||||
* row is selected. The rows take up the
|
||||
* entire width of the view. The height of the view is divided evenly among
|
||||
* the rows.
|
||||
*
|
||||
* Notice what this view does to be a good citizen w.r.t its internal selection:
|
||||
* 1) calls {@link View#requestRectangleOnScreen} each time the selection changes due to
|
||||
* internal navigation.
|
||||
* 2) overrides {@link View#getFocusedRect} by filling in the rectangle of the currently
|
||||
* selected row
|
||||
* 3) overrides {@link View#onFocusChanged} and sets selection appropriately according to
|
||||
* the previously focused rectangle.
|
||||
*/
|
||||
public class InternalSelectionView extends View {
|
||||
|
||||
private Paint mPainter = new Paint();
|
||||
private Paint mTextPaint = new Paint();
|
||||
private Rect mTempRect = new Rect();
|
||||
|
||||
private int mNumRows = 5;
|
||||
private int mSelectedRow = 0;
|
||||
private final int mEstimatedPixelHeight = 10;
|
||||
|
||||
private Integer mDesiredHeight = null;
|
||||
private String mLabel = null;
|
||||
|
||||
|
||||
public InternalSelectionView(Context context, int numRows) {
|
||||
this(context, numRows, "");
|
||||
}
|
||||
|
||||
public InternalSelectionView(Context context, int numRows, String label) {
|
||||
super(context);
|
||||
mNumRows = numRows;
|
||||
mLabel = label;
|
||||
init();
|
||||
}
|
||||
|
||||
public InternalSelectionView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
}
|
||||
|
||||
private void init() {
|
||||
setFocusable(true);
|
||||
mTextPaint.setAntiAlias(true);
|
||||
mTextPaint.setTextSize(10);
|
||||
mTextPaint.setColor(Color.WHITE);
|
||||
}
|
||||
|
||||
public int getNumRows() {
|
||||
return mNumRows;
|
||||
}
|
||||
|
||||
public int getSelectedRow() {
|
||||
return mSelectedRow;
|
||||
}
|
||||
|
||||
public void setDesiredHeight(int desiredHeight) {
|
||||
mDesiredHeight = desiredHeight;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return mLabel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
setMeasuredDimension(
|
||||
measureWidth(widthMeasureSpec),
|
||||
measureHeight(heightMeasureSpec));
|
||||
}
|
||||
|
||||
private int measureWidth(int measureSpec) {
|
||||
int specMode = MeasureSpec.getMode(measureSpec);
|
||||
int specSize = MeasureSpec.getSize(measureSpec);
|
||||
|
||||
int desiredWidth = 300 + getPaddingLeft() + getPaddingRight();
|
||||
if (specMode == MeasureSpec.EXACTLY) {
|
||||
// We were told how big to be
|
||||
return specSize;
|
||||
} else if (specMode == MeasureSpec.AT_MOST) {
|
||||
return desiredWidth < specSize ? desiredWidth : specSize;
|
||||
} else {
|
||||
return desiredWidth;
|
||||
}
|
||||
}
|
||||
|
||||
private int measureHeight(int measureSpec) {
|
||||
int specMode = MeasureSpec.getMode(measureSpec);
|
||||
int specSize = MeasureSpec.getSize(measureSpec);
|
||||
|
||||
int desiredHeight = mDesiredHeight != null ?
|
||||
mDesiredHeight :
|
||||
mNumRows * mEstimatedPixelHeight + getPaddingTop() + getPaddingBottom();
|
||||
if (specMode == MeasureSpec.EXACTLY) {
|
||||
// We were told how big to be
|
||||
return specSize;
|
||||
} else if (specMode == MeasureSpec.AT_MOST) {
|
||||
return desiredHeight < specSize ? desiredHeight : specSize;
|
||||
} else {
|
||||
return desiredHeight;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
|
||||
int rowHeight = getRowHeight();
|
||||
|
||||
int rectTop = getPaddingTop();
|
||||
int rectLeft = getPaddingLeft();
|
||||
int rectRight = getWidth() - getPaddingRight();
|
||||
for (int i = 0; i < mNumRows; i++) {
|
||||
|
||||
mPainter.setColor(Color.BLACK);
|
||||
mPainter.setAlpha(0x20);
|
||||
|
||||
// draw background rect
|
||||
mTempRect.set(rectLeft, rectTop, rectRight, rectTop + rowHeight);
|
||||
canvas.drawRect(mTempRect, mPainter);
|
||||
|
||||
// draw forground rect
|
||||
if (i == mSelectedRow && hasFocus()) {
|
||||
mPainter.setColor(Color.RED);
|
||||
mPainter.setAlpha(0xF0);
|
||||
mTextPaint.setAlpha(0xFF);
|
||||
} else {
|
||||
mPainter.setColor(Color.BLACK);
|
||||
mPainter.setAlpha(0x40);
|
||||
mTextPaint.setAlpha(0xF0);
|
||||
}
|
||||
mTempRect.set(rectLeft + 2, rectTop + 2,
|
||||
rectRight - 2, rectTop + rowHeight - 2);
|
||||
canvas.drawRect(mTempRect, mPainter);
|
||||
|
||||
// draw text to help when visually inspecting
|
||||
canvas.drawText(
|
||||
Integer.toString(i),
|
||||
rectLeft + 2,
|
||||
rectTop + 2 - (int) mTextPaint.ascent(),
|
||||
mTextPaint);
|
||||
|
||||
rectTop += rowHeight;
|
||||
}
|
||||
}
|
||||
|
||||
private int getRowHeight() {
|
||||
return (getHeight() - getPaddingTop() - getPaddingBottom()) / mNumRows;
|
||||
}
|
||||
|
||||
public void getRectForRow(Rect rect, int row) {
|
||||
final int rowHeight = getRowHeight();
|
||||
final int top = getPaddingTop() + row * rowHeight;
|
||||
rect.set(getPaddingLeft(),
|
||||
top,
|
||||
getWidth() - getPaddingRight(),
|
||||
top + rowHeight);
|
||||
}
|
||||
|
||||
|
||||
void ensureRectVisible() {
|
||||
getRectForRow(mTempRect, mSelectedRow);
|
||||
requestRectangleOnScreen(mTempRect);
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see android.view.KeyEvent.Callback#onKeyDown(int, android.view.KeyEvent)
|
||||
*/
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
switch(event.getKeyCode()) {
|
||||
case KeyEvent.KEYCODE_DPAD_UP:
|
||||
if (mSelectedRow > 0) {
|
||||
mSelectedRow--;
|
||||
invalidate();
|
||||
ensureRectVisible();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case KeyEvent.KEYCODE_DPAD_DOWN:
|
||||
if (mSelectedRow < (mNumRows - 1)) {
|
||||
mSelectedRow++;
|
||||
invalidate();
|
||||
ensureRectVisible();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void getFocusedRect(Rect r) {
|
||||
getRectForRow(r, mSelectedRow);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFocusChanged(boolean focused, int direction,
|
||||
Rect previouslyFocusedRect) {
|
||||
super.onFocusChanged(focused, direction, previouslyFocusedRect);
|
||||
|
||||
if (focused) {
|
||||
switch (direction) {
|
||||
case View.FOCUS_DOWN:
|
||||
mSelectedRow = 0;
|
||||
break;
|
||||
case View.FOCUS_UP:
|
||||
mSelectedRow = mNumRows - 1;
|
||||
break;
|
||||
case View.FOCUS_LEFT: // fall through
|
||||
case View.FOCUS_RIGHT:
|
||||
// set the row that is closest to the rect
|
||||
if (previouslyFocusedRect != null) {
|
||||
int y = previouslyFocusedRect.top
|
||||
+ (previouslyFocusedRect.height() / 2);
|
||||
int yPerRow = getHeight() / mNumRows;
|
||||
mSelectedRow = y / yPerRow;
|
||||
} else {
|
||||
mSelectedRow = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// can't gleam any useful information about what internal
|
||||
// selection should be...
|
||||
return;
|
||||
}
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (mLabel != null) {
|
||||
return mLabel;
|
||||
}
|
||||
return super.toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
/**
|
||||
* Example of how to write a custom subclass of View. LabelView
|
||||
* is used to draw simple text views. Note that it does not handle
|
||||
* styled text or right-to-left writing systems.
|
||||
*
|
||||
*/
|
||||
public class LabelView extends View {
|
||||
private Paint mTextPaint;
|
||||
private String mText;
|
||||
private int mAscent;
|
||||
|
||||
/**
|
||||
* Constructor. This version is only needed if you will be instantiating
|
||||
* the object manually (not from a layout XML file).
|
||||
* @param context
|
||||
*/
|
||||
public LabelView(Context context) {
|
||||
super(context);
|
||||
initLabelView();
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct object, initializing with any attributes we understand from a
|
||||
* layout file. These attributes are defined in
|
||||
* SDK/assets/res/any/classes.xml.
|
||||
*
|
||||
* @see android.view.View#View(android.content.Context, android.util.AttributeSet)
|
||||
*/
|
||||
public LabelView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
initLabelView();
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs,
|
||||
R.styleable.LabelView);
|
||||
|
||||
CharSequence s = a.getString(R.styleable.LabelView_text);
|
||||
if (s != null) {
|
||||
setText(s.toString());
|
||||
}
|
||||
|
||||
// Retrieve the color(s) to be used for this view and apply them.
|
||||
// Note, if you only care about supporting a single color, that you
|
||||
// can instead call a.getColor() and pass that to setTextColor().
|
||||
setTextColor(a.getColor(R.styleable.LabelView_textColor, 0xFF000000));
|
||||
|
||||
int textSize = a.getDimensionPixelOffset(R.styleable.LabelView_textSize, 0);
|
||||
if (textSize > 0) {
|
||||
setTextSize(textSize);
|
||||
}
|
||||
|
||||
a.recycle();
|
||||
}
|
||||
|
||||
private final void initLabelView() {
|
||||
mTextPaint = new Paint();
|
||||
mTextPaint.setAntiAlias(true);
|
||||
mTextPaint.setTextSize(16);
|
||||
mTextPaint.setColor(0xFF000000);
|
||||
setPadding(3, 3, 3, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the text to display in this label
|
||||
* @param text The text to display. This will be drawn as one line.
|
||||
*/
|
||||
public void setText(String text) {
|
||||
mText = text;
|
||||
requestLayout();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the text size for this label
|
||||
* @param size Font size
|
||||
*/
|
||||
public void setTextSize(int size) {
|
||||
mTextPaint.setTextSize(size);
|
||||
requestLayout();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the text color for this label.
|
||||
* @param color ARGB value for the text
|
||||
*/
|
||||
public void setTextColor(int color) {
|
||||
mTextPaint.setColor(color);
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see android.view.View#measure(int, int)
|
||||
*/
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
setMeasuredDimension(measureWidth(widthMeasureSpec),
|
||||
measureHeight(heightMeasureSpec));
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the width of this view
|
||||
* @param measureSpec A measureSpec packed into an int
|
||||
* @return The width of the view, honoring constraints from measureSpec
|
||||
*/
|
||||
private int measureWidth(int measureSpec) {
|
||||
int result = 0;
|
||||
int specMode = MeasureSpec.getMode(measureSpec);
|
||||
int specSize = MeasureSpec.getSize(measureSpec);
|
||||
|
||||
if (specMode == MeasureSpec.EXACTLY) {
|
||||
// We were told how big to be
|
||||
result = specSize;
|
||||
} else {
|
||||
// Measure the text
|
||||
result = (int) mTextPaint.measureText(mText) + getPaddingLeft()
|
||||
+ getPaddingRight();
|
||||
if (specMode == MeasureSpec.AT_MOST) {
|
||||
// Respect AT_MOST value if that was what is called for by measureSpec
|
||||
result = Math.min(result, specSize);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the height of this view
|
||||
* @param measureSpec A measureSpec packed into an int
|
||||
* @return The height of the view, honoring constraints from measureSpec
|
||||
*/
|
||||
private int measureHeight(int measureSpec) {
|
||||
int result = 0;
|
||||
int specMode = MeasureSpec.getMode(measureSpec);
|
||||
int specSize = MeasureSpec.getSize(measureSpec);
|
||||
|
||||
mAscent = (int) mTextPaint.ascent();
|
||||
if (specMode == MeasureSpec.EXACTLY) {
|
||||
// We were told how big to be
|
||||
result = specSize;
|
||||
} else {
|
||||
// Measure the text (beware: ascent is a negative number)
|
||||
result = (int) (-mAscent + mTextPaint.descent()) + getPaddingTop()
|
||||
+ getPaddingBottom();
|
||||
if (specMode == MeasureSpec.AT_MOST) {
|
||||
// Respect AT_MOST value if that was what is called for by measureSpec
|
||||
result = Math.min(result, specSize);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the text
|
||||
*
|
||||
* @see android.view.View#onDraw(android.graphics.Canvas)
|
||||
*/
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
canvas.drawText(mText, getPaddingLeft(), getPaddingTop() - mAscent, mTextPaint);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LayoutAnimation1 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
loadApps();
|
||||
|
||||
setContentView(R.layout.layout_animation_1);
|
||||
GridView grid = (GridView) findViewById(R.id.grid);
|
||||
grid.setAdapter(new LayoutAnimation1.AppsAdapter());
|
||||
}
|
||||
|
||||
private List<ResolveInfo> mApps;
|
||||
|
||||
private void loadApps() {
|
||||
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
|
||||
}
|
||||
|
||||
public class AppsAdapter extends BaseAdapter {
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i = new ImageView(LayoutAnimation1.this);
|
||||
|
||||
ResolveInfo info = mApps.get(position % mApps.size());
|
||||
|
||||
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
|
||||
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
i.setLayoutParams(new GridView.LayoutParams(36, 36));
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
public final int getCount() {
|
||||
return Math.min(32, mApps.size());
|
||||
}
|
||||
|
||||
public final Object getItem(int position) {
|
||||
return mApps.get(position % mApps.size());
|
||||
}
|
||||
|
||||
public final long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.animation.AlphaAnimation;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationSet;
|
||||
import android.view.animation.LayoutAnimationController;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
public class LayoutAnimation2 extends ListActivity {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setListAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, mStrings));
|
||||
|
||||
AnimationSet set = new AnimationSet(true);
|
||||
|
||||
Animation animation = new AlphaAnimation(0.0f, 1.0f);
|
||||
animation.setDuration(50);
|
||||
set.addAnimation(animation);
|
||||
|
||||
animation = new TranslateAnimation(
|
||||
Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
|
||||
Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f
|
||||
);
|
||||
animation.setDuration(100);
|
||||
set.addAnimation(animation);
|
||||
|
||||
LayoutAnimationController controller =
|
||||
new LayoutAnimationController(set, 0.5f);
|
||||
ListView listView = getListView();
|
||||
listView.setLayoutAnimation(controller);
|
||||
}
|
||||
|
||||
private String[] mStrings = {
|
||||
"Bordeaux",
|
||||
"Lyon",
|
||||
"Marseille",
|
||||
"Nancy",
|
||||
"Paris",
|
||||
"Toulouse",
|
||||
"Strasbourg"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.view.View;
|
||||
|
||||
public class LayoutAnimation3 extends ListActivity {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.layout_animation_3);
|
||||
setListAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, mStrings));
|
||||
}
|
||||
|
||||
private String[] mStrings = {
|
||||
"Bordeaux",
|
||||
"Lyon",
|
||||
"Marseille",
|
||||
"Nancy",
|
||||
"Paris",
|
||||
"Toulouse",
|
||||
"Strasbourg"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LayoutAnimation4 extends Activity {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
loadApps();
|
||||
|
||||
setContentView(R.layout.layout_animation_4);
|
||||
GridView grid = (GridView) findViewById(R.id.grid);
|
||||
grid.setAdapter(new AppsAdapter());
|
||||
|
||||
}
|
||||
|
||||
private List<ResolveInfo> mApps;
|
||||
|
||||
private void loadApps() {
|
||||
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
|
||||
}
|
||||
|
||||
public class AppsAdapter extends BaseAdapter {
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i = new ImageView(LayoutAnimation4.this);
|
||||
|
||||
ResolveInfo info = mApps.get(position % mApps.size());
|
||||
|
||||
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
|
||||
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
i.setLayoutParams(new GridView.LayoutParams(36, 36));
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
public final int getCount() {
|
||||
return Math.min(32, mApps.size());
|
||||
}
|
||||
|
||||
public final Object getItem(int position) {
|
||||
return mApps.get(position % mApps.size());
|
||||
}
|
||||
|
||||
public final long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Gallery;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LayoutAnimation5 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
loadApps();
|
||||
|
||||
setContentView(R.layout.layout_animation_5);
|
||||
GridView grid = (GridView) findViewById(R.id.grid);
|
||||
grid.setAdapter(new AppsAdapter());
|
||||
}
|
||||
|
||||
private List<ResolveInfo> mApps;
|
||||
|
||||
private void loadApps() {
|
||||
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
|
||||
}
|
||||
|
||||
public class AppsAdapter extends BaseAdapter {
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i = new ImageView(LayoutAnimation5.this);
|
||||
|
||||
ResolveInfo info = mApps.get(position % mApps.size());
|
||||
|
||||
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
|
||||
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
i.setLayoutParams(new GridView.LayoutParams(36, 36));
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
public final int getCount() {
|
||||
return Math.min(32, mApps.size());
|
||||
}
|
||||
|
||||
public final Object getItem(int position) {
|
||||
return mApps.get(position % mApps.size());
|
||||
}
|
||||
|
||||
public final long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LayoutAnimation6 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
loadApps();
|
||||
|
||||
setContentView(R.layout.layout_animation_6);
|
||||
GridView grid = (GridView) findViewById(R.id.grid);
|
||||
grid.setAdapter(new AppsAdapter());
|
||||
}
|
||||
|
||||
private List<ResolveInfo> mApps;
|
||||
|
||||
private void loadApps() {
|
||||
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
|
||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
|
||||
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
|
||||
}
|
||||
|
||||
public class AppsAdapter extends BaseAdapter {
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
ImageView i = new ImageView(LayoutAnimation6.this);
|
||||
|
||||
ResolveInfo info = mApps.get(position % mApps.size());
|
||||
|
||||
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
|
||||
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
|
||||
i.setLayoutParams(new GridView.LayoutParams(36, 36));
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
public final int getCount() {
|
||||
return Math.min(32, mApps.size());
|
||||
}
|
||||
|
||||
public final Object getItem(int position) {
|
||||
return mApps.get(position % mApps.size());
|
||||
}
|
||||
|
||||
public final long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AlphaAnimation;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.GridLayoutAnimationController;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Gallery;
|
||||
import android.widget.GridView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LayoutAnimation7 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.layout_animation_7);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* A simple linear layout where the height of the layout is the sum of its children.
|
||||
*/
|
||||
public class LinearLayout1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates the use of LinearLayout backgrounds to group labels,
|
||||
* EditTexts, and buttons,
|
||||
*/
|
||||
public class LinearLayout10 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_10);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* A simple linear layout that fills the screen vertically, but the children are not padded.
|
||||
*/
|
||||
public class LinearLayout2 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* A simple linear layout that fills the screen vertically, and the middle child is padded with extra space.
|
||||
*/
|
||||
public class LinearLayout3 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_3);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates a horizontal linear layout with equally sized columns.
|
||||
*
|
||||
*/
|
||||
public class LinearLayout4 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_4);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates building a simple form with nested LinearLayouts.
|
||||
*
|
||||
*/
|
||||
public class LinearLayout5 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_5);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates using the uniformSize attribute
|
||||
*
|
||||
*/
|
||||
public class LinearLayout6 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_6);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates using fill_parent within a linear layout whose size is not fixed.
|
||||
*
|
||||
*/
|
||||
public class LinearLayout7 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_7);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
//Need the following import to get access to the app resources, since this
|
||||
//class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.Gravity;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates horizontal and vertical gravity
|
||||
*/
|
||||
public class LinearLayout8 extends Activity {
|
||||
|
||||
private LinearLayout mLinearLayout;
|
||||
|
||||
// Menu item Ids
|
||||
public static final int VERTICAL_ID = Menu.FIRST;
|
||||
public static final int HORIZONTAL_ID = Menu.FIRST + 1;
|
||||
|
||||
public static final int TOP_ID = Menu.FIRST + 2;
|
||||
public static final int MIDDLE_ID = Menu.FIRST + 3;
|
||||
public static final int BOTTOM_ID = Menu.FIRST + 4;
|
||||
|
||||
public static final int LEFT_ID = Menu.FIRST + 5;
|
||||
public static final int CENTER_ID = Menu.FIRST + 6;
|
||||
public static final int RIGHT_ID = Menu.FIRST + 7;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_8);
|
||||
mLinearLayout = (LinearLayout)findViewById(R.id.layout);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
menu.add(0, VERTICAL_ID, 0, R.string.linear_layout_8_vertical);
|
||||
menu.add(0, HORIZONTAL_ID, 0, R.string.linear_layout_8_horizontal);
|
||||
menu.add(0, TOP_ID, 0, R.string.linear_layout_8_top);
|
||||
menu.add(0, MIDDLE_ID, 0, R.string.linear_layout_8_middle);
|
||||
menu.add(0, BOTTOM_ID, 0, R.string.linear_layout_8_bottom);
|
||||
menu.add(0, LEFT_ID, 0, R.string.linear_layout_8_left);
|
||||
menu.add(0, CENTER_ID, 0, R.string.linear_layout_8_center);
|
||||
menu.add(0, RIGHT_ID, 0, R.string.linear_layout_8_right);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
|
||||
case VERTICAL_ID:
|
||||
mLinearLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
return true;
|
||||
case HORIZONTAL_ID:
|
||||
mLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
|
||||
return true;
|
||||
|
||||
case TOP_ID:
|
||||
mLinearLayout.setVerticalGravity(Gravity.TOP);
|
||||
return true;
|
||||
case MIDDLE_ID:
|
||||
mLinearLayout.setVerticalGravity(Gravity.CENTER_VERTICAL);
|
||||
return true;
|
||||
case BOTTOM_ID:
|
||||
mLinearLayout.setVerticalGravity(Gravity.BOTTOM);
|
||||
return true;
|
||||
|
||||
case LEFT_ID:
|
||||
mLinearLayout.setHorizontalGravity(Gravity.LEFT);
|
||||
return true;
|
||||
case CENTER_ID:
|
||||
mLinearLayout.setHorizontalGravity(Gravity.CENTER_HORIZONTAL);
|
||||
return true;
|
||||
case RIGHT_ID:
|
||||
mLinearLayout.setHorizontalGravity(Gravity.RIGHT);
|
||||
return true;
|
||||
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ListView;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
/**
|
||||
* Demonstrates how the layout_weight attribute can shrink an element too big
|
||||
* to fit on screen.
|
||||
*/
|
||||
public class LinearLayout9 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.linear_layout_9);
|
||||
ListView list = (ListView) findViewById(R.id.list);
|
||||
list.setAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, AutoComplete1.COUNTRIES));
|
||||
}
|
||||
|
||||
}
|
||||
172
samples/ApiDemos/src/com/example/android/apis/view/List1.java
Normal file
172
samples/ApiDemos/src/com/example/android/apis/view/List1.java
Normal file
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
||||
|
||||
/**
|
||||
* A list view example where the
|
||||
* data for the list comes from an array of strings.
|
||||
*/
|
||||
public class List1 extends ListActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Use an existing ListAdapter that will map an array
|
||||
// of strings to TextViews
|
||||
setListAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, mStrings));
|
||||
getListView().setTextFilterEnabled(true);
|
||||
}
|
||||
|
||||
private 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",
|
||||
"Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois", "Brebis du Puyfaucon",
|
||||
"Bresse Bleu", "Brick", "Brie", "Brie de Meaux", "Brie de Melun", "Brillat-Savarin",
|
||||
"Brin", "Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)",
|
||||
"Briquette de Brebis", "Briquette du Forez", "Broccio", "Broccio Demi-Affine",
|
||||
"Brousse du Rove", "Bruder Basil", "Brusselae Kaas (Fromage de Bruxelles)", "Bryndza",
|
||||
"Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase", "Button (Innes)",
|
||||
"Buxton Blue", "Cabecou", "Caboc", "Cabrales", "Cachaille", "Caciocavallo", "Caciotta",
|
||||
"Caerphilly", "Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
|
||||
"Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux", "Capricorn Goat",
|
||||
"Capriole Banon", "Carre de l'Est", "Casciotta di Urbino", "Cashel Blue", "Castellano",
|
||||
"Castelleno", "Castelmagno", "Castelo Branco", "Castigliano", "Cathelain",
|
||||
"Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou", "Chabichou du Poitou",
|
||||
"Chabis de Gatine", "Chaource", "Charolais", "Chaumes", "Cheddar",
|
||||
"Cheddar Clothbound", "Cheshire", "Chevres", "Chevrotin des Aravis", "Chontaleno",
|
||||
"Civray", "Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby", "Cold Pack",
|
||||
"Comte", "Coolea", "Cooleney", "Coquetdale", "Corleggy", "Cornish Pepper",
|
||||
"Cotherstone", "Cotija", "Cottage Cheese", "Cottage Cheese (Australian)",
|
||||
"Cougar Gold", "Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
|
||||
"Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche", "Crescenza",
|
||||
"Croghan", "Crottin de Chavignol", "Crottin du Chavignol", "Crowdie", "Crowley",
|
||||
"Cuajada", "Curd", "Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
|
||||
"Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo", "Danish Fontina",
|
||||
"Daralagjazsky", "Dauphin", "Delice des Fiouves", "Denhany Dorset Drum", "Derby",
|
||||
"Dessertnyj Belyj", "Devon Blue", "Devon Garland", "Dolcelatte", "Doolin",
|
||||
"Doppelrhamstufel", "Dorset Blue Vinney", "Double Gloucester", "Double Worcester",
|
||||
"Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra", "Dunlop", "Dunsyre Blue",
|
||||
"Duroblando", "Durrus", "Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz",
|
||||
"Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne", "Esbareich",
|
||||
"Esrom", "Etorki", "Evansdale Farmhouse Brie", "Evora De L'Alentejo", "Exmoor Blue",
|
||||
"Explorateur", "Feta", "Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle",
|
||||
"Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis", "Flor de Guia",
|
||||
"Flower Marie", "Folded", "Folded cheese with mint", "Fondant de Brebis",
|
||||
"Fontainebleau", "Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus",
|
||||
"Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire", "Fourme de Montbrison",
|
||||
"Fresh Jack", "Fresh Mozzarella", "Fresh Ricotta", "Fresh Truffles", "Fribourgeois",
|
||||
"Friesekaas", "Friesian", "Friesla", "Frinault", "Fromage a Raclette", "Fromage Corse",
|
||||
"Fromage de Montagne de Savoie", "Fromage Frais", "Fruit Cream Cheese",
|
||||
"Frying Cheese", "Fynbo", "Gabriel", "Galette du Paludier", "Galette Lyonnaise",
|
||||
"Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail", "Garrotxa", "Gastanberra",
|
||||
"Geitost", "Gippsland Blue", "Gjetost", "Gloucester", "Golden Cross", "Gorgonzola",
|
||||
"Gornyaltajski", "Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost",
|
||||
"Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel",
|
||||
"Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh", "Greve",
|
||||
"Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny", "Halloumi",
|
||||
"Halloumy (Australian)", "Haloumi-Style Cheese", "Harbourne Blue", "Havarti",
|
||||
"Heidi Gruyere", "Hereford Hop", "Herrgardsost", "Herriot Farmhouse", "Herve",
|
||||
"Hipi Iti", "Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster",
|
||||
"Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu", "Isle of Mull", "Jarlsberg",
|
||||
"Jermi Tortes", "Jibneh Arabieh", "Jindi Brie", "Jubilee Blue", "Juustoleipa",
|
||||
"Kadchgall", "Kaseri", "Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine",
|
||||
"Kikorangi", "King Island Cape Wickham Brie", "King River Gold", "Klosterkaese",
|
||||
"Knockalara", "Kugelkase", "L'Aveyronnais", "L'Ecir de l'Aubrac", "La Taupiniere",
|
||||
"La Vache Qui Rit", "Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire",
|
||||
"Langres", "Lappi", "Laruns", "Lavistown", "Le Brin", "Le Fium Orbo", "Le Lacandou",
|
||||
"Le Roule", "Leafield", "Lebbene", "Leerdammer", "Leicester", "Leyden", "Limburger",
|
||||
"Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer", "Little Rydings",
|
||||
"Livarot", "Llanboidy", "Llanglofan Farmhouse", "Loch Arthur Farmhouse",
|
||||
"Loddiswell Avondale", "Longhorn", "Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam",
|
||||
"Macconais", "Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego",
|
||||
"Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses", "Maredsous", "Margotin",
|
||||
"Maribo", "Maroilles", "Mascares", "Mascarpone", "Mascarpone (Australian)",
|
||||
"Mascarpone Torta", "Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse",
|
||||
"Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)", "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", "Syrian (Armenian String)", "Tala", "Taleggio", "Tamie",
|
||||
"Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea", "Testouri",
|
||||
"Tete de Moine", "Tetilla", "Texas Goat Cheese", "Tibet", "Tillamook Cheddar",
|
||||
"Tilsit", "Timboon Brie", "Toma", "Tomme Brulee", "Tomme d'Abondance",
|
||||
"Tomme de Chevre", "Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans", "Tommes",
|
||||
"Torta del Casar", "Toscanello", "Touree de L'Aubier", "Tourmalet",
|
||||
"Trappe (Veritable)", "Trois Cornes De Vendee", "Tronchon", "Trou du Cru", "Truffe",
|
||||
"Tupi", "Turunmaa", "Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa",
|
||||
"Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco", "Vendomois",
|
||||
"Vieux Corse", "Vignotte", "Vulscombe", "Waimata Farmhouse Blue",
|
||||
"Washed Rind Cheese (Australian)", "Waterloo", "Weichkaese", "Wellington",
|
||||
"Wensleydale", "White Stilton", "Whitestone Farmhouse", "Wigmore", "Woodside Cabecou",
|
||||
"Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue",
|
||||
"Zamorano", "Zanetti Grana Padano", "Zanetti Parmigiano Reggiano"};
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
/**
|
||||
* This example shows how to use choice mode on a list. This list is
|
||||
* in CHOICE_MODE_SINGLE mode, which means the items behave like
|
||||
* checkboxes.
|
||||
*/
|
||||
public class List10 extends ListActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setListAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_single_choice, GENRES));
|
||||
|
||||
final ListView listView = getListView();
|
||||
|
||||
listView.setItemsCanFocus(false);
|
||||
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
||||
}
|
||||
|
||||
|
||||
private static final String[] GENRES = new String[] {
|
||||
"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
|
||||
"Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
/**
|
||||
* This example shows how to use choice mode on a list. This list is
|
||||
* in CHOICE_MODE_MULTIPLE mode, which means the items behave like
|
||||
* checkboxes.
|
||||
*/
|
||||
public class List11 extends ListActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setListAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_multiple_choice, GENRES));
|
||||
|
||||
final ListView listView = getListView();
|
||||
|
||||
listView.setItemsCanFocus(false);
|
||||
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
|
||||
}
|
||||
|
||||
|
||||
private static final String[] GENRES = new String[] {
|
||||
"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
|
||||
"Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.View.OnKeyListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.EditText;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Demonstrates the using a list view in transcript mode
|
||||
*
|
||||
*/
|
||||
public class List12 extends ListActivity implements OnClickListener, OnKeyListener {
|
||||
|
||||
private EditText mUserText;
|
||||
|
||||
private ArrayAdapter<String> mAdapter;
|
||||
|
||||
private ArrayList<String> mStrings = new ArrayList<String>();
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.list_12);
|
||||
|
||||
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings);
|
||||
|
||||
setListAdapter(mAdapter);
|
||||
|
||||
mUserText = (EditText) findViewById(R.id.userText);
|
||||
|
||||
mUserText.setOnClickListener(this);
|
||||
mUserText.setOnKeyListener(this);
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
sendText();
|
||||
}
|
||||
|
||||
private void sendText() {
|
||||
String text = mUserText.getText().toString();
|
||||
mAdapter.add(text);
|
||||
mUserText.setText(null);
|
||||
}
|
||||
|
||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||
if (event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_DPAD_CENTER:
|
||||
case KeyEvent.KEYCODE_ENTER:
|
||||
sendText();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
347
samples/ApiDemos/src/com/example/android/apis/view/List13.java
Normal file
347
samples/ApiDemos/src/com/example/android/apis/view/List13.java
Normal file
@@ -0,0 +1,347 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.AbsListView.OnScrollListener;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates how a list can avoid expensive operations during scrolls or flings. In this
|
||||
* case, we pretend that binding a view to its data is slow (even though it really isn't). When
|
||||
* a scroll/fling is happening, the adapter binds the view to temporary data. After the scroll/fling
|
||||
* has finished, the temporary data is replace with the actual data.
|
||||
*
|
||||
*/
|
||||
public class List13 extends ListActivity implements ListView.OnScrollListener {
|
||||
|
||||
private TextView mStatus;
|
||||
|
||||
private boolean mBusy = false;
|
||||
|
||||
/**
|
||||
* Will not bind views while the list is scrolling
|
||||
*
|
||||
*/
|
||||
private class SlowAdapter extends BaseAdapter {
|
||||
private LayoutInflater mInflater;
|
||||
|
||||
public SlowAdapter(Context context) {
|
||||
mContext = context;
|
||||
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of items in the list is determined by the number of speeches
|
||||
* in our array.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getCount()
|
||||
*/
|
||||
public int getCount() {
|
||||
return mStrings.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Since the data comes from an array, just returning the index is
|
||||
* sufficent to get at the data. If we were using a more complex data
|
||||
* structure, we would return whatever object represents one row in the
|
||||
* list.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItem(int)
|
||||
*/
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the array index as a unique id.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItemId(int)
|
||||
*/
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a view to hold each row.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getView(int, android.view.View,
|
||||
* android.view.ViewGroup)
|
||||
*/
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
TextView text;
|
||||
|
||||
if (convertView == null) {
|
||||
text = (TextView)mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
|
||||
} else {
|
||||
text = (TextView)convertView;
|
||||
}
|
||||
|
||||
if (!mBusy) {
|
||||
text.setText(mStrings[position]);
|
||||
// Null tag means the view has the correct data
|
||||
text.setTag(null);
|
||||
} else {
|
||||
text.setText("Loading...");
|
||||
// Non-null tag means the view still needs to load it's data
|
||||
text.setTag(this);
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remember our context so we can use it when constructing views.
|
||||
*/
|
||||
private Context mContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.list_13);
|
||||
mStatus = (TextView) findViewById(R.id.status);
|
||||
mStatus.setText("Idle");
|
||||
|
||||
// Use an existing ListAdapter that will map an array
|
||||
// of strings to TextViews
|
||||
setListAdapter(new SlowAdapter(this));
|
||||
|
||||
getListView().setOnScrollListener(this);
|
||||
}
|
||||
|
||||
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
|
||||
int totalItemCount) {
|
||||
}
|
||||
|
||||
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
switch (scrollState) {
|
||||
case OnScrollListener.SCROLL_STATE_IDLE:
|
||||
mBusy = false;
|
||||
|
||||
int first = view.getFirstVisiblePosition();
|
||||
int count = view.getChildCount();
|
||||
for (int i=0; i<count; i++) {
|
||||
TextView t = (TextView)view.getChildAt(i);
|
||||
if (t.getTag() != null) {
|
||||
t.setText(mStrings[first + i]);
|
||||
t.setTag(null);
|
||||
}
|
||||
}
|
||||
|
||||
mStatus.setText("Idle");
|
||||
break;
|
||||
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
|
||||
mBusy = true;
|
||||
mStatus.setText("Touch scroll");
|
||||
break;
|
||||
case OnScrollListener.SCROLL_STATE_FLING:
|
||||
mBusy = true;
|
||||
mStatus.setText("Fling");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private 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",
|
||||
"Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois",
|
||||
"Brebis du Puyfaucon", "Bresse Bleu", "Brick", "Brie",
|
||||
"Brie de Meaux", "Brie de Melun", "Brillat-Savarin", "Brin",
|
||||
"Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)",
|
||||
"Briquette de Brebis", "Briquette du Forez", "Broccio",
|
||||
"Broccio Demi-Affine", "Brousse du Rove", "Bruder Basil",
|
||||
"Brusselae Kaas (Fromage de Bruxelles)", "Bryndza",
|
||||
"Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase",
|
||||
"Button (Innes)", "Buxton Blue", "Cabecou", "Caboc", "Cabrales",
|
||||
"Cachaille", "Caciocavallo", "Caciotta", "Caerphilly",
|
||||
"Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
|
||||
"Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux",
|
||||
"Capricorn Goat", "Capriole Banon", "Carre de l'Est",
|
||||
"Casciotta di Urbino", "Cashel Blue", "Castellano", "Castelleno",
|
||||
"Castelmagno", "Castelo Branco", "Castigliano", "Cathelain",
|
||||
"Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou",
|
||||
"Chabichou du Poitou", "Chabis de Gatine", "Chaource", "Charolais",
|
||||
"Chaumes", "Cheddar", "Cheddar Clothbound", "Cheshire", "Chevres",
|
||||
"Chevrotin des Aravis", "Chontaleno", "Civray",
|
||||
"Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby",
|
||||
"Cold Pack", "Comte", "Coolea", "Cooleney", "Coquetdale",
|
||||
"Corleggy", "Cornish Pepper", "Cotherstone", "Cotija",
|
||||
"Cottage Cheese", "Cottage Cheese (Australian)", "Cougar Gold",
|
||||
"Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
|
||||
"Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche",
|
||||
"Crescenza", "Croghan", "Crottin de Chavignol",
|
||||
"Crottin du Chavignol", "Crowdie", "Crowley", "Cuajada", "Curd",
|
||||
"Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
|
||||
"Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo",
|
||||
"Danish Fontina", "Daralagjazsky", "Dauphin", "Delice des Fiouves",
|
||||
"Denhany Dorset Drum", "Derby", "Dessertnyj Belyj", "Devon Blue",
|
||||
"Devon Garland", "Dolcelatte", "Doolin", "Doppelrhamstufel",
|
||||
"Dorset Blue Vinney", "Double Gloucester", "Double Worcester",
|
||||
"Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra",
|
||||
"Dunlop", "Dunsyre Blue", "Duroblando", "Durrus",
|
||||
"Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz",
|
||||
"Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne",
|
||||
"Esbareich", "Esrom", "Etorki", "Evansdale Farmhouse Brie",
|
||||
"Evora De L'Alentejo", "Exmoor Blue", "Explorateur", "Feta",
|
||||
"Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle",
|
||||
"Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis",
|
||||
"Flor de Guia", "Flower Marie", "Folded",
|
||||
"Folded cheese with mint", "Fondant de Brebis", "Fontainebleau",
|
||||
"Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus",
|
||||
"Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire",
|
||||
"Fourme de Montbrison", "Fresh Jack", "Fresh Mozzarella",
|
||||
"Fresh Ricotta", "Fresh Truffles", "Fribourgeois", "Friesekaas",
|
||||
"Friesian", "Friesla", "Frinault", "Fromage a Raclette",
|
||||
"Fromage Corse", "Fromage de Montagne de Savoie", "Fromage Frais",
|
||||
"Fruit Cream Cheese", "Frying Cheese", "Fynbo", "Gabriel",
|
||||
"Galette du Paludier", "Galette Lyonnaise",
|
||||
"Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail",
|
||||
"Garrotxa", "Gastanberra", "Geitost", "Gippsland Blue", "Gjetost",
|
||||
"Gloucester", "Golden Cross", "Gorgonzola", "Gornyaltajski",
|
||||
"Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost",
|
||||
"Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel",
|
||||
"Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh",
|
||||
"Greve", "Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny",
|
||||
"Halloumi", "Halloumy (Australian)", "Haloumi-Style Cheese",
|
||||
"Harbourne Blue", "Havarti", "Heidi Gruyere", "Hereford Hop",
|
||||
"Herrgardsost", "Herriot Farmhouse", "Herve", "Hipi Iti",
|
||||
"Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster",
|
||||
"Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu",
|
||||
"Isle of Mull", "Jarlsberg", "Jermi Tortes", "Jibneh Arabieh",
|
||||
"Jindi Brie", "Jubilee Blue", "Juustoleipa", "Kadchgall", "Kaseri",
|
||||
"Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine",
|
||||
"Kikorangi", "King Island Cape Wickham Brie", "King River Gold",
|
||||
"Klosterkaese", "Knockalara", "Kugelkase", "L'Aveyronnais",
|
||||
"L'Ecir de l'Aubrac", "La Taupiniere", "La Vache Qui Rit",
|
||||
"Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire",
|
||||
"Langres", "Lappi", "Laruns", "Lavistown", "Le Brin",
|
||||
"Le Fium Orbo", "Le Lacandou", "Le Roule", "Leafield", "Lebbene",
|
||||
"Leerdammer", "Leicester", "Leyden", "Limburger",
|
||||
"Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer",
|
||||
"Little Rydings", "Livarot", "Llanboidy", "Llanglofan Farmhouse",
|
||||
"Loch Arthur Farmhouse", "Loddiswell Avondale", "Longhorn",
|
||||
"Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam", "Macconais",
|
||||
"Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego",
|
||||
"Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses",
|
||||
"Maredsous", "Margotin", "Maribo", "Maroilles", "Mascares",
|
||||
"Mascarpone", "Mascarpone (Australian)", "Mascarpone Torta",
|
||||
"Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse",
|
||||
"Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)",
|
||||
"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",
|
||||
"Syrian (Armenian String)", "Tala", "Taleggio", "Tamie",
|
||||
"Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea",
|
||||
"Testouri", "Tete de Moine", "Tetilla", "Texas Goat Cheese",
|
||||
"Tibet", "Tillamook Cheddar", "Tilsit", "Timboon Brie", "Toma",
|
||||
"Tomme Brulee", "Tomme d'Abondance", "Tomme de Chevre",
|
||||
"Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans",
|
||||
"Tommes", "Torta del Casar", "Toscanello", "Touree de L'Aubier",
|
||||
"Tourmalet", "Trappe (Veritable)", "Trois Cornes De Vendee",
|
||||
"Tronchon", "Trou du Cru", "Truffe", "Tupi", "Turunmaa",
|
||||
"Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa",
|
||||
"Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco",
|
||||
"Vendomois", "Vieux Corse", "Vignotte", "Vulscombe",
|
||||
"Waimata Farmhouse Blue", "Washed Rind Cheese (Australian)",
|
||||
"Waterloo", "Weichkaese", "Wellington", "Wensleydale",
|
||||
"White Stilton", "Whitestone Farmhouse", "Wigmore",
|
||||
"Woodside Cabecou", "Xanadu", "Xynotyro", "Yarg Cornish",
|
||||
"Yarra Valley Pyramid", "Yorkshire Blue", "Zamorano",
|
||||
"Zanetti Grana Padano", "Zanetti Parmigiano Reggiano"};
|
||||
|
||||
}
|
||||
314
samples/ApiDemos/src/com/example/android/apis/view/List14.java
Normal file
314
samples/ApiDemos/src/com/example/android/apis/view/List14.java
Normal file
@@ -0,0 +1,314 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.TextView;
|
||||
import android.widget.ImageView;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Bitmap;
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* Demonstrates how to write an efficient list adapter. The adapter used in this example binds
|
||||
* to an ImageView and to a TextView for each row in the list.
|
||||
*
|
||||
* To work efficiently the adapter implemented here uses two techniques:
|
||||
* - It reuses the convertView passed to getView() to avoid inflating View when it is not necessary
|
||||
* - It uses the ViewHolder pattern to avoid calling findViewById() when it is not necessary
|
||||
*
|
||||
* The ViewHolder pattern consists in storing a data structure in the tag of the view returned by
|
||||
* getView(). This data structures contains references to the views we want to bind data to, thus
|
||||
* avoiding calls to findViewById() every time getView() is invoked.
|
||||
*/
|
||||
public class List14 extends ListActivity {
|
||||
|
||||
private static class EfficientAdapter extends BaseAdapter {
|
||||
private LayoutInflater mInflater;
|
||||
private Bitmap mIcon1;
|
||||
private Bitmap mIcon2;
|
||||
|
||||
public EfficientAdapter(Context context) {
|
||||
// Cache the LayoutInflate to avoid asking for a new one each time.
|
||||
mInflater = LayoutInflater.from(context);
|
||||
|
||||
// Icons bound to the rows.
|
||||
mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_1);
|
||||
mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_2);
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of items in the list is determined by the number of speeches
|
||||
* in our array.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getCount()
|
||||
*/
|
||||
public int getCount() {
|
||||
return DATA.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Since the data comes from an array, just returning the index is
|
||||
* sufficent to get at the data. If we were using a more complex data
|
||||
* structure, we would return whatever object represents one row in the
|
||||
* list.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItem(int)
|
||||
*/
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the array index as a unique id.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItemId(int)
|
||||
*/
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a view to hold each row.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getView(int, android.view.View,
|
||||
* android.view.ViewGroup)
|
||||
*/
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
// A ViewHolder keeps references to children views to avoid unneccessary calls
|
||||
// to findViewById() on each row.
|
||||
ViewHolder holder;
|
||||
|
||||
// When convertView is not null, we can reuse it directly, there is no need
|
||||
// to reinflate it. We only inflate a new View when the convertView supplied
|
||||
// by ListView is null.
|
||||
if (convertView == null) {
|
||||
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
|
||||
|
||||
// Creates a ViewHolder and store references to the two children views
|
||||
// we want to bind data to.
|
||||
holder = new ViewHolder();
|
||||
holder.text = (TextView) convertView.findViewById(R.id.text);
|
||||
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
|
||||
|
||||
convertView.setTag(holder);
|
||||
} else {
|
||||
// Get the ViewHolder back to get fast access to the TextView
|
||||
// and the ImageView.
|
||||
holder = (ViewHolder) convertView.getTag();
|
||||
}
|
||||
|
||||
// Bind the data efficiently with the holder.
|
||||
holder.text.setText(DATA[position]);
|
||||
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
|
||||
|
||||
return convertView;
|
||||
}
|
||||
|
||||
static class ViewHolder {
|
||||
TextView text;
|
||||
ImageView icon;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setListAdapter(new EfficientAdapter(this));
|
||||
}
|
||||
|
||||
private static final String[] DATA = {
|
||||
"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",
|
||||
"Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois",
|
||||
"Brebis du Puyfaucon", "Bresse Bleu", "Brick", "Brie",
|
||||
"Brie de Meaux", "Brie de Melun", "Brillat-Savarin", "Brin",
|
||||
"Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)",
|
||||
"Briquette de Brebis", "Briquette du Forez", "Broccio",
|
||||
"Broccio Demi-Affine", "Brousse du Rove", "Bruder Basil",
|
||||
"Brusselae Kaas (Fromage de Bruxelles)", "Bryndza",
|
||||
"Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase",
|
||||
"Button (Innes)", "Buxton Blue", "Cabecou", "Caboc", "Cabrales",
|
||||
"Cachaille", "Caciocavallo", "Caciotta", "Caerphilly",
|
||||
"Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
|
||||
"Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux",
|
||||
"Capricorn Goat", "Capriole Banon", "Carre de l'Est",
|
||||
"Casciotta di Urbino", "Cashel Blue", "Castellano", "Castelleno",
|
||||
"Castelmagno", "Castelo Branco", "Castigliano", "Cathelain",
|
||||
"Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou",
|
||||
"Chabichou du Poitou", "Chabis de Gatine", "Chaource", "Charolais",
|
||||
"Chaumes", "Cheddar", "Cheddar Clothbound", "Cheshire", "Chevres",
|
||||
"Chevrotin des Aravis", "Chontaleno", "Civray",
|
||||
"Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby",
|
||||
"Cold Pack", "Comte", "Coolea", "Cooleney", "Coquetdale",
|
||||
"Corleggy", "Cornish Pepper", "Cotherstone", "Cotija",
|
||||
"Cottage Cheese", "Cottage Cheese (Australian)", "Cougar Gold",
|
||||
"Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
|
||||
"Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche",
|
||||
"Crescenza", "Croghan", "Crottin de Chavignol",
|
||||
"Crottin du Chavignol", "Crowdie", "Crowley", "Cuajada", "Curd",
|
||||
"Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
|
||||
"Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo",
|
||||
"Danish Fontina", "Daralagjazsky", "Dauphin", "Delice des Fiouves",
|
||||
"Denhany Dorset Drum", "Derby", "Dessertnyj Belyj", "Devon Blue",
|
||||
"Devon Garland", "Dolcelatte", "Doolin", "Doppelrhamstufel",
|
||||
"Dorset Blue Vinney", "Double Gloucester", "Double Worcester",
|
||||
"Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra",
|
||||
"Dunlop", "Dunsyre Blue", "Duroblando", "Durrus",
|
||||
"Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz",
|
||||
"Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne",
|
||||
"Esbareich", "Esrom", "Etorki", "Evansdale Farmhouse Brie",
|
||||
"Evora De L'Alentejo", "Exmoor Blue", "Explorateur", "Feta",
|
||||
"Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle",
|
||||
"Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis",
|
||||
"Flor de Guia", "Flower Marie", "Folded",
|
||||
"Folded cheese with mint", "Fondant de Brebis", "Fontainebleau",
|
||||
"Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus",
|
||||
"Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire",
|
||||
"Fourme de Montbrison", "Fresh Jack", "Fresh Mozzarella",
|
||||
"Fresh Ricotta", "Fresh Truffles", "Fribourgeois", "Friesekaas",
|
||||
"Friesian", "Friesla", "Frinault", "Fromage a Raclette",
|
||||
"Fromage Corse", "Fromage de Montagne de Savoie", "Fromage Frais",
|
||||
"Fruit Cream Cheese", "Frying Cheese", "Fynbo", "Gabriel",
|
||||
"Galette du Paludier", "Galette Lyonnaise",
|
||||
"Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail",
|
||||
"Garrotxa", "Gastanberra", "Geitost", "Gippsland Blue", "Gjetost",
|
||||
"Gloucester", "Golden Cross", "Gorgonzola", "Gornyaltajski",
|
||||
"Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost",
|
||||
"Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel",
|
||||
"Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh",
|
||||
"Greve", "Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny",
|
||||
"Halloumi", "Halloumy (Australian)", "Haloumi-Style Cheese",
|
||||
"Harbourne Blue", "Havarti", "Heidi Gruyere", "Hereford Hop",
|
||||
"Herrgardsost", "Herriot Farmhouse", "Herve", "Hipi Iti",
|
||||
"Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster",
|
||||
"Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu",
|
||||
"Isle of Mull", "Jarlsberg", "Jermi Tortes", "Jibneh Arabieh",
|
||||
"Jindi Brie", "Jubilee Blue", "Juustoleipa", "Kadchgall", "Kaseri",
|
||||
"Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine",
|
||||
"Kikorangi", "King Island Cape Wickham Brie", "King River Gold",
|
||||
"Klosterkaese", "Knockalara", "Kugelkase", "L'Aveyronnais",
|
||||
"L'Ecir de l'Aubrac", "La Taupiniere", "La Vache Qui Rit",
|
||||
"Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire",
|
||||
"Langres", "Lappi", "Laruns", "Lavistown", "Le Brin",
|
||||
"Le Fium Orbo", "Le Lacandou", "Le Roule", "Leafield", "Lebbene",
|
||||
"Leerdammer", "Leicester", "Leyden", "Limburger",
|
||||
"Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer",
|
||||
"Little Rydings", "Livarot", "Llanboidy", "Llanglofan Farmhouse",
|
||||
"Loch Arthur Farmhouse", "Loddiswell Avondale", "Longhorn",
|
||||
"Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam", "Macconais",
|
||||
"Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego",
|
||||
"Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses",
|
||||
"Maredsous", "Margotin", "Maribo", "Maroilles", "Mascares",
|
||||
"Mascarpone", "Mascarpone (Australian)", "Mascarpone Torta",
|
||||
"Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse",
|
||||
"Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)",
|
||||
"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",
|
||||
"Syrian (Armenian String)", "Tala", "Taleggio", "Tamie",
|
||||
"Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea",
|
||||
"Testouri", "Tete de Moine", "Tetilla", "Texas Goat Cheese",
|
||||
"Tibet", "Tillamook Cheddar", "Tilsit", "Timboon Brie", "Toma",
|
||||
"Tomme Brulee", "Tomme d'Abondance", "Tomme de Chevre",
|
||||
"Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans",
|
||||
"Tommes", "Torta del Casar", "Toscanello", "Touree de L'Aubier",
|
||||
"Tourmalet", "Trappe (Veritable)", "Trois Cornes De Vendee",
|
||||
"Tronchon", "Trou du Cru", "Truffe", "Tupi", "Turunmaa",
|
||||
"Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa",
|
||||
"Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco",
|
||||
"Vendomois", "Vieux Corse", "Vignotte", "Vulscombe",
|
||||
"Waimata Farmhouse Blue", "Washed Rind Cheese (Australian)",
|
||||
"Waterloo", "Weichkaese", "Wellington", "Wensleydale",
|
||||
"White Stilton", "Whitestone Farmhouse", "Wigmore",
|
||||
"Woodside Cabecou", "Xanadu", "Xynotyro", "Yarg Cornish",
|
||||
"Yarra Valley Pyramid", "Yorkshire Blue", "Zamorano",
|
||||
"Zanetti Grana Padano", "Zanetti Parmigiano Reggiano"};
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.database.Cursor;
|
||||
import android.provider.Contacts.People;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
|
||||
/**
|
||||
* A list view example where the
|
||||
* data comes from a cursor.
|
||||
*/
|
||||
public class List2 extends ListActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Get a cursor with all people
|
||||
Cursor c = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
|
||||
startManagingCursor(c);
|
||||
|
||||
ListAdapter adapter = new SimpleCursorAdapter(this,
|
||||
// Use a template that displays a text view
|
||||
android.R.layout.simple_list_item_1,
|
||||
// Give the cursor to the list adatper
|
||||
c,
|
||||
// Map the NAME column in the people database to...
|
||||
new String[] {People.NAME} ,
|
||||
// The "text1" view defined in the XML template
|
||||
new int[] {android.R.id.text1});
|
||||
setListAdapter(adapter);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Contacts.Phones;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
|
||||
/**
|
||||
* A list view example where the
|
||||
* data comes from a cursor, and a
|
||||
* SimpleCursorListAdapter is used to map each item to a two-line
|
||||
* display.
|
||||
*/
|
||||
public class List3 extends ListActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Get a cursor with all phones
|
||||
Cursor c = getContentResolver().query(Phones.CONTENT_URI, null, null, null, null);
|
||||
startManagingCursor(c);
|
||||
|
||||
// Map Cursor columns to views defined in simple_list_item_2.xml
|
||||
ListAdapter adapter = new SimpleCursorAdapter(this,
|
||||
android.R.layout.simple_list_item_2, c,
|
||||
new String[] { Phones.NAME, Phones.NUMBER },
|
||||
new int[] { android.R.id.text1, android.R.id.text2 });
|
||||
setListAdapter(adapter);
|
||||
}
|
||||
|
||||
}
|
||||
374
samples/ApiDemos/src/com/example/android/apis/view/List4.java
Normal file
374
samples/ApiDemos/src/com/example/android/apis/view/List4.java
Normal file
@@ -0,0 +1,374 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
//Need the following import to get access to the app resources, since this
|
||||
//class is in a sub-package.
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
/**
|
||||
* A list view example where the data comes from a custom ListAdapter
|
||||
*/
|
||||
public class List4 extends ListActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Use our own list adapter
|
||||
setListAdapter(new SpeechListAdapter(this));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* A sample ListAdapter that presents content from arrays of speeches and
|
||||
* text.
|
||||
*
|
||||
*/
|
||||
private class SpeechListAdapter extends BaseAdapter {
|
||||
public SpeechListAdapter(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of items in the list is determined by the number of speeches
|
||||
* in our array.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getCount()
|
||||
*/
|
||||
public int getCount() {
|
||||
return mTitles.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Since the data comes from an array, just returning the index is
|
||||
* sufficent to get at the data. If we were using a more complex data
|
||||
* structure, we would return whatever object represents one row in the
|
||||
* list.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItem(int)
|
||||
*/
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the array index as a unique id.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItemId(int)
|
||||
*/
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a SpeechView to hold each row.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getView(int, android.view.View,
|
||||
* android.view.ViewGroup)
|
||||
*/
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
SpeechView sv;
|
||||
if (convertView == null) {
|
||||
sv = new SpeechView(mContext, mTitles[position],
|
||||
mDialogue[position]);
|
||||
} else {
|
||||
sv = (SpeechView) convertView;
|
||||
sv.setTitle(mTitles[position]);
|
||||
sv.setDialogue(mDialogue[position]);
|
||||
}
|
||||
|
||||
return sv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remember our context so we can use it when constructing views.
|
||||
*/
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* Our data, part 1.
|
||||
*/
|
||||
private String[] mTitles =
|
||||
{
|
||||
"Henry IV (1)",
|
||||
"Henry V",
|
||||
"Henry VIII",
|
||||
"Richard II",
|
||||
"Richard III",
|
||||
"Merchant of Venice",
|
||||
"Othello",
|
||||
"King Lear"
|
||||
};
|
||||
|
||||
/**
|
||||
* Our data, part 2.
|
||||
*/
|
||||
private String[] mDialogue =
|
||||
{
|
||||
"So shaken as we are, so wan with care," +
|
||||
"Find we a time for frighted peace to pant," +
|
||||
"And breathe short-winded accents of new broils" +
|
||||
"To be commenced in strands afar remote." +
|
||||
"No more the thirsty entrance of this soil" +
|
||||
"Shall daub her lips with her own children's blood;" +
|
||||
"Nor more shall trenching war channel her fields," +
|
||||
"Nor bruise her flowerets with the armed hoofs" +
|
||||
"Of hostile paces: those opposed eyes," +
|
||||
"Which, like the meteors of a troubled heaven," +
|
||||
"All of one nature, of one substance bred," +
|
||||
"Did lately meet in the intestine shock" +
|
||||
"And furious close of civil butchery" +
|
||||
"Shall now, in mutual well-beseeming ranks," +
|
||||
"March all one way and be no more opposed" +
|
||||
"Against acquaintance, kindred and allies:" +
|
||||
"The edge of war, like an ill-sheathed knife," +
|
||||
"No more shall cut his master. Therefore, friends," +
|
||||
"As far as to the sepulchre of Christ," +
|
||||
"Whose soldier now, under whose blessed cross" +
|
||||
"We are impressed and engaged to fight," +
|
||||
"Forthwith a power of English shall we levy;" +
|
||||
"Whose arms were moulded in their mothers' womb" +
|
||||
"To chase these pagans in those holy fields" +
|
||||
"Over whose acres walk'd those blessed feet" +
|
||||
"Which fourteen hundred years ago were nail'd" +
|
||||
"For our advantage on the bitter cross." +
|
||||
"But this our purpose now is twelve month old," +
|
||||
"And bootless 'tis to tell you we will go:" +
|
||||
"Therefore we meet not now. Then let me hear" +
|
||||
"Of you, my gentle cousin Westmoreland," +
|
||||
"What yesternight our council did decree" +
|
||||
"In forwarding this dear expedience.",
|
||||
|
||||
"Hear him but reason in divinity," +
|
||||
"And all-admiring with an inward wish" +
|
||||
"You would desire the king were made a prelate:" +
|
||||
"Hear him debate of commonwealth affairs," +
|
||||
"You would say it hath been all in all his study:" +
|
||||
"List his discourse of war, and you shall hear" +
|
||||
"A fearful battle render'd you in music:" +
|
||||
"Turn him to any cause of policy," +
|
||||
"The Gordian knot of it he will unloose," +
|
||||
"Familiar as his garter: that, when he speaks," +
|
||||
"The air, a charter'd libertine, is still," +
|
||||
"And the mute wonder lurketh in men's ears," +
|
||||
"To steal his sweet and honey'd sentences;" +
|
||||
"So that the art and practic part of life" +
|
||||
"Must be the mistress to this theoric:" +
|
||||
"Which is a wonder how his grace should glean it," +
|
||||
"Since his addiction was to courses vain," +
|
||||
"His companies unletter'd, rude and shallow," +
|
||||
"His hours fill'd up with riots, banquets, sports," +
|
||||
"And never noted in him any study," +
|
||||
"Any retirement, any sequestration" +
|
||||
"From open haunts and popularity.",
|
||||
|
||||
"I come no more to make you laugh: things now," +
|
||||
"That bear a weighty and a serious brow," +
|
||||
"Sad, high, and working, full of state and woe," +
|
||||
"Such noble scenes as draw the eye to flow," +
|
||||
"We now present. Those that can pity, here" +
|
||||
"May, if they think it well, let fall a tear;" +
|
||||
"The subject will deserve it. Such as give" +
|
||||
"Their money out of hope they may believe," +
|
||||
"May here find truth too. Those that come to see" +
|
||||
"Only a show or two, and so agree" +
|
||||
"The play may pass, if they be still and willing," +
|
||||
"I'll undertake may see away their shilling" +
|
||||
"Richly in two short hours. Only they" +
|
||||
"That come to hear a merry bawdy play," +
|
||||
"A noise of targets, or to see a fellow" +
|
||||
"In a long motley coat guarded with yellow," +
|
||||
"Will be deceived; for, gentle hearers, know," +
|
||||
"To rank our chosen truth with such a show" +
|
||||
"As fool and fight is, beside forfeiting" +
|
||||
"Our own brains, and the opinion that we bring," +
|
||||
"To make that only true we now intend," +
|
||||
"Will leave us never an understanding friend." +
|
||||
"Therefore, for goodness' sake, and as you are known" +
|
||||
"The first and happiest hearers of the town," +
|
||||
"Be sad, as we would make ye: think ye see" +
|
||||
"The very persons of our noble story" +
|
||||
"As they were living; think you see them great," +
|
||||
"And follow'd with the general throng and sweat" +
|
||||
"Of thousand friends; then in a moment, see" +
|
||||
"How soon this mightiness meets misery:" +
|
||||
"And, if you can be merry then, I'll say" +
|
||||
"A man may weep upon his wedding-day.",
|
||||
|
||||
"First, heaven be the record to my speech!" +
|
||||
"In the devotion of a subject's love," +
|
||||
"Tendering the precious safety of my prince," +
|
||||
"And free from other misbegotten hate," +
|
||||
"Come I appellant to this princely presence." +
|
||||
"Now, Thomas Mowbray, do I turn to thee," +
|
||||
"And mark my greeting well; for what I speak" +
|
||||
"My body shall make good upon this earth," +
|
||||
"Or my divine soul answer it in heaven." +
|
||||
"Thou art a traitor and a miscreant," +
|
||||
"Too good to be so and too bad to live," +
|
||||
"Since the more fair and crystal is the sky," +
|
||||
"The uglier seem the clouds that in it fly." +
|
||||
"Once more, the more to aggravate the note," +
|
||||
"With a foul traitor's name stuff I thy throat;" +
|
||||
"And wish, so please my sovereign, ere I move," +
|
||||
"What my tongue speaks my right drawn sword may prove.",
|
||||
|
||||
"Now is the winter of our discontent" +
|
||||
"Made glorious summer by this sun of York;" +
|
||||
"And all the clouds that lour'd upon our house" +
|
||||
"In the deep bosom of the ocean buried." +
|
||||
"Now are our brows bound with victorious wreaths;" +
|
||||
"Our bruised arms hung up for monuments;" +
|
||||
"Our stern alarums changed to merry meetings," +
|
||||
"Our dreadful marches to delightful measures." +
|
||||
"Grim-visaged war hath smooth'd his wrinkled front;" +
|
||||
"And now, instead of mounting barded steeds" +
|
||||
"To fright the souls of fearful adversaries," +
|
||||
"He capers nimbly in a lady's chamber" +
|
||||
"To the lascivious pleasing of a lute." +
|
||||
"But I, that am not shaped for sportive tricks," +
|
||||
"Nor made to court an amorous looking-glass;" +
|
||||
"I, that am rudely stamp'd, and want love's majesty" +
|
||||
"To strut before a wanton ambling nymph;" +
|
||||
"I, that am curtail'd of this fair proportion," +
|
||||
"Cheated of feature by dissembling nature," +
|
||||
"Deformed, unfinish'd, sent before my time" +
|
||||
"Into this breathing world, scarce half made up," +
|
||||
"And that so lamely and unfashionable" +
|
||||
"That dogs bark at me as I halt by them;" +
|
||||
"Why, I, in this weak piping time of peace," +
|
||||
"Have no delight to pass away the time," +
|
||||
"Unless to spy my shadow in the sun" +
|
||||
"And descant on mine own deformity:" +
|
||||
"And therefore, since I cannot prove a lover," +
|
||||
"To entertain these fair well-spoken days," +
|
||||
"I am determined to prove a villain" +
|
||||
"And hate the idle pleasures of these days." +
|
||||
"Plots have I laid, inductions dangerous," +
|
||||
"By drunken prophecies, libels and dreams," +
|
||||
"To set my brother Clarence and the king" +
|
||||
"In deadly hate the one against the other:" +
|
||||
"And if King Edward be as true and just" +
|
||||
"As I am subtle, false and treacherous," +
|
||||
"This day should Clarence closely be mew'd up," +
|
||||
"About a prophecy, which says that 'G'" +
|
||||
"Of Edward's heirs the murderer shall be." +
|
||||
"Dive, thoughts, down to my soul: here" +
|
||||
"Clarence comes.",
|
||||
|
||||
"To bait fish withal: if it will feed nothing else," +
|
||||
"it will feed my revenge. He hath disgraced me, and" +
|
||||
"hindered me half a million; laughed at my losses," +
|
||||
"mocked at my gains, scorned my nation, thwarted my" +
|
||||
"bargains, cooled my friends, heated mine" +
|
||||
"enemies; and what's his reason? I am a Jew. Hath" +
|
||||
"not a Jew eyes? hath not a Jew hands, organs," +
|
||||
"dimensions, senses, affections, passions? fed with" +
|
||||
"the same food, hurt with the same weapons, subject" +
|
||||
"to the same diseases, healed by the same means," +
|
||||
"warmed and cooled by the same winter and summer, as" +
|
||||
"a Christian is? If you prick us, do we not bleed?" +
|
||||
"if you tickle us, do we not laugh? if you poison" +
|
||||
"us, do we not die? and if you wrong us, shall we not" +
|
||||
"revenge? If we are like you in the rest, we will" +
|
||||
"resemble you in that. If a Jew wrong a Christian," +
|
||||
"what is his humility? Revenge. If a Christian" +
|
||||
"wrong a Jew, what should his sufferance be by" +
|
||||
"Christian example? Why, revenge. The villany you" +
|
||||
"teach me, I will execute, and it shall go hard but I" +
|
||||
"will better the instruction.",
|
||||
|
||||
"Virtue! a fig! 'tis in ourselves that we are thus" +
|
||||
"or thus. Our bodies are our gardens, to the which" +
|
||||
"our wills are gardeners: so that if we will plant" +
|
||||
"nettles, or sow lettuce, set hyssop and weed up" +
|
||||
"thyme, supply it with one gender of herbs, or" +
|
||||
"distract it with many, either to have it sterile" +
|
||||
"with idleness, or manured with industry, why, the" +
|
||||
"power and corrigible authority of this lies in our" +
|
||||
"wills. If the balance of our lives had not one" +
|
||||
"scale of reason to poise another of sensuality, the" +
|
||||
"blood and baseness of our natures would conduct us" +
|
||||
"to most preposterous conclusions: but we have" +
|
||||
"reason to cool our raging motions, our carnal" +
|
||||
"stings, our unbitted lusts, whereof I take this that" +
|
||||
"you call love to be a sect or scion.",
|
||||
|
||||
"Blow, winds, and crack your cheeks! rage! blow!" +
|
||||
"You cataracts and hurricanoes, spout" +
|
||||
"Till you have drench'd our steeples, drown'd the cocks!" +
|
||||
"You sulphurous and thought-executing fires," +
|
||||
"Vaunt-couriers to oak-cleaving thunderbolts," +
|
||||
"Singe my white head! And thou, all-shaking thunder," +
|
||||
"Smite flat the thick rotundity o' the world!" +
|
||||
"Crack nature's moulds, an germens spill at once," +
|
||||
"That make ingrateful man!"
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* We will use a SpeechView to display each speech. It's just a LinearLayout
|
||||
* with two text fields.
|
||||
*
|
||||
*/
|
||||
private class SpeechView extends LinearLayout {
|
||||
public SpeechView(Context context, String title, String words) {
|
||||
super(context);
|
||||
|
||||
this.setOrientation(VERTICAL);
|
||||
|
||||
// Here we build the child views in code. They could also have
|
||||
// been specified in an XML file.
|
||||
|
||||
mTitle = new TextView(context);
|
||||
mTitle.setText(title);
|
||||
addView(mTitle, new LinearLayout.LayoutParams(
|
||||
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
|
||||
|
||||
mDialogue = new TextView(context);
|
||||
mDialogue.setText(words);
|
||||
addView(mDialogue, new LinearLayout.LayoutParams(
|
||||
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to set the title of a SpeechView
|
||||
*/
|
||||
public void setTitle(String title) {
|
||||
mTitle.setText(title);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to set the dialogue of a SpeechView
|
||||
*/
|
||||
public void setDialogue(String words) {
|
||||
mDialogue.setText(words);
|
||||
}
|
||||
|
||||
private TextView mTitle;
|
||||
private TextView mDialogue;
|
||||
}
|
||||
}
|
||||
116
samples/ApiDemos/src/com/example/android/apis/view/List5.java
Normal file
116
samples/ApiDemos/src/com/example/android/apis/view/List5.java
Normal file
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
/**
|
||||
* A list view example with separators.
|
||||
*/
|
||||
public class List5 extends ListActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setListAdapter(new MyListAdapter(this));
|
||||
}
|
||||
|
||||
private class MyListAdapter extends BaseAdapter {
|
||||
public MyListAdapter(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return mStrings.length;
|
||||
}
|
||||
|
||||
public boolean areAllItemsEnabled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isEnabled(int position) {
|
||||
return !mStrings[position].startsWith("-");
|
||||
}
|
||||
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
TextView tv;
|
||||
if (convertView == null) {
|
||||
tv = (TextView) LayoutInflater.from(mContext).inflate(
|
||||
android.R.layout.simple_expandable_list_item_1, parent, false);
|
||||
} else {
|
||||
tv = (TextView) convertView;
|
||||
}
|
||||
tv.setText(mStrings[position]);
|
||||
return tv;
|
||||
}
|
||||
|
||||
private Context mContext;
|
||||
}
|
||||
|
||||
private 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",
|
||||
"----------",
|
||||
"----------"
|
||||
};
|
||||
|
||||
}
|
||||
410
samples/ApiDemos/src/com/example/android/apis/view/List6.java
Normal file
410
samples/ApiDemos/src/com/example/android/apis/view/List6.java
Normal file
@@ -0,0 +1,410 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
/**
|
||||
* A list view example where the
|
||||
* data comes from a custom
|
||||
* ListAdapter
|
||||
*/
|
||||
public class List6 extends ListActivity
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Use our own list adapter
|
||||
setListAdapter(new SpeechListAdapter(this));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onListItemClick(ListView l, View v, int position, long id)
|
||||
{
|
||||
((SpeechListAdapter)getListAdapter()).toggle(position);
|
||||
}
|
||||
|
||||
/**
|
||||
* A sample ListAdapter that presents content
|
||||
* from arrays of speeches and text.
|
||||
*
|
||||
*/
|
||||
private class SpeechListAdapter extends BaseAdapter {
|
||||
public SpeechListAdapter(Context context)
|
||||
{
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The number of items in the list is determined by the number of speeches
|
||||
* in our array.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getCount()
|
||||
*/
|
||||
public int getCount() {
|
||||
return mTitles.length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Since the data comes from an array, just returning
|
||||
* the index is sufficent to get at the data. If we
|
||||
* were using a more complex data structure, we
|
||||
* would return whatever object represents one
|
||||
* row in the list.
|
||||
*
|
||||
* @see android.widget.ListAdapter#getItem(int)
|
||||
*/
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the array index as a unique id.
|
||||
* @see android.widget.ListAdapter#getItemId(int)
|
||||
*/
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a SpeechView to hold each row.
|
||||
* @see android.widget.ListAdapter#getView(int, android.view.View, android.view.ViewGroup)
|
||||
*/
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
SpeechView sv;
|
||||
if (convertView == null) {
|
||||
sv = new SpeechView(mContext, mTitles[position], mDialogue[position], mExpanded[position]);
|
||||
} else {
|
||||
sv = (SpeechView)convertView;
|
||||
sv.setTitle(mTitles[position]);
|
||||
sv.setDialogue(mDialogue[position]);
|
||||
sv.setExpanded(mExpanded[position]);
|
||||
}
|
||||
|
||||
return sv;
|
||||
}
|
||||
|
||||
public void toggle(int position) {
|
||||
mExpanded[position] = !mExpanded[position];
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* Remember our context so we can use it when constructing views.
|
||||
*/
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* Our data, part 1.
|
||||
*/
|
||||
private String[] mTitles =
|
||||
{
|
||||
"Henry IV (1)",
|
||||
"Henry V",
|
||||
"Henry VIII",
|
||||
"Richard II",
|
||||
"Richard III",
|
||||
"Merchant of Venice",
|
||||
"Othello",
|
||||
"King Lear"
|
||||
};
|
||||
|
||||
/**
|
||||
* Our data, part 2.
|
||||
*/
|
||||
private String[] mDialogue =
|
||||
{
|
||||
"So shaken as we are, so wan with care," +
|
||||
"Find we a time for frighted peace to pant," +
|
||||
"And breathe short-winded accents of new broils" +
|
||||
"To be commenced in strands afar remote." +
|
||||
"No more the thirsty entrance of this soil" +
|
||||
"Shall daub her lips with her own children's blood;" +
|
||||
"Nor more shall trenching war channel her fields," +
|
||||
"Nor bruise her flowerets with the armed hoofs" +
|
||||
"Of hostile paces: those opposed eyes," +
|
||||
"Which, like the meteors of a troubled heaven," +
|
||||
"All of one nature, of one substance bred," +
|
||||
"Did lately meet in the intestine shock" +
|
||||
"And furious close of civil butchery" +
|
||||
"Shall now, in mutual well-beseeming ranks," +
|
||||
"March all one way and be no more opposed" +
|
||||
"Against acquaintance, kindred and allies:" +
|
||||
"The edge of war, like an ill-sheathed knife," +
|
||||
"No more shall cut his master. Therefore, friends," +
|
||||
"As far as to the sepulchre of Christ," +
|
||||
"Whose soldier now, under whose blessed cross" +
|
||||
"We are impressed and engaged to fight," +
|
||||
"Forthwith a power of English shall we levy;" +
|
||||
"Whose arms were moulded in their mothers' womb" +
|
||||
"To chase these pagans in those holy fields" +
|
||||
"Over whose acres walk'd those blessed feet" +
|
||||
"Which fourteen hundred years ago were nail'd" +
|
||||
"For our advantage on the bitter cross." +
|
||||
"But this our purpose now is twelve month old," +
|
||||
"And bootless 'tis to tell you we will go:" +
|
||||
"Therefore we meet not now. Then let me hear" +
|
||||
"Of you, my gentle cousin Westmoreland," +
|
||||
"What yesternight our council did decree" +
|
||||
"In forwarding this dear expedience.",
|
||||
|
||||
"Hear him but reason in divinity," +
|
||||
"And all-admiring with an inward wish" +
|
||||
"You would desire the king were made a prelate:" +
|
||||
"Hear him debate of commonwealth affairs," +
|
||||
"You would say it hath been all in all his study:" +
|
||||
"List his discourse of war, and you shall hear" +
|
||||
"A fearful battle render'd you in music:" +
|
||||
"Turn him to any cause of policy," +
|
||||
"The Gordian knot of it he will unloose," +
|
||||
"Familiar as his garter: that, when he speaks," +
|
||||
"The air, a charter'd libertine, is still," +
|
||||
"And the mute wonder lurketh in men's ears," +
|
||||
"To steal his sweet and honey'd sentences;" +
|
||||
"So that the art and practic part of life" +
|
||||
"Must be the mistress to this theoric:" +
|
||||
"Which is a wonder how his grace should glean it," +
|
||||
"Since his addiction was to courses vain," +
|
||||
"His companies unletter'd, rude and shallow," +
|
||||
"His hours fill'd up with riots, banquets, sports," +
|
||||
"And never noted in him any study," +
|
||||
"Any retirement, any sequestration" +
|
||||
"From open haunts and popularity.",
|
||||
|
||||
"I come no more to make you laugh: things now," +
|
||||
"That bear a weighty and a serious brow," +
|
||||
"Sad, high, and working, full of state and woe," +
|
||||
"Such noble scenes as draw the eye to flow," +
|
||||
"We now present. Those that can pity, here" +
|
||||
"May, if they think it well, let fall a tear;" +
|
||||
"The subject will deserve it. Such as give" +
|
||||
"Their money out of hope they may believe," +
|
||||
"May here find truth too. Those that come to see" +
|
||||
"Only a show or two, and so agree" +
|
||||
"The play may pass, if they be still and willing," +
|
||||
"I'll undertake may see away their shilling" +
|
||||
"Richly in two short hours. Only they" +
|
||||
"That come to hear a merry bawdy play," +
|
||||
"A noise of targets, or to see a fellow" +
|
||||
"In a long motley coat guarded with yellow," +
|
||||
"Will be deceived; for, gentle hearers, know," +
|
||||
"To rank our chosen truth with such a show" +
|
||||
"As fool and fight is, beside forfeiting" +
|
||||
"Our own brains, and the opinion that we bring," +
|
||||
"To make that only true we now intend," +
|
||||
"Will leave us never an understanding friend." +
|
||||
"Therefore, for goodness' sake, and as you are known" +
|
||||
"The first and happiest hearers of the town," +
|
||||
"Be sad, as we would make ye: think ye see" +
|
||||
"The very persons of our noble story" +
|
||||
"As they were living; think you see them great," +
|
||||
"And follow'd with the general throng and sweat" +
|
||||
"Of thousand friends; then in a moment, see" +
|
||||
"How soon this mightiness meets misery:" +
|
||||
"And, if you can be merry then, I'll say" +
|
||||
"A man may weep upon his wedding-day.",
|
||||
|
||||
"First, heaven be the record to my speech!" +
|
||||
"In the devotion of a subject's love," +
|
||||
"Tendering the precious safety of my prince," +
|
||||
"And free from other misbegotten hate," +
|
||||
"Come I appellant to this princely presence." +
|
||||
"Now, Thomas Mowbray, do I turn to thee," +
|
||||
"And mark my greeting well; for what I speak" +
|
||||
"My body shall make good upon this earth," +
|
||||
"Or my divine soul answer it in heaven." +
|
||||
"Thou art a traitor and a miscreant," +
|
||||
"Too good to be so and too bad to live," +
|
||||
"Since the more fair and crystal is the sky," +
|
||||
"The uglier seem the clouds that in it fly." +
|
||||
"Once more, the more to aggravate the note," +
|
||||
"With a foul traitor's name stuff I thy throat;" +
|
||||
"And wish, so please my sovereign, ere I move," +
|
||||
"What my tongue speaks my right drawn sword may prove.",
|
||||
|
||||
"Now is the winter of our discontent" +
|
||||
"Made glorious summer by this sun of York;" +
|
||||
"And all the clouds that lour'd upon our house" +
|
||||
"In the deep bosom of the ocean buried." +
|
||||
"Now are our brows bound with victorious wreaths;" +
|
||||
"Our bruised arms hung up for monuments;" +
|
||||
"Our stern alarums changed to merry meetings," +
|
||||
"Our dreadful marches to delightful measures." +
|
||||
"Grim-visaged war hath smooth'd his wrinkled front;" +
|
||||
"And now, instead of mounting barded steeds" +
|
||||
"To fright the souls of fearful adversaries," +
|
||||
"He capers nimbly in a lady's chamber" +
|
||||
"To the lascivious pleasing of a lute." +
|
||||
"But I, that am not shaped for sportive tricks," +
|
||||
"Nor made to court an amorous looking-glass;" +
|
||||
"I, that am rudely stamp'd, and want love's majesty" +
|
||||
"To strut before a wanton ambling nymph;" +
|
||||
"I, that am curtail'd of this fair proportion," +
|
||||
"Cheated of feature by dissembling nature," +
|
||||
"Deformed, unfinish'd, sent before my time" +
|
||||
"Into this breathing world, scarce half made up," +
|
||||
"And that so lamely and unfashionable" +
|
||||
"That dogs bark at me as I halt by them;" +
|
||||
"Why, I, in this weak piping time of peace," +
|
||||
"Have no delight to pass away the time," +
|
||||
"Unless to spy my shadow in the sun" +
|
||||
"And descant on mine own deformity:" +
|
||||
"And therefore, since I cannot prove a lover," +
|
||||
"To entertain these fair well-spoken days," +
|
||||
"I am determined to prove a villain" +
|
||||
"And hate the idle pleasures of these days." +
|
||||
"Plots have I laid, inductions dangerous," +
|
||||
"By drunken prophecies, libels and dreams," +
|
||||
"To set my brother Clarence and the king" +
|
||||
"In deadly hate the one against the other:" +
|
||||
"And if King Edward be as true and just" +
|
||||
"As I am subtle, false and treacherous," +
|
||||
"This day should Clarence closely be mew'd up," +
|
||||
"About a prophecy, which says that 'G'" +
|
||||
"Of Edward's heirs the murderer shall be." +
|
||||
"Dive, thoughts, down to my soul: here" +
|
||||
"Clarence comes.",
|
||||
|
||||
"To bait fish withal: if it will feed nothing else," +
|
||||
"it will feed my revenge. He hath disgraced me, and" +
|
||||
"hindered me half a million; laughed at my losses," +
|
||||
"mocked at my gains, scorned my nation, thwarted my" +
|
||||
"bargains, cooled my friends, heated mine" +
|
||||
"enemies; and what's his reason? I am a Jew. Hath" +
|
||||
"not a Jew eyes? hath not a Jew hands, organs," +
|
||||
"dimensions, senses, affections, passions? fed with" +
|
||||
"the same food, hurt with the same weapons, subject" +
|
||||
"to the same diseases, healed by the same means," +
|
||||
"warmed and cooled by the same winter and summer, as" +
|
||||
"a Christian is? If you prick us, do we not bleed?" +
|
||||
"if you tickle us, do we not laugh? if you poison" +
|
||||
"us, do we not die? and if you wrong us, shall we not" +
|
||||
"revenge? If we are like you in the rest, we will" +
|
||||
"resemble you in that. If a Jew wrong a Christian," +
|
||||
"what is his humility? Revenge. If a Christian" +
|
||||
"wrong a Jew, what should his sufferance be by" +
|
||||
"Christian example? Why, revenge. The villany you" +
|
||||
"teach me, I will execute, and it shall go hard but I" +
|
||||
"will better the instruction.",
|
||||
|
||||
"Virtue! a fig! 'tis in ourselves that we are thus" +
|
||||
"or thus. Our bodies are our gardens, to the which" +
|
||||
"our wills are gardeners: so that if we will plant" +
|
||||
"nettles, or sow lettuce, set hyssop and weed up" +
|
||||
"thyme, supply it with one gender of herbs, or" +
|
||||
"distract it with many, either to have it sterile" +
|
||||
"with idleness, or manured with industry, why, the" +
|
||||
"power and corrigible authority of this lies in our" +
|
||||
"wills. If the balance of our lives had not one" +
|
||||
"scale of reason to poise another of sensuality, the" +
|
||||
"blood and baseness of our natures would conduct us" +
|
||||
"to most preposterous conclusions: but we have" +
|
||||
"reason to cool our raging motions, our carnal" +
|
||||
"stings, our unbitted lusts, whereof I take this that" +
|
||||
"you call love to be a sect or scion.",
|
||||
|
||||
"Blow, winds, and crack your cheeks! rage! blow!" +
|
||||
"You cataracts and hurricanoes, spout" +
|
||||
"Till you have drench'd our steeples, drown'd the cocks!" +
|
||||
"You sulphurous and thought-executing fires," +
|
||||
"Vaunt-couriers to oak-cleaving thunderbolts," +
|
||||
"Singe my white head! And thou, all-shaking thunder," +
|
||||
"Smite flat the thick rotundity o' the world!" +
|
||||
"Crack nature's moulds, an germens spill at once," +
|
||||
"That make ingrateful man!"
|
||||
};
|
||||
|
||||
/**
|
||||
* Our data, part 3.
|
||||
*/
|
||||
private boolean[] mExpanded =
|
||||
{
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* We will use a SpeechView to display each speech. It's just a LinearLayout
|
||||
* with two text fields.
|
||||
*
|
||||
*/
|
||||
private class SpeechView extends LinearLayout {
|
||||
public SpeechView(Context context, String title, String dialogue, boolean expanded) {
|
||||
super(context);
|
||||
|
||||
this.setOrientation(VERTICAL);
|
||||
|
||||
// Here we build the child views in code. They could also have
|
||||
// been specified in an XML file.
|
||||
|
||||
mTitle = new TextView(context);
|
||||
mTitle.setText(title);
|
||||
addView(mTitle, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
|
||||
|
||||
mDialogue = new TextView(context);
|
||||
mDialogue.setText(dialogue);
|
||||
addView(mDialogue, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
|
||||
|
||||
mDialogue.setVisibility(expanded ? VISIBLE : GONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to set the title of a SpeechView
|
||||
*/
|
||||
public void setTitle(String title) {
|
||||
mTitle.setText(title);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to set the dialogue of a SpeechView
|
||||
*/
|
||||
public void setDialogue(String words) {
|
||||
mDialogue.setText(words);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to expand or hide the dialogue
|
||||
*/
|
||||
public void setExpanded(boolean expanded) {
|
||||
mDialogue.setVisibility(expanded ? VISIBLE : GONE);
|
||||
}
|
||||
|
||||
private TextView mTitle;
|
||||
private TextView mDialogue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.database.Cursor;
|
||||
import android.provider.Contacts.People;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemSelectedListener;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* A list view example where the data comes from a cursor.
|
||||
*/
|
||||
public class List7 extends ListActivity implements OnItemSelectedListener {
|
||||
private static String[] PROJECTION = new String[] {
|
||||
People._ID, People.NAME, People.NUMBER
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.list_7);
|
||||
mPhone = (TextView) findViewById(R.id.phone);
|
||||
getListView().setOnItemSelectedListener(this);
|
||||
|
||||
// Get a cursor with all people
|
||||
Cursor c = getContentResolver().query(People.CONTENT_URI, PROJECTION, null, null, null);
|
||||
startManagingCursor(c);
|
||||
mPhoneColumnIndex = c.getColumnIndex(People.NUMBER);
|
||||
|
||||
ListAdapter adapter = new SimpleCursorAdapter(this,
|
||||
android.R.layout.simple_list_item_1, // Use a template
|
||||
// that displays a
|
||||
// text view
|
||||
c, // Give the cursor to the list adatper
|
||||
new String[] {People.NAME}, // Map the NAME column in the
|
||||
// people database to...
|
||||
new int[] {android.R.id.text1}); // The "text1" view defined in
|
||||
// the XML template
|
||||
setListAdapter(adapter);
|
||||
}
|
||||
|
||||
public void onItemSelected(AdapterView parent, View v, int position, long id) {
|
||||
if (position >= 0) {
|
||||
Cursor c = (Cursor) parent.getItemAtPosition(position);
|
||||
mPhone.setText(c.getString(mPhoneColumnIndex));
|
||||
}
|
||||
}
|
||||
|
||||
public void onNothingSelected(AdapterView parent) {
|
||||
mPhone.setText(R.string.list_7_nothing);
|
||||
|
||||
}
|
||||
|
||||
private int mPhoneColumnIndex;
|
||||
private TextView mPhone;
|
||||
}
|
||||
133
samples/ApiDemos/src/com/example/android/apis/view/List8.java
Normal file
133
samples/ApiDemos/src/com/example/android/apis/view/List8.java
Normal file
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewGroup.LayoutParams;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.AbsListView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* A list view that demonstrates the use of setEmptyView. This example alos uses
|
||||
* a custom layout file that adds some extra buttons to the screen.
|
||||
*/
|
||||
public class List8 extends ListActivity {
|
||||
|
||||
PhotoAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Use a custom layout file
|
||||
setContentView(R.layout.list_8);
|
||||
|
||||
// Tell the list view which view to display when the list is empty
|
||||
getListView().setEmptyView(findViewById(R.id.empty));
|
||||
|
||||
// Set up our adapter
|
||||
mAdapter = new PhotoAdapter(this);
|
||||
setListAdapter(mAdapter);
|
||||
|
||||
// Wire up the clear button to remove all photos
|
||||
Button clear = (Button) findViewById(R.id.clear);
|
||||
clear.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
mAdapter.clearPhotos();
|
||||
} });
|
||||
|
||||
// Wire up the add button to add a new photo
|
||||
Button add = (Button) findViewById(R.id.add);
|
||||
add.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
public void onClick(View v) {
|
||||
mAdapter.addPhotos();
|
||||
} });
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple adapter which maintains an ArrayList of photo resource Ids.
|
||||
* Each photo is displayed as an image. This adapter supports clearing the
|
||||
* list of photos and adding a new photo.
|
||||
*
|
||||
*/
|
||||
public class PhotoAdapter extends BaseAdapter {
|
||||
|
||||
private Integer[] mPhotoPool = {
|
||||
R.drawable.sample_thumb_0, R.drawable.sample_thumb_1, R.drawable.sample_thumb_2,
|
||||
R.drawable.sample_thumb_3, R.drawable.sample_thumb_4, R.drawable.sample_thumb_5,
|
||||
R.drawable.sample_thumb_6, R.drawable.sample_thumb_7};
|
||||
|
||||
private ArrayList<Integer> mPhotos = new ArrayList<Integer>();
|
||||
|
||||
public PhotoAdapter(Context c) {
|
||||
mContext = c;
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return mPhotos.size();
|
||||
}
|
||||
|
||||
public Object getItem(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
// Make an ImageView to show a photo
|
||||
ImageView i = new ImageView(mContext);
|
||||
|
||||
i.setImageResource(mPhotos.get(position));
|
||||
i.setAdjustViewBounds(true);
|
||||
i.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.WRAP_CONTENT,
|
||||
LayoutParams.WRAP_CONTENT));
|
||||
// Give it a nice background
|
||||
i.setBackgroundResource(R.drawable.picture_frame);
|
||||
return i;
|
||||
}
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public void clearPhotos() {
|
||||
mPhotos.clear();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void addPhotos() {
|
||||
int whichPhoto = (int)Math.round(Math.random() * (mPhotoPool.length - 1));
|
||||
int newPhoto = mPhotoPool[whichPhoto];
|
||||
mPhotos.add(newPhoto);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
320
samples/ApiDemos/src/com/example/android/apis/view/List9.java
Normal file
320
samples/ApiDemos/src/com/example/android/apis/view/List9.java
Normal file
@@ -0,0 +1,320 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.View;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.WindowManager;
|
||||
import android.view.WindowManager.LayoutParams;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
/**
|
||||
* Another variation of the list of cheeses. In this case, we use
|
||||
* {@link AbsListView#setOnScrollListener(AbsListView.OnScrollListener)
|
||||
* AbsListView#setOnItemScrollListener(AbsListView.OnItemScrollListener)} to display the
|
||||
* first letter of the visible range of cheeses.
|
||||
*/
|
||||
public class List9 extends ListActivity implements ListView.OnScrollListener {
|
||||
|
||||
private final class RemoveWindow implements Runnable {
|
||||
public void run() {
|
||||
removeWindow();
|
||||
}
|
||||
}
|
||||
|
||||
private RemoveWindow mRemoveWindow = new RemoveWindow();
|
||||
Handler mHandler = new Handler();
|
||||
private WindowManager mWindowManager;
|
||||
private TextView mDialogText;
|
||||
private boolean mShowing;
|
||||
private boolean mReady;
|
||||
private char mPrevLetter = Character.MIN_VALUE;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
|
||||
|
||||
// Use an existing ListAdapter that will map an array
|
||||
// of strings to TextViews
|
||||
setListAdapter(new ArrayAdapter<String>(this,
|
||||
android.R.layout.simple_list_item_1, mStrings));
|
||||
|
||||
getListView().setOnScrollListener(this);
|
||||
|
||||
LayoutInflater inflate = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
|
||||
mDialogText = (TextView) inflate.inflate(R.layout.list_position, null);
|
||||
mDialogText.setVisibility(View.INVISIBLE);
|
||||
|
||||
mHandler.post(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
mReady = true;
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
|
||||
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
|
||||
WindowManager.LayoutParams.TYPE_APPLICATION,
|
||||
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
|
||||
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
|
||||
PixelFormat.TRANSLUCENT);
|
||||
mWindowManager.addView(mDialogText, lp);
|
||||
}});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
mReady = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
removeWindow();
|
||||
mReady = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
mWindowManager.removeView(mDialogText);
|
||||
mReady = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
int lastItem = firstVisibleItem + visibleItemCount - 1;
|
||||
if (mReady) {
|
||||
char firstLetter = mStrings[firstVisibleItem].charAt(0);
|
||||
|
||||
if (!mShowing && firstLetter != mPrevLetter) {
|
||||
|
||||
mShowing = true;
|
||||
mDialogText.setVisibility(View.VISIBLE);
|
||||
|
||||
|
||||
}
|
||||
mDialogText.setText(((Character)firstLetter).toString());
|
||||
mHandler.removeCallbacks(mRemoveWindow);
|
||||
mHandler.postDelayed(mRemoveWindow, 3000);
|
||||
mPrevLetter = firstLetter;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
}
|
||||
|
||||
|
||||
private void removeWindow() {
|
||||
if (mShowing) {
|
||||
mShowing = false;
|
||||
mDialogText.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
private 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",
|
||||
"Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois",
|
||||
"Brebis du Puyfaucon", "Bresse Bleu", "Brick", "Brie",
|
||||
"Brie de Meaux", "Brie de Melun", "Brillat-Savarin", "Brin",
|
||||
"Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)",
|
||||
"Briquette de Brebis", "Briquette du Forez", "Broccio",
|
||||
"Broccio Demi-Affine", "Brousse du Rove", "Bruder Basil",
|
||||
"Brusselae Kaas (Fromage de Bruxelles)", "Bryndza",
|
||||
"Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase",
|
||||
"Button (Innes)", "Buxton Blue", "Cabecou", "Caboc", "Cabrales",
|
||||
"Cachaille", "Caciocavallo", "Caciotta", "Caerphilly",
|
||||
"Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
|
||||
"Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux",
|
||||
"Capricorn Goat", "Capriole Banon", "Carre de l'Est",
|
||||
"Casciotta di Urbino", "Cashel Blue", "Castellano", "Castelleno",
|
||||
"Castelmagno", "Castelo Branco", "Castigliano", "Cathelain",
|
||||
"Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou",
|
||||
"Chabichou du Poitou", "Chabis de Gatine", "Chaource", "Charolais",
|
||||
"Chaumes", "Cheddar", "Cheddar Clothbound", "Cheshire", "Chevres",
|
||||
"Chevrotin des Aravis", "Chontaleno", "Civray",
|
||||
"Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby",
|
||||
"Cold Pack", "Comte", "Coolea", "Cooleney", "Coquetdale",
|
||||
"Corleggy", "Cornish Pepper", "Cotherstone", "Cotija",
|
||||
"Cottage Cheese", "Cottage Cheese (Australian)", "Cougar Gold",
|
||||
"Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
|
||||
"Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche",
|
||||
"Crescenza", "Croghan", "Crottin de Chavignol",
|
||||
"Crottin du Chavignol", "Crowdie", "Crowley", "Cuajada", "Curd",
|
||||
"Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
|
||||
"Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo",
|
||||
"Danish Fontina", "Daralagjazsky", "Dauphin", "Delice des Fiouves",
|
||||
"Denhany Dorset Drum", "Derby", "Dessertnyj Belyj", "Devon Blue",
|
||||
"Devon Garland", "Dolcelatte", "Doolin", "Doppelrhamstufel",
|
||||
"Dorset Blue Vinney", "Double Gloucester", "Double Worcester",
|
||||
"Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra",
|
||||
"Dunlop", "Dunsyre Blue", "Duroblando", "Durrus",
|
||||
"Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz",
|
||||
"Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne",
|
||||
"Esbareich", "Esrom", "Etorki", "Evansdale Farmhouse Brie",
|
||||
"Evora De L'Alentejo", "Exmoor Blue", "Explorateur", "Feta",
|
||||
"Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle",
|
||||
"Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis",
|
||||
"Flor de Guia", "Flower Marie", "Folded",
|
||||
"Folded cheese with mint", "Fondant de Brebis", "Fontainebleau",
|
||||
"Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus",
|
||||
"Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire",
|
||||
"Fourme de Montbrison", "Fresh Jack", "Fresh Mozzarella",
|
||||
"Fresh Ricotta", "Fresh Truffles", "Fribourgeois", "Friesekaas",
|
||||
"Friesian", "Friesla", "Frinault", "Fromage a Raclette",
|
||||
"Fromage Corse", "Fromage de Montagne de Savoie", "Fromage Frais",
|
||||
"Fruit Cream Cheese", "Frying Cheese", "Fynbo", "Gabriel",
|
||||
"Galette du Paludier", "Galette Lyonnaise",
|
||||
"Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail",
|
||||
"Garrotxa", "Gastanberra", "Geitost", "Gippsland Blue", "Gjetost",
|
||||
"Gloucester", "Golden Cross", "Gorgonzola", "Gornyaltajski",
|
||||
"Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost",
|
||||
"Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel",
|
||||
"Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh",
|
||||
"Greve", "Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny",
|
||||
"Halloumi", "Halloumy (Australian)", "Haloumi-Style Cheese",
|
||||
"Harbourne Blue", "Havarti", "Heidi Gruyere", "Hereford Hop",
|
||||
"Herrgardsost", "Herriot Farmhouse", "Herve", "Hipi Iti",
|
||||
"Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster",
|
||||
"Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu",
|
||||
"Isle of Mull", "Jarlsberg", "Jermi Tortes", "Jibneh Arabieh",
|
||||
"Jindi Brie", "Jubilee Blue", "Juustoleipa", "Kadchgall", "Kaseri",
|
||||
"Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine",
|
||||
"Kikorangi", "King Island Cape Wickham Brie", "King River Gold",
|
||||
"Klosterkaese", "Knockalara", "Kugelkase", "L'Aveyronnais",
|
||||
"L'Ecir de l'Aubrac", "La Taupiniere", "La Vache Qui Rit",
|
||||
"Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire",
|
||||
"Langres", "Lappi", "Laruns", "Lavistown", "Le Brin",
|
||||
"Le Fium Orbo", "Le Lacandou", "Le Roule", "Leafield", "Lebbene",
|
||||
"Leerdammer", "Leicester", "Leyden", "Limburger",
|
||||
"Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer",
|
||||
"Little Rydings", "Livarot", "Llanboidy", "Llanglofan Farmhouse",
|
||||
"Loch Arthur Farmhouse", "Loddiswell Avondale", "Longhorn",
|
||||
"Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam", "Macconais",
|
||||
"Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego",
|
||||
"Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses",
|
||||
"Maredsous", "Margotin", "Maribo", "Maroilles", "Mascares",
|
||||
"Mascarpone", "Mascarpone (Australian)", "Mascarpone Torta",
|
||||
"Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse",
|
||||
"Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)",
|
||||
"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",
|
||||
"Syrian (Armenian String)", "Tala", "Taleggio", "Tamie",
|
||||
"Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea",
|
||||
"Testouri", "Tete de Moine", "Tetilla", "Texas Goat Cheese",
|
||||
"Tibet", "Tillamook Cheddar", "Tilsit", "Timboon Brie", "Toma",
|
||||
"Tomme Brulee", "Tomme d'Abondance", "Tomme de Chevre",
|
||||
"Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans",
|
||||
"Tommes", "Torta del Casar", "Toscanello", "Touree de L'Aubier",
|
||||
"Tourmalet", "Trappe (Veritable)", "Trois Cornes De Vendee",
|
||||
"Tronchon", "Trou du Cru", "Truffe", "Tupi", "Turunmaa",
|
||||
"Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa",
|
||||
"Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco",
|
||||
"Vendomois", "Vieux Corse", "Vignotte", "Vulscombe",
|
||||
"Waimata Farmhouse Blue", "Washed Rind Cheese (Australian)",
|
||||
"Waterloo", "Weichkaese", "Wellington", "Wensleydale",
|
||||
"White Stilton", "Whitestone Farmhouse", "Wigmore",
|
||||
"Woodside Cabecou", "Xanadu", "Xynotyro", "Yarg Cornish",
|
||||
"Yarra Valley Pyramid", "Yorkshire Blue", "Zamorano",
|
||||
"Zanetti Grana Padano", "Zanetti Parmigiano Reggiano"};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.Button;
|
||||
import android.widget.ProgressBar;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates how to use progress bars as widgets and in the title bar. The progress bar
|
||||
* in the title will be shown until the progress is complete, at which point it fades away.
|
||||
*/
|
||||
public class ProgressBar1 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Request the progress bar to be shown in the title
|
||||
requestWindowFeature(Window.FEATURE_PROGRESS);
|
||||
setContentView(R.layout.progressbar_1);
|
||||
setProgressBarVisibility(true);
|
||||
|
||||
final ProgressBar progressHorizontal = (ProgressBar) findViewById(R.id.progress_horizontal);
|
||||
setProgress(progressHorizontal.getProgress() * 100);
|
||||
setSecondaryProgress(progressHorizontal.getSecondaryProgress() * 100);
|
||||
|
||||
Button button = (Button) findViewById(R.id.increase);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
progressHorizontal.incrementProgressBy(1);
|
||||
// Title progress is in range 0..10000
|
||||
setProgress(100 * progressHorizontal.getProgress());
|
||||
}
|
||||
});
|
||||
|
||||
button = (Button) findViewById(R.id.decrease);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
progressHorizontal.incrementProgressBy(-1);
|
||||
// Title progress is in range 0..10000
|
||||
setProgress(100 * progressHorizontal.getProgress());
|
||||
}
|
||||
});
|
||||
|
||||
button = (Button) findViewById(R.id.increase_secondary);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
progressHorizontal.incrementSecondaryProgressBy(1);
|
||||
// Title progress is in range 0..10000
|
||||
setSecondaryProgress(100 * progressHorizontal.getSecondaryProgress());
|
||||
}
|
||||
});
|
||||
|
||||
button = (Button) findViewById(R.id.decrease_secondary);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
progressHorizontal.incrementSecondaryProgressBy(-1);
|
||||
// Title progress is in range 0..10000
|
||||
setSecondaryProgress(100 * progressHorizontal.getSecondaryProgress());
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.Window;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates the use of indeterminate progress bars as widgets and in the
|
||||
* window's title bar. The widgets show the 3 different sizes of circular
|
||||
* progress bars that can be used.
|
||||
*/
|
||||
public class ProgressBar2 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Request for the progress bar to be shown in the title
|
||||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
||||
|
||||
setContentView(R.layout.progressbar_2);
|
||||
|
||||
// Make sure the progress bar is visible
|
||||
setProgressBarVisibility(true);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
/**
|
||||
* Demonstrates the use of progress dialogs. Uses {@link Activity#onCreateDialog}
|
||||
* and {@link Activity#showDialog} to ensure the dialogs will be properly saved
|
||||
* and restored.
|
||||
*/
|
||||
public class ProgressBar3 extends Activity {
|
||||
|
||||
ProgressDialog mDialog1;
|
||||
ProgressDialog mDialog2;
|
||||
|
||||
private static final int DIALOG1_KEY = 0;
|
||||
private static final int DIALOG2_KEY = 1;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.progressbar_3);
|
||||
|
||||
Button button = (Button) findViewById(R.id.showIndeterminate);
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
showDialog(DIALOG1_KEY);
|
||||
}
|
||||
});
|
||||
|
||||
button = (Button) findViewById(R.id.showIndeterminateNoTitle);
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
showDialog(DIALOG2_KEY);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Dialog onCreateDialog(int id) {
|
||||
switch (id) {
|
||||
case DIALOG1_KEY: {
|
||||
ProgressDialog dialog = new ProgressDialog(this);
|
||||
dialog.setTitle("Indeterminate");
|
||||
dialog.setMessage("Please wait while loading...");
|
||||
dialog.setIndeterminate(true);
|
||||
dialog.setCancelable(true);
|
||||
return dialog;
|
||||
}
|
||||
case DIALOG2_KEY: {
|
||||
ProgressDialog dialog = new ProgressDialog(this);
|
||||
dialog.setMessage("Please wait while loading...");
|
||||
dialog.setIndeterminate(true);
|
||||
dialog.setCancelable(true);
|
||||
return dialog;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.Window;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates how to use an indetermiate progress indicator in the window's title bar.
|
||||
*/
|
||||
public class ProgressBar4 extends Activity {
|
||||
private boolean mToggleIndeterminate = false;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Request progress bar
|
||||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
||||
setContentView(R.layout.progressbar_4);
|
||||
setProgressBarIndeterminateVisibility(mToggleIndeterminate);
|
||||
|
||||
Button button = (Button) findViewById(R.id.toggle);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mToggleIndeterminate = !mToggleIndeterminate;
|
||||
setProgressBarIndeterminateVisibility(mToggleIndeterminate);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import android.widget.RadioGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
|
||||
public class RadioGroup1 extends Activity implements RadioGroup.OnCheckedChangeListener,
|
||||
View.OnClickListener {
|
||||
|
||||
private TextView mChoice;
|
||||
private RadioGroup mRadioGroup;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.radio_group_1);
|
||||
mRadioGroup = (RadioGroup) findViewById(R.id.menu);
|
||||
|
||||
// test adding a radio button programmatically
|
||||
RadioButton newRadioButton = new RadioButton(this);
|
||||
newRadioButton.setText(R.string.radio_group_snack);
|
||||
newRadioButton.setId(R.id.snack);
|
||||
LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams(
|
||||
RadioGroup.LayoutParams.WRAP_CONTENT,
|
||||
RadioGroup.LayoutParams.WRAP_CONTENT);
|
||||
mRadioGroup.addView(newRadioButton, 0, layoutParams);
|
||||
|
||||
// test listening to checked change events
|
||||
String selection = getString(R.string.radio_group_selection);
|
||||
mRadioGroup.setOnCheckedChangeListener(this);
|
||||
mChoice = (TextView) findViewById(R.id.choice);
|
||||
mChoice.setText(selection + mRadioGroup.getCheckedRadioButtonId());
|
||||
|
||||
// test clearing the selection
|
||||
Button clearButton = (Button) findViewById(R.id.clear);
|
||||
clearButton.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void onCheckedChanged(RadioGroup group, int checkedId) {
|
||||
String selection = getString(R.string.radio_group_selection);
|
||||
String none = getString(R.string.radio_group_none);
|
||||
mChoice.setText(selection +
|
||||
(checkedId == View.NO_ID ? none : checkedId));
|
||||
}
|
||||
|
||||
public void onClick(View v) {
|
||||
mRadioGroup.clearCheck();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.RatingBar;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* Demonstrates how to use a rating bar
|
||||
*/
|
||||
public class RatingBar1 extends Activity implements RatingBar.OnRatingBarChangeListener {
|
||||
RatingBar mSmallRatingBar;
|
||||
RatingBar mIndicatorRatingBar;
|
||||
TextView mRatingText;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.ratingbar_1);
|
||||
|
||||
mRatingText = (TextView) findViewById(R.id.rating);
|
||||
|
||||
// We copy the most recently changed rating on to these indicator-only
|
||||
// rating bars
|
||||
mIndicatorRatingBar = (RatingBar) findViewById(R.id.indicator_ratingbar);
|
||||
mSmallRatingBar = (RatingBar) findViewById(R.id.small_ratingbar);
|
||||
|
||||
// The different rating bars in the layout. Assign the listener to us.
|
||||
((RatingBar)findViewById(R.id.ratingbar1)).setOnRatingBarChangeListener(this);
|
||||
((RatingBar)findViewById(R.id.ratingbar2)).setOnRatingBarChangeListener(this);
|
||||
}
|
||||
|
||||
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromTouch) {
|
||||
final int numStars = ratingBar.getNumStars();
|
||||
mRatingText.setText(
|
||||
getString(R.string.ratingbar_rating) + " " + rating + "/" + numStars);
|
||||
|
||||
// Since this rating bar is updated to reflect any of the other rating
|
||||
// bars, we should update it to the current values.
|
||||
if (mIndicatorRatingBar.getNumStars() != numStars) {
|
||||
mIndicatorRatingBar.setNumStars(numStars);
|
||||
mSmallRatingBar.setNumStars(numStars);
|
||||
}
|
||||
if (mIndicatorRatingBar.getRating() != rating) {
|
||||
mIndicatorRatingBar.setRating(rating);
|
||||
mSmallRatingBar.setRating(rating);
|
||||
}
|
||||
final float ratingBarStepSize = ratingBar.getStepSize();
|
||||
if (mIndicatorRatingBar.getStepSize() != ratingBarStepSize) {
|
||||
mIndicatorRatingBar.setStepSize(ratingBarStepSize);
|
||||
mSmallRatingBar.setStepSize(ratingBarStepSize);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* A simple layout which demonstrates stretching a view to fill the space between two other views.
|
||||
*/
|
||||
public class RelativeLayout1 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.relative_layout_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Builds building a simple form using a RelativeLayout
|
||||
*
|
||||
*/
|
||||
public class RelativeLayout2 extends Activity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.relative_layout_2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class ScrollBar1 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.scrollbar1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class ScrollBar2 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.scrollbar2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
public class ScrollBar3 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.scrollbar3);
|
||||
|
||||
findViewById(R.id.view3).setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates wrapping a layout in a ScrollView.
|
||||
*
|
||||
*/
|
||||
public class ScrollView1 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.scroll_view_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Button;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates wrapping a layout in a ScrollView.
|
||||
*
|
||||
*/
|
||||
public class ScrollView2 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.scroll_view_2);
|
||||
|
||||
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
|
||||
for (int i = 2; i < 64; i++) {
|
||||
TextView textView = new TextView(this);
|
||||
textView.setText("Text View " + i);
|
||||
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.FILL_PARENT,
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||
);
|
||||
layout.addView(textView, p);
|
||||
|
||||
Button buttonView = new Button(this);
|
||||
buttonView.setText("Button " + i);
|
||||
layout.addView(buttonView, p);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
|
||||
/**
|
||||
* Demonstrates how to use a seek bar
|
||||
*/
|
||||
public class SeekBar1 extends Activity implements SeekBar.OnSeekBarChangeListener {
|
||||
|
||||
SeekBar mSeekBar;
|
||||
TextView mProgressText;
|
||||
TextView mTrackingText;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.seekbar_1);
|
||||
|
||||
mSeekBar = (SeekBar)findViewById(R.id.seek);
|
||||
mSeekBar.setOnSeekBarChangeListener(this);
|
||||
mProgressText = (TextView)findViewById(R.id.progress);
|
||||
mTrackingText = (TextView)findViewById(R.id.tracking);
|
||||
}
|
||||
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
|
||||
mProgressText.setText(progress + " " +
|
||||
getString(R.string.seekbar_from_touch) + "=" + fromTouch);
|
||||
}
|
||||
|
||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
mTrackingText.setText(getString(R.string.seekbar_tracking_on));
|
||||
}
|
||||
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
mTrackingText.setText(getString(R.string.seekbar_tracking_off));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
// Need the following import to get access to the app resources, since this
|
||||
// class is in a sub-package.
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
|
||||
|
||||
public class Spinner1 extends Activity {
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.spinner_1);
|
||||
|
||||
Spinner s1 = (Spinner) findViewById(R.id.spinner1);
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
|
||||
this, R.array.colors, android.R.layout.simple_spinner_item);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
s1.setAdapter(adapter);
|
||||
|
||||
Spinner s2 = (Spinner) findViewById(R.id.spinner2);
|
||||
adapter = ArrayAdapter.createFromResource(this, R.array.planets,
|
||||
android.R.layout.simple_spinner_item);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
s2.setAdapter(adapter);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class TableLayout1 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.Button;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
public class TableLayout10 extends Activity {
|
||||
private boolean mShrink;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_10);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
/**
|
||||
* <p>This example shows how to use horizontal gravity in a table layout.</p>
|
||||
*/
|
||||
public class TableLayout11 extends Activity {
|
||||
private boolean mShrink;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_11);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
/**
|
||||
* <p>This example shows how to use cell spanning in a table layout.</p>
|
||||
*/
|
||||
public class TableLayout12 extends Activity {
|
||||
private boolean mShrink;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_12);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class TableLayout2 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class TableLayout3 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_3);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class TableLayout4 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_4);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class TableLayout5 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_5);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
|
||||
public class TableLayout6 extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_6);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
|
||||
public class TableLayout7 extends Activity {
|
||||
private boolean mShortcutsCollapsed;
|
||||
private boolean mCheckmarksCollapsed;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_7);
|
||||
|
||||
final TableLayout table = (TableLayout) findViewById(R.id.menu);
|
||||
Button button = (Button) findViewById(R.id.toggle1);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mShortcutsCollapsed = !mShortcutsCollapsed;
|
||||
table.setColumnCollapsed(2, mShortcutsCollapsed);
|
||||
}
|
||||
});
|
||||
button = (Button) findViewById(R.id.toggle2);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mCheckmarksCollapsed = !mCheckmarksCollapsed;
|
||||
table.setColumnCollapsed(0, mCheckmarksCollapsed);
|
||||
}
|
||||
});
|
||||
|
||||
mCheckmarksCollapsed = table.isColumnCollapsed(0);
|
||||
mShortcutsCollapsed = table.isColumnCollapsed(2);
|
||||
|
||||
appendRow(table);
|
||||
}
|
||||
|
||||
private void appendRow(TableLayout table) {
|
||||
TableRow row = new TableRow(this);
|
||||
|
||||
TextView label = new TextView(this);
|
||||
label.setText(R.string.table_layout_7_quit);
|
||||
label.setPadding(3, 3, 3, 3);
|
||||
|
||||
TextView shortcut = new TextView(this);
|
||||
shortcut.setText(R.string.table_layout_7_ctrlq);
|
||||
shortcut.setPadding(3, 3, 3, 3);
|
||||
shortcut.setGravity(Gravity.RIGHT | Gravity.TOP);
|
||||
|
||||
row.addView(label, new TableRow.LayoutParams(1));
|
||||
row.addView(shortcut, new TableRow.LayoutParams());
|
||||
|
||||
table.addView(row, new TableLayout.LayoutParams());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.Button;
|
||||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
public class TableLayout8 extends Activity {
|
||||
private boolean mStretch;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_8);
|
||||
|
||||
final TableLayout table = (TableLayout) findViewById(R.id.menu);
|
||||
Button button = (Button) findViewById(R.id.toggle);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mStretch = !mStretch;
|
||||
table.setColumnStretchable(1, mStretch);
|
||||
}
|
||||
});
|
||||
|
||||
mStretch = table.isColumnStretchable(1);
|
||||
|
||||
appendRow(table);
|
||||
}
|
||||
|
||||
private void appendRow(TableLayout table) {
|
||||
TableRow row = new TableRow(this);
|
||||
|
||||
TextView label = new TextView(this);
|
||||
label.setText(R.string.table_layout_8_quit);
|
||||
label.setPadding(3, 3, 3, 3);
|
||||
|
||||
TextView shortcut = new TextView(this);
|
||||
shortcut.setText(R.string.table_layout_8_ctrlq);
|
||||
shortcut.setPadding(3, 3, 3, 3);
|
||||
shortcut.setGravity(Gravity.RIGHT | Gravity.TOP);
|
||||
|
||||
row.addView(label, new TableRow.LayoutParams(1));
|
||||
row.addView(shortcut, new TableRow.LayoutParams());
|
||||
|
||||
table.addView(row, new TableLayout.LayoutParams());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2007 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.widget.TableLayout;
|
||||
import android.widget.Button;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
|
||||
public class TableLayout9 extends Activity {
|
||||
private boolean mShrink;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.table_layout_9);
|
||||
|
||||
final TableLayout table = (TableLayout) findViewById(R.id.menu);
|
||||
Button button = (Button) findViewById(R.id.toggle);
|
||||
button.setOnClickListener(new Button.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mShrink = !mShrink;
|
||||
table.setColumnShrinkable(0, mShrink);
|
||||
}
|
||||
});
|
||||
|
||||
mShrink = table.isColumnShrinkable(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2008 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.view;
|
||||
|
||||
import android.app.TabActivity;
|
||||
import android.os.Bundle;
|
||||
import android.widget.TabHost;
|
||||
import android.widget.TabHost.TabSpec;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* An example of tabs that uses labels ({@link TabSpec#setIndicator(CharSequence)})
|
||||
* for its indicators and views by id from a layout file ({@link TabSpec#setContent(int)}).
|
||||
*/
|
||||
public class Tabs1 extends TabActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
TabHost tabHost = getTabHost();
|
||||
|
||||
LayoutInflater.from(this).inflate(R.layout.tabs1, tabHost.getTabContentView(), true);
|
||||
|
||||
tabHost.addTab(tabHost.newTabSpec("tab1")
|
||||
.setIndicator("tab1")
|
||||
.setContent(R.id.view1));
|
||||
tabHost.addTab(tabHost.newTabSpec("tab3")
|
||||
.setIndicator("tab2")
|
||||
.setContent(R.id.view2));
|
||||
tabHost.addTab(tabHost.newTabSpec("tab3")
|
||||
.setIndicator("tab3")
|
||||
.setContent(R.id.view3));
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user