当前位置: 编程技术>移动开发
本页文章导读:
▪drawable-mdpi,drawable-ldpi这几个文件夹的功用 drawable-mdpi,drawable-ldpi这几个文件夹的作用
在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。 drawable- hdpi、drawab.........
▪ 贪食蛇开发有关问题3 贪食蛇开发问题3
很早以前就听说,学编程时写出来的,不是看出来的。。认认真真的写个能用的东西确实能让人成长很多,至少我在开发这个贪食蛇的时候,我获取了很多,昨天以为自.........
▪ ListView跟各种Adapter的使用 ListView和各种Adapter的使用
1,和最简单的ArrayAdapter的使用:
package com.wt.app;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
public class App .........
[1]drawable-mdpi,drawable-ldpi这几个文件夹的功用
来源: 互联网 发布时间: 2014-02-18
drawable-mdpi,drawable-ldpi这几个文件夹的作用
在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。
[2] 贪食蛇开发有关问题3
来源: 互联网 发布时间: 2014-02-18
贪食蛇开发问题3
恩,谢谢
很早以前就听说,学编程时写出来的,不是看出来的。。认认真真的写个能用的东西确实能让人成长很多,至少我在开发这个贪食蛇的时候,我获取了很多,昨天以为自己克服了屏幕的问题,结果真机测试的时候,屏幕还是出问题了,在手机上屏幕的上方会出现一个横栏,而实际的用的屏幕并没有那么大,后来我看了NOKIA的界面开发文档才知道用哪个界面大小。
昨天说要把各个模块细分下去,今天实行下去发现并没有那么简单,在写的时候要不断地分析,怎样才能让代码更简单,更容易看,更规范,更有章法。。在不断写的过程中,我觉得我也在进步。。此刻我深深的觉得 开发文档非常难写,特别是当没开发过这个游戏的时候,完全不知道会用的什么东西,应该怎样写,应该要有什么类,或者当开发的项目多了,也有了一个清晰地框架,但是对于现在的我来说,还很模糊,我只能凭着自己的感觉去写,怎么让自己的代码,更内聚,更具有可用性,更健壮。。可能有些人觉得写个贪食蛇也这么多的感慨,不过我的最近的座右铭:选择我爱的,爱我选择的。我选择了这个,所以我应该爱她,爱她就应该让她更加完美,不管她是一个简单的东西,还是复杂的。。
1 楼
kevinlynx
2011-01-17
找点OO、设计模式的书看看。开发之前先作详细的设计,整理模块结构,整理类结构,甚至类接口规划,总之就是在实际编码之前作足够的规划。
2 楼
一口三个汉堡
2011-01-17
kevinlynx 写道
找点OO、设计模式的书看看。开发之前先作详细的设计,整理模块结构,整理类结构,甚至类接口规划,总之就是在实际编码之前作足够的规划。
恩,谢谢
[3] ListView跟各种Adapter的使用
来源: 互联网 发布时间: 2014-02-18
ListView和各种Adapter的使用
1,和最简单的ArrayAdapter的使用:
2,和SimpleAdapter的使用:
main.xml
row.xml
3,和SimpleCursorAdapter的使用:
1,和最简单的ArrayAdapter的使用:
package com.wt.app; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListAdapter; public class App extends ListActivity { String[] array={/*"aaa","bbb","ccc"*/}; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //为空时的显示内容 this.getListView().setEmptyView(findViewById(R.id.empty)); ListAdapter adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,array); this.setListAdapter(adapter); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/empty" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="Nothing" /> </LinearLayout>
2,和SimpleAdapter的使用:
package com.wt.app; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnCreateContextMenuListener; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.AdapterView.OnItemClickListener; public class App extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //绑定Layout里面的ListView ListView list = (ListView) findViewById(R.id.ListView01); //生成动态数组,加入数据 ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); int[] images=new int[]{android.R.drawable.ic_menu_add,android.R.drawable.ic_menu_delete,android.R.drawable.ic_menu_edit,android.R.drawable.ic_menu_view}; for(int i=0;i<4;i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("itemImage", images[i]);//图像资源的ID map.put("itemTitle", "Title "+i); map.put("itemText", "this is Text "+i); listItem.add(map); } //生成适配器的Item和动态数组对应的元素 SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源 R.layout.row,//ListItem的XML实现 //动态数组与ImageItem对应的子项 new String[] {"itemImage","itemTitle", "itemText"}, //ImageItem的XML文件里面的一个ImageView,两个TextView ID new int[] {R.id.itemImage,R.id.itemTitle,R.id.itemText} ); //添加并且显示 list.setAdapter(listItemAdapter); //添加点击 list.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { setTitle("点击第"+arg2+"个项目"); } }); //添加长按点击 list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { menu.setHeaderTitle("长按菜单-ContextMenu"); menu.add(0, 0, 0, "弹出长按菜单0"); menu.add(0, 1, 0, "弹出长按菜单1"); } }); } //长按菜单响应函数 @Override public boolean onContextItemSelected(MenuItem item) { setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); return super.onContextItemSelected(item); } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ListView01" /> </LinearLayout>\
row.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingTop="4dip" android:paddingBottom="4dip" android:paddingLeft="12dip" android:paddingRight="12dip"> <ImageView android:paddingTop="12dip" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/itemImage" /> <TextView android:layout_height="wrap_content" android:textSize="20dip" android:layout_width="fill_parent" android:id="@+id/itemTitle" /> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_below="@+id/itemTitle" android:id="@+id/itemText" /> </RelativeLayout>
3,和SimpleCursorAdapter的使用:
package com.wt.app; import android.app.Activity; import android.app.PendingIntent; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.database.CursorWrapper; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts.People; import android.telephony.PhoneNumberUtils; import android.telephony.gsm.SmsManager; import android.util.Log; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnCreateContextMenuListener; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class App extends Activity { private static final String TAG="App"; ListView listView; ListAdapter adapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.main); LinearLayout linearLayout=new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setBackgroundColor(Color.BLACK); LinearLayout.LayoutParams param=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); listView=new ListView(this); listView.setBackgroundColor(Color.BLACK); linearLayout.addView(listView,param); this.setContentView(linearLayout); //从数据库获取联系人姓名和电话号码 Cursor cur=this.getContentResolver().query(People.CONTENT_URI,null, null,null,null); adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cur,new String[]{People.NAME,People.NUMBER},new int[]{android.R.id.text1,android.R.id.text2}); this.startManagingCursor(cur); listView.setAdapter(adapter); //listView.setEmptyView(findViewById(R.id.empty)); listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub //openToast("滚动到:"+arg0.getSelectedItemId()); //短信发送 // PendingIntent pi = PendingIntent.getActivity(App.this,0,new Intent(App.this,App.class),0); // SmsManager sms = SmsManager.getDefault(); // sms.sendTextMessage("5554", null, "message", pi, null); } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub // String[] names=((CursorWrapper)listView.getItemAtPosition(position)).getColumnNames(); //从指针的封装类中获得选中项的电话号码并拨号 CursorWrapper wrapper=(CursorWrapper)listView.getItemAtPosition(position); int columnIndex=wrapper.getColumnIndex(People.NUMBER); if(!wrapper.isNull(columnIndex)){ String number=wrapper.getString(columnIndex); Log.d(TAG,"number="+number); // //判断电话号码的有效性 if(PhoneNumberUtils.isGlobalPhoneNumber(number)){ Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel://"+ number)); startActivity(intent); } } /* //直接拨号,需要CALL_PHONE权限 Intent intent=new Intent(Intent.ACTION_CALL); Cursor c=(Cursor)adapter.getItem(position); long phoneID=c.getLong(c.getColumnIndex(People.PRIMARY_PHONE_ID)); intent.setData(ContentUris.withAppendedId(android.provider. Contacts.Phones.CONTENT_URI, phoneID)); startActivity(intent); */ } }); //添加长按点击,弹出快显菜单 listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { menu.setHeaderTitle("你想要...?").setHeaderIcon(R.drawable.icon); menu.add(0, 0, 0, "删除").setIcon(R.drawable.icon); menu.add(0, 1, 0, "修改").setIcon(R.drawable.icon); } }); } //长按菜单响应函数 @Override public boolean onContextItemSelected(MenuItem item) { //setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); openToast("你点击了"+item.getTitle()); return super.onContextItemSelected(item); } private void openToast(String str){ Toast.makeText(this,str,Toast.LENGTH_SHORT).show(); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wt.app" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".App" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- 点击拨号时,询问调用默认的程序还是调用本程序拨号 --> <intent-filter> <action android:name="android.Intent.Action.CALL_BUTTON" /> <category android:name="android.Intent.Category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-sdk android:minSdkVersion="3" /> </manifest>
最新技术文章: