第一行代碼Android學習筆記完全版_第1頁
第一行代碼Android學習筆記完全版_第2頁
第一行代碼Android學習筆記完全版_第3頁
第一行代碼Android學習筆記完全版_第4頁
第一行代碼Android學習筆記完全版_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第一行代碼 Android學習筆記感謝第一行代碼,感謝郭霖博主,拯救我于水火。之前看視頻學習Android,自以為已經(jīng)小成了。在網(wǎng)易工作的朋友問了我?guī)讉€問題,我就懵逼了。然后,遇到了第一行代碼,終于把我?guī)нM了Android的世界。好書,真的會醉人啊。這是學習第二遍時的部分筆記,以備后用。 這是第二版,比第一版增加了一些常用的方法。 hujunjob于北航 2015.04.02 目錄第一章 Android系統(tǒng)61.1 安卓系統(tǒng)架構(gòu)61.2 Android 項目中的資源6第二章 Activity6一、創(chuàng)建Activity步驟:6二、采用Intent切換activity71、顯式Intent72、隱

2、式Intent73、隱式Intent的其他用法8三、Intent傳遞數(shù)據(jù)81、向下一個activity傳遞數(shù)據(jù)82、返回數(shù)據(jù)給上一個activity8四、activity的生命周期91、活動狀態(tài)92、activity生存期93、activity被回收數(shù)據(jù)保存11五、activity的啟動模式11六、activity最佳實踐111、知道當前頁面是哪一個activity112、隨時隨地退出程序113、給每個activity都添加一個合適的啟動方法13第三章 UI13一、常用控件131、TextView132、Button133、EditText134、ImageView145、ProgressBa

3、r146、AlertDialog147、ProgressDialog15二、基本布局151、LinearLayout152、RelativeLayout153、FrameLayout154、TableLayout155、GridLayout16三、自定義控件161、添加自定義標題布局(無操作的)162、創(chuàng)建自定義控件16四、ListView171、最簡單的Adapter172、定制ListView界面183、提升ListView效率194、ListView點擊事件20五、單位和尺寸20六、最佳實踐聊天界面21第四章 Fragment21第五章 BroadCast Receiver24一、廣播機

4、制24二、接收系統(tǒng)廣播241、動態(tài)注冊242、靜態(tài)注冊253、廣播接收器使用注意事項26三、發(fā)送自定義廣播261、標準廣播262、有序廣播27四、發(fā)送和接收本地廣播27五、強制下線27注意事項:27第六章 數(shù)據(jù)存儲28一、文件存儲281、存儲5部曲:292、讀取5部曲:29二、SharedPreferences存儲311、存儲4部曲312、讀取2部曲31三、SQLite數(shù)據(jù)庫311、創(chuàng)建數(shù)據(jù)庫312、升級數(shù)據(jù)庫323、添加數(shù)據(jù)334、更新數(shù)據(jù)335、刪除數(shù)據(jù)336、查詢數(shù)據(jù)337、直接使用SQL操作數(shù)據(jù)庫33四、數(shù)據(jù)庫最佳實踐341、使用事務(wù)342、升級數(shù)據(jù)庫最佳寫法35第七章 Content

5、 Provider36一、簡介36二、訪問已有的CP361、ContentResolver用法362、讀取系統(tǒng)聯(lián)系人37三、創(chuàng)建自己的ContentProvider381、創(chuàng)建CP步驟5部曲38四、跨程序數(shù)據(jù)共享實踐40附錄:Git使用41一、創(chuàng)建代碼倉庫41二、提交本地代碼42三、忽略文件42四、查看修改內(nèi)容42五、撤銷未提交的修改43六、查看提交記錄44第八章 多媒體44一、通知441、通知創(chuàng)建442、通知點擊事件453、通知的其他屬性45二、短信461、接收短信462、攔截短信463、發(fā)送短信46三、調(diào)用攝像頭和相冊46四、播放多媒體46第九章 Service46一、Service介紹4

6、6二、多線程471、線程基本用法472、在子線程中更新UI473、異步消息處理機制484、AsyncTask49三、Service501、定義Service502、啟動和停止Service513、Activity與Service通信51四、Service的生命周期53五、Service更多技巧531、前臺Service532、傻瓜方式使用ServiceIntentService54六、后臺執(zhí)行的定時任務(wù)54第十章 網(wǎng)絡(luò)技術(shù)56一、WebView56二、使用HTTP協(xié)議訪問網(wǎng)絡(luò)561、使用HttpURLConnection562、使用HttpClient59三、解析XML格式數(shù)據(jù)611、Pull

7、解析方式612、SAX解析方式63四、解析JSON格式數(shù)據(jù)641、JSONObject642、GSON65五、網(wǎng)絡(luò)編程最佳實踐java的回調(diào)機制66第十一章 LBS68附錄:Git的高級用法69一、分支用法69二、與遠程版本庫協(xié)作70第十二章 傳感器71第十三章 Android高級技巧71一、全局獲取Context的技巧71二、使用Intent傳遞對象721、Serializable方式722、Parcelable方法72三、定值自己的日志工具73四、調(diào)試Android程序74五、編寫測試用例741、創(chuàng)建測試工程742、進行單元測試75第十四章 實戰(zhàn)75第一章 Android系統(tǒng)1.1 安卓系

8、統(tǒng)架構(gòu)Linux Kernel: 各種底層驅(qū)動Libraries : Runtime Libraries, Dalvik VM, 各種庫支持,數(shù)據(jù)庫,3D繪圖,瀏覽器內(nèi)核Application Framework: API,各種managerApplications1.2 Android 項目中的資源src: 各種java程序在此,包括主程序gen: 最重要的是R.java,所有res資源都在這里編號,通過R.xx.xx或xx查詢res: 各種資源都在這里,包括drawable, layout, values等另外還有menifest文件,統(tǒng)籌兼顧全局的,Android四大組件都要在此注冊。第

9、二章 ActivityActivity是包含用戶界面的組件,用于和用戶進行交互。一、創(chuàng)建Activity步驟:1、首先,創(chuàng)建沒有Activity的application,發(fā)現(xiàn)src文件夾是空的。手動創(chuàng)建一個包com.example.demo1activity,在包中添加一個class,MainActivity.java。要使用activity,extents Activity。此時,重寫Activity的onCreate()方法。2、此時,只有activity,用戶是不可見的。因此,需要在上面添加layout和view。在reslayout中添加一個Android XML file,可以在該x

10、ml文件中創(chuàng)建布局。添加諸如TextView/Button等常用控件。3、此時,需要將創(chuàng)建的layout文件加載到activity中,在第一步創(chuàng)建的MainActivity中onCreate()方法中,使用setContentView(R.layout.myactivity)將布局加載進來。4、所有四大組件的使用,都需要在AndroidManifest.xml文件中注冊。注冊方法為:在中添加標簽,將需要注冊的activity使用android:name=.MainActivity注冊。如果是主activity,即打開application時看到的activity,則需要添加總體注冊代碼為: 5

11、、銷毀activityfinish();二、采用Intent切換activity1、顯式Intent首先,按照上面的步驟重新創(chuàng)建一個SecondActivity(記得注冊),采用Intent實現(xiàn)跳轉(zhuǎn)Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);2、隱式Intent隱式Intent并不能實現(xiàn)直接跳轉(zhuǎn),需要指定兩個條件(intent-filter):action和category。如果在intent-filter中指定category為default的categor

12、y,即ent.category.DEFAULT,則只需滿足action條件即可。intent-filter在注冊activity時添加,注冊方法如下: 跳轉(zhuǎn)方法為:Intent intent=new Intent(com.example.demo1activity.SECOND_START);startActivity(intent);intentfilter中只能有一個action,但可以有多個category,滿足其中一個category即可。3、隱式Intent的其他用法使用隱式intent,不但可以打開自己編寫的activity,還可以打開系統(tǒng)編寫的activit

13、y,比如瀏覽器,打電話等。打開瀏覽器:Intent intent=new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse();startActivity(intent);解釋:Intent.ACTION_VIEW是系統(tǒng)內(nèi)置的動作,打開瀏覽器;setData()將一個Uri對象傳入intent,用于指定該intent正在操作的數(shù)據(jù),這些數(shù)據(jù)都是用Uri.parse()將字符串轉(zhuǎn)換為Uri產(chǎn)生的。在intent-filter中,添加標簽,用于精確指定該activity能響應(yīng)的數(shù)據(jù)類型,包括android:

14、scheme用于指定數(shù)據(jù)的協(xié)議部分,比如http。該方法還可以打電話、顯示地理位置等。三、Intent傳遞數(shù)據(jù)1、向下一個activity傳遞數(shù)據(jù)在頭一個activity中,使用putExtra()將數(shù)據(jù)傳入intent在下一個activity中,使用getIntent()獲得傳遞來的intent,然后使用getStringExtra()獲得傳遞來的數(shù)據(jù)。2、返回數(shù)據(jù)給上一個activity在上一個activity中,不采用startActivity(),而采用startActivityForResult(intent, 1)。其中,1為requestCode,用于之后判斷是不是自己發(fā)送出去的

15、intent。在下一個activity中,建立新的intent,然后將data利用intent.putExtra()放入intent,setResult(RESULT_OK, intent)放置result,其中RESULT_OK為resultcode,用于在上一個activity中分辨是哪一個activity返回的數(shù)據(jù)。最后,finish()。之后,在上一個activity中,重寫onActivityResult()方法。同樣的,如果在第二個activity中,是按返回鍵返回的,可以在第二個activity中,重寫onBackPressed()方法返回數(shù)據(jù),方法同上。四、activity的生

16、命周期1、活動狀態(tài)運行狀態(tài):在棧頂時暫停狀態(tài):不可操作,但可見停止狀態(tài):完全不可見銷毀狀態(tài):從棧中被移除2、activity生存期完整生存期:onCreate()onDestory()可見生存期:onStart()onStop()前臺生存期:onResume()onPause()3、activity被回收數(shù)據(jù)保存activity中提供了一個onSaveInstanceState()的方法,該方法會攜帶一個bundle類型參數(shù),bundle可以保存各種信息。protected void onSaveInstanceState(Bundle outState) / TODO Auto-genera

17、ted method stubsuper.onSaveInstanceState(outState);String savedata=hello you;outState.putString(saved, savedata);如何恢復(fù)數(shù)據(jù)呢?在onCreate()方法中,傳入的參數(shù)為Bundle savedInstanceState,利用這恢復(fù)數(shù)據(jù)。String data=savedInstanceState.getString(“saved”);五、activity的啟動模式四種啟動模式,可以在標簽中android:launchMode定義。standard:打開activity,就放入棧頂

18、singleTop:打開activity,檢查棧頂是否已經(jīng)存在該activity,存在了就不創(chuàng)建。不存在才創(chuàng)建。不過,如果該activity不在棧頂,但也存在,則也會重新創(chuàng)建一個。singleTask:檢查整個返回棧,如果存在某個activity,則不會重新創(chuàng)建。singleInstance:創(chuàng)建一個activity,重新在一個新的返回棧(或Task)中創(chuàng)建,該activity與其他activity不在同一個Task中,其他程序也可以調(diào)用這個activity的實例。六、activity最佳實踐1、知道當前頁面是哪一個activity新建一個BaseActivity extents Activi

19、ty,其中在onCreate()中打印該activity的信息Log.i(“BaseActivity”,getClass().getSimpleName(); /獲得類名然后,所有activity都extents BaseActivity即可2、隨時隨地退出程序當打開很多activity之后,退出程序需要一直按Back,很麻煩。首先,新建一個activity管理類,實現(xiàn)所有的activity的添加、刪除和finish()。public class ActivityCollector public static List activities=new ArrayList();public sta

20、tic void addActivity(Activity activity)activities.add(activity);public static void removeActivity(Activity activity)activities.remove(activity);public static void finishAll()for(Activity activity:activities)if(!activity.isFinishing()activity.finish();然后,修改BaseActivity,在onCreate()中添加this,onDestory()中

21、移除thisprotected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);Log.i(BaseActivity, getClass().getSimpleName();ActivityCollector.addActivity(this);Overrideprotected void onDestroy() / TODO Auto-generated method stubsuper.onDestroy();Activi

22、tyCollector.removeActivity(this);3、給每個activity都添加一個合適的啟動方法比如我需要啟動一個SecondActivity,可是不知道該activity需要哪些參數(shù),怎么辦?在SecondActivity中添加一個啟動自己的方法:public class SecondActivity extends Activitypublic static void startActivity(Context contex, String data1, String data2)Intent intent = new Intent(context, SecondAct

23、icity.class);intent.putExtra(“param1”, data1);intent.putExtra(“param2”, data2);startActivity(intent);在SecondActivity中添加了startActivity()方法之后,在任意的activity中啟動SecondActivity,都可以調(diào)用該方法,而且知道需要傳入哪些參數(shù)。比如在MainActivity中啟動方法為:SecondActivity.startActivity(MainActivity.this, “data1”, “data2”);第三章 UI一、常用控件1、TextVi

24、ew2、Button3、EditText密碼:android:password=”true”4、ImageView5、ProgressBar設(shè)置其進度 progress=bar.getProgress();progress+=10;bar.setProgress(progress);if(progress=100)bar.setVisibility(View.GONE);6、AlertDialogAlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);dialog.setTitle(確認刪除);dialog.s

25、etMessage(你確認刪除么?);dialog.setCancelable(false);dialog.setPositiveButton(確認, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubToast.makeText(MainActivity.this, 已經(jīng)刪除, Toast.LENGTH_SHORT).show(););dialog.setNegativeBut

26、ton(取消, new DialogInterface.OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubToast.makeText(MainActivity.this, 已經(jīng)取消, Toast.LENGTH_SHORT).show(););dialog.show();7、ProgressDialog和AlertDialog類似,只是內(nèi)容為一個進度條。進度加載完成之后,必須使用dismiss()來關(guān)閉對話框。二、基本

27、布局1、LinearLayoutandroid:gravity 指定文字在控件中的對齊方式android:layout_gravity: 指定控件在布局中的對齊方式android:layout_weight: 按比例分配控件大小2、RelativeLayout3、FrameLayout4、TableLayoutandroid:layout_span=”2” 將兩列合并為一列在TableRow中無法指定控件的寬度,通過android:stretchColumns=”1”,指定將第二列拉伸到最大。5、GridLayout三、自定義控件Android中,控件和布局的繼承結(jié)構(gòu)如下圖:1、添加自定義標題

28、布局(無操作的)自定義一個布局title.xml,然后在mainactivity布局中引入當然,需要將系統(tǒng)自帶標題欄屏蔽requestWindowFeature(Window.FEATURE_NO_TITLE);2、創(chuàng)建自定義控件上面方法自定義的標題欄并不能響應(yīng)操作,采用自定義控件方法來實現(xiàn)操作。(1)首先,構(gòu)建一個title.xml布局文件(2)然后,構(gòu)建一個自定義標題控件TitleLayout:利用LayoutInflater動態(tài)加載布局文件title.xml。public class TitleLayout extends LinearLayoutpublic TitleLayout(

29、Context context, AttributeSet attrs) super(context, attrs);LayoutInflater.from(context).inflate(R.layout.title, this);Button edit=(Button) findViewById(R.id.title_edit);Button back=(Button) findViewById(R.id.title_back);edit.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v

30、) / TODO Auto-generated method stubToast.makeText(getContext(), Edit, Toast.LENGTH_SHORT).show(););back.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubToast.makeText(getContext(), Back, Toast.LENGTH_SHORT).show(););(3)如同加入其它的控件一樣,將該自定義的控

31、件添加到mainactivity.xml文件中 四、ListView1、最簡單的Adapter要將數(shù)據(jù)放置在ListView中,都需要一個adapter轉(zhuǎn)換。一個最簡單的adapter,就是把一個字符串數(shù)組放置在ListView中。ArrayAdapter接收3個參數(shù):context,ListView單個子項布局id和數(shù)據(jù)。 listView=(ListView) findViewById(R.id.listView1); ArrayAdapter adapter=new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_

32、item_1, data); listView.setAdapter(adapter);2、定制ListView界面只顯示文字很單調(diào),需要顯示圖片等,則需要構(gòu)建自定義的布局。(1)數(shù)據(jù):Fruit類首先準備需要適配的數(shù)據(jù),數(shù)據(jù)包括文字、圖片id,定義一個Fruit類存放這些數(shù)據(jù)。(2)子項布局:fruit_layout.xml之后,需要自定義ListView中單個子項的布局。本例中就是一個圖片加上一個文字。(3)自定義適配器:FruitAdapter.java該適配器中,最重要的是getView()方法。該方法在每個子項滾動到屏幕內(nèi)時被調(diào)用。position是該子項的位置,利用getItem(

33、position)可以獲得當前的Fruit實例fruit;然后,利用LayoutInflater可以加載布局為fruit_layout的布局view;該布局view即為步驟(2)中自定義的布局,通過view.findViewById()可以獲得ImageView和TextView。最后,將fruit中的imageId和name傳入ImageView和TextView。public class FruitAdapter extends ArrayAdapterprivate int resourceId;public FruitAdapter(Context context, int resou

34、rce, List objects) super(context, resource, objects);resourceId=resource;public View getView(int position, View convertView, ViewGroup parent) Fruit fruit=getItem(position);View view=LayoutInflater.from(getContext().inflate(R.layout.fruit_layout, null);TextView fruit_name=(TextView) view.findViewByI

35、d(R.id.fruit_name);ImageView fruit_image=(ImageView) view.findViewById(R.id.fruit_image);fruit_image.setImageResource(fruit.getImageId();fruit_name.setText(fruit.getName();return view;(4)使用List fruits=new ArrayList();FruitAdapter adapter=new FruitAdapter(MainActivity.this, R.layout.fruit_layout, fru

36、its);在fruits中添加數(shù)據(jù)。3、提升ListView效率getView()每次都將布局重新加載一遍,效率很低。處理方法為:(1)convertViewconvertView將之前加載好的布局進行緩存,以便之后重用。則可以不必每次都使用LayoutInflater重新加載布局,而直接加載緩存的布局。if(convertView=null) view=LayoutInflater.from(getContext().inflate(R.layout.fruit_layout, null);else view=convertView;(2)ViewHolder每次都使用findViewByI

37、d獲取控件,效率低下。使用convertView將之前已經(jīng)find的view也一起緩存。View有setTag()和getTag()方法,分別進行數(shù)據(jù)寫入和讀取。采用自定義的ViewHolder類,將多個參數(shù)一起管理,比如TextView/ImageView等。public class FruitAdapter extends ArrayAdapter public FruitAdapter(Context context, int resource, List objects) super(context, resource, objects);resourceId = resource;p

38、rivate int resourceId;public View getView(int position, View convertView, ViewGroup parent) Fruit fruit = getItem(position);View view;ViewHolder viewHolder;if (convertView = null) viewHolder = new ViewHolder(); /一定要記住實例化對象啊view = LayoutInflater.from(getContext().inflate(R.layout.fruit_layout, null);

39、viewHolder.fruit_image = (ImageView) view.findViewById(R.id.fruit_image);viewHolder.fruit_name=(TextView) view.findViewById(R.id.fruit_name);view.setTag(viewHolder); else view = convertView;viewHolder = (ViewHolder) view.getTag();viewHolder.fruit_image.setImageResource(fruit.getImageId();viewHolder.

40、fruit_name.setText(fruit.getName();return view;class ViewHolder ImageView fruit_image;TextView fruit_name;4、ListView點擊事件注冊setOnItemClickListener()事件: listView.setOnItemClickListener(new OnItemClickListener() public void onItemClick(AdapterView parent, View view,int position, long id) Fruit fruit=fru

41、its.get(position);Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show(););五、單位和尺寸px: 像素pt:磅數(shù),1pt=1/72inchdp:密度無關(guān)像素密度dpi:屏幕每inch包含的像素數(shù)。獲取當前屏幕密度值:float xdpi=getResources().getDisplayMetrics().xdpi;float ydpi=getResources().getDisplayMetrics().ydpi;sp:可伸縮像素。規(guī)定,在160dpi屏幕上,1dp=1px

42、;在320dpi屏幕上,1dp=2px.六、最佳實踐聊天界面APP: ChatWe新內(nèi)容有:當有新內(nèi)容時,刷新ListView中的顯示:adapter.notifyDataSetChanged();將ListView定位到最后一行:listView.setSelection(messages.size();指定ListView中分割線為透明:android:divider=”#0000”第四章 Fragment一、Fragment使用方式1、Fragment簡單構(gòu)造三步法簡單Fragment構(gòu)造需要三步:首先,需要構(gòu)造Fragment的布局文件xml;例如,分別構(gòu)建兩個xml文件,right_

43、layout.xml和left_layout.xml。然后,需要構(gòu)建容納Fragment布局文件的Fragment類。該類extends Fragment,需要重寫onCreateView()方法,在其中引入上面的布局文件;之后,在主布局中引入上面兩個fragment,就像使用普通控件一樣。構(gòu)建Fragment類代碼:public class LeftFragment extends Fragment public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)

44、View view = inflater.inflate(R.layout.left_fragment, container, false);return view;在main.xml中引入Fragment代碼為:紅色代碼部分最重要。 2、Fragment動態(tài)構(gòu)造需要動態(tài)的進行Fragment構(gòu)造,需要六步:首先,需要一個放置該Fragment的layout。例如,在主布局文件中,使用FrameLayout放置一個Fragment,之后,重新添加一個Fragment,即可替換當前的Fragment。 動態(tài)添加Fragment還需要5步:獲得需要添加的Fragment的實例;獲得Fragment

45、Manager,通過getFragmentManager()方法獲得;開啟事務(wù)FragmentTransaction;向容器內(nèi)加入Fragment,該容器即為上面設(shè)置的FrameLayout。利用replace添加。提交事務(wù)。AnotherRightFragment fragment=new AnotherRightFragment();FragmentManager manager=getFragmentManager();FragmentTransaction transaction=manager.beginTransaction();transaction.replace(R.id.r

46、ight_layout, fragment);mit();3、在Fragment中模擬Activity的返回棧動態(tài)添加Fragment之后,點擊back,程序就退出了;添加代碼transaction.addToBackStack(null);即可實現(xiàn)將Fragment放入“返回棧”中,點擊back,當前Fragment退回到之前的Fragment,而不是退出。4、Activity與Fragment之間相互通信在Activity中,如何獲取該Activity中的Fragment呢?如下,獲得Fragment的實例之后,該Fragment中的方法都可以調(diào)用了。Righ

47、tFragment rightFragment=(RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);在Fragment中如何獲得其所在的Activity呢?如下代碼所示,在Fragment中獲得了MainActivity的實例,從而可以獲得當中的button。MainActivity activity=(MainActivity) getActivity();Button button=(Button) activity.findViewById(R.id.button1);二、Fragment的周期第五章 BroadCast Receiver一、廣播機制標準廣播:異步的,廣播發(fā)送之后,所有的廣播接收器幾乎同時接受廣播,廣播效率比較高。但不能截斷。有序廣播:同步執(zhí)行的,優(yōu)先級高的先接受到,之前的廣播接收器可以截斷廣播。二、接收系統(tǒng)廣播手機開機、電池變量、時間變化等,系統(tǒng)都會發(fā)生廣播。注冊廣播方式有兩種,在代碼中注冊和在AndroidMa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論