Android小工具自定義view課表
本文實例為大家分享了Android自定義view課表的具體代碼,供大家參考,具體內容如下
這里是模擬課表,數(shù)據(jù)寫死了的,不過也可以通過抓包獲取教務系統(tǒng)課表
1.xml文件
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" ? ? xmlns:app="http://schemas.android.com/apk/res-auto" ? ? xmlns:tools="http://schemas.android.com/tools" ? ? android:layout_width="match_parent" ? ? android:background="#A5D6A7" ? ? android:fitsSystemWindows="true" ? ? android:layout_height="match_parent" ? ? tools:context=".KebiaoActivity"> ? ? <!-- ? ? ? ?<com.baidu.lbsapi.panoramaview.PanoramaView--> ? ? <!-- ? ? ? ? ? ?android:id="@+id/panorama"--> ? ? <!-- ? ? ? ? ? ?android:layout_width="match_parent"--> ? ? <!-- ? ? ? ? ? ?android:layout_height="match_parent"--> ? ? <!-- ? ? ? ? ? ?android:clickable="true" />--> ? ? <androidx.constraintlayout.widget.ConstraintLayout ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="match_parent"> ? ? ? ? <androidx.constraintlayout.widget.ConstraintLayout ? ? ? ? ? ? android:id="@+id/constraintLayout" ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="250dp" ? ? ? ? ? ? app:layout_constraintEnd_toEndOf="parent" ? ? ? ? ? ? app:layout_constraintStart_toStartOf="parent" ? ? ? ? ? ? app:layout_constraintTop_toTopOf="parent"> ? ? ? ? ? ? <ImageView ? ? ? ? ? ? ? ? android:id="@+id/back" ? ? ? ? ? ? ? ? android:layout_width="25dp" ? ? ? ? ? ? ? ? android:layout_height="25dp" ? ? ? ? ? ? ? ? android:layout_marginStart="15dp" ? ? ? ? ? ? ? ? app:layout_constraintBottom_toBottomOf="@+id/textView16" ? ? ? ? ? ? ? ? app:layout_constraintStart_toStartOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintTop_toTopOf="@+id/textView16" ? ? ? ? ? ? ? ? app:srcCompat="@mipmap/fanhui" ? ? ? ? ? ? ? ? android:layout_marginLeft="15dp" /> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/textView16" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="課表" ? ? ? ? ? ? ? ? android:textColor="#ffffff" ? ? ? ? ? ? ? ? android:textSize="26sp" ? ? ? ? ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? ? ? ? ? app:layout_constraintEnd_toEndOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintHorizontal_bias="0.25" ? ? ? ? ? ? ? ? app:layout_constraintStart_toStartOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintTop_toTopOf="parent" /> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:id="@+id/ershou" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="本周課表" ? ? ? ? ? ? ? ? android:textColor="@color/white" ? ? ? ? ? ? ? ? android:textSize="60sp" ? ? ? ? ? ? ? ? app:layout_constraintBottom_toBottomOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintEnd_toEndOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintStart_toStartOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintTop_toTopOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintVertical_bias="0.45" /> ? ? ? ? ? ? <TextView ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="Schedule of the week" ? ? ? ? ? ? ? ? android:textColor="@color/white" ? ? ? ? ? ? ? ? android:textSize="20sp" ? ? ? ? ? ? ? ? android:layout_marginTop="10dp" ? ? ? ? ? ? ? ? app:layout_constraintEnd_toEndOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintHorizontal_bias="0.7" ? ? ? ? ? ? ? ? app:layout_constraintStart_toStartOf="parent" ? ? ? ? ? ? ? ? app:layout_constraintTop_toBottomOf="@id/ershou" /> ? ? ? ? </androidx.constraintlayout.widget.ConstraintLayout> ? ? ? ? <RelativeLayout ? ? ? ? ? ? android:id="@+id/kebiao22" ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? app:layout_constraintTop_toBottomOf="@+id/constraintLayout"> ? ? ? ? ? ? <TextView android:id="@+id/test_empty" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="11\n月" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_monday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="23日\n周一" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_empty" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_tuesday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="24日\n周二" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_monday_course" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_wednesday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="25日\n周三" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_tuesday_course" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_thursday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="26日\n周四" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_wednesday_course" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_friday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="27日\n周五" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_thursday_course" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_saturday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="28日\n周六" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_friday_course" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? ? ? <TextView android:id="@+id/test_sunday_course" ? ? ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? ? ? android:text="29日\n周日" ? ? ? ? ? ? ? ? android:layout_toRightOf="@id/test_saturday_course" ? ? ? ? ? ? ? ? android:background="@drawable/course_text_view_bg" ? ? ? ? ? ? ? ? android:gravity="center" ? ? ? ? ? ? ? ? /> ? ? ? ? </RelativeLayout> ? ? ? ? <RelativeLayout ? ? ? ? ? ? android:layout_width="match_parent" ? ? ? ? ? ? android:layout_height="800dp" ? ? ? ? ? ? android:id="@+id/test_course_rl" ? ? ? ? ? ? app:layout_constraintTop_toBottomOf="@id/kebiao22" ? ? ? ? ? ? > ? ? ? ? </RelativeLayout> ? ? </androidx.constraintlayout.widget.ConstraintLayout> </ScrollView>
course_text_view_bg
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" ? ? > ? ? <solid android:color="#ffffff"/> ? ? <stroke android:width="0.2dp" ? ? ? ? android:color="#AEAAAA"/> </shape>
2.activity代碼
public class KebiaoActivity extends AppCompatActivity { ? ? /** 第一個無內容的格子 */ ? ? protected TextView empty; ? ? /** 星期一的格子 */ ? ? protected TextView monColum; ? ? /** 星期二的格子 */ ? ? protected TextView tueColum; ? ? /** 星期三的格子 */ ? ? protected TextView wedColum; ? ? /** 星期四的格子 */ ? ? protected TextView thrusColum; ? ? /** 星期五的格子 */ ? ? protected TextView friColum; ? ? /** 星期六的格子 */ ? ? protected TextView satColum; ? ? /** 星期日的格子 */ ? ? protected TextView sunColum; ? ? /** 課程表body部分布局 */ ? ? protected RelativeLayout course_table_layout; ? ? /** 屏幕寬度 **/ ? ? protected int screenWidth; ? ? /** 課程格子平均寬度 **/ ? ? protected int aveWidth; ? ? int gridHeight1 = 0; ? ? //(0)對應12節(jié);(2)對應34節(jié);(4)對應56節(jié);(6)對應78節(jié);(8)對應于9 10節(jié) ? ? int[] jieci = {0,2,3,5,4,6,8}; ? ? @Override ? ? protected void onCreate(Bundle savedInstanceState) { ? ? ? ? super.onCreate(savedInstanceState); ? ? ? ? if (Build.VERSION.SDK_INT >= 21){ ? ? ? ? ? ? View decorView = getWindow().getDecorView(); ? ? ? ? ? ? decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); ? ? ? ? ? ? getWindow().setStatusBarColor(Color.TRANSPARENT); ? ? ? ? } ? ? ? ? setContentView(R.layout.activity_kebiao); ? ? ? ? ImageView mImageView=findViewById(R.id.back); ? ? ? ? mImageView.setOnClickListener(new View.OnClickListener() { ? ? ? ? ? ? @Override ? ? ? ? ? ? public void onClick(View v) { ? ? ? ? ? ? ? ? finish(); ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ? //獲得列頭的控件 ? ? ? ? empty = (TextView) this.findViewById(R.id.test_empty); ? ? ? ? monColum = (TextView) this.findViewById(R.id.test_monday_course); ? ? ? ? tueColum = (TextView) this.findViewById(R.id.test_tuesday_course); ? ? ? ? wedColum = (TextView) this.findViewById(R.id.test_wednesday_course); ? ? ? ? thrusColum = (TextView) this.findViewById(R.id.test_thursday_course); ? ? ? ? friColum = (TextView) this.findViewById(R.id.test_friday_course); ? ? ? ? satColum ?= (TextView) this.findViewById(R.id.test_saturday_course); ? ? ? ? sunColum = (TextView) this.findViewById(R.id.test_sunday_course); ? ? ? ? course_table_layout = (RelativeLayout) this.findViewById(R.id.test_course_rl); ? ? ? ? DisplayMetrics dm = new DisplayMetrics(); ? ? ? ? getWindowManager().getDefaultDisplay().getMetrics(dm); ? ? ? ? //屏幕寬度 ? ? ? ? int width = dm.widthPixels; ? ? ? ? //平均寬度 ? ? ? ? int aveWidth = width / 8; ? ? ? ? //第一個空白格子設置為25寬 ? ? ? ? empty.setWidth(aveWidth * 3/4); ? ? ? ? monColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? tueColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? wedColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? thrusColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? friColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? satColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? sunColum.setWidth(aveWidth * 33/32 + 1); ? ? ? ? this.screenWidth = width; ? ? ? ? this.aveWidth = aveWidth; ? ? ? ? int height = dm.heightPixels; ? ? ? ? int gridHeight = height / 10; ? ? ? ? gridHeight1 = gridHeight; ? ? ? ? //設置課表界面 ? ? ? ? //動態(tài)生成10 * maxCourseNum個textview ? ? ? ? for(int i = 1; i <= 12; i ++){ ? ? ? ? ? ? for(int j = 1; j <= 8; j ++){ ? ? ? ? ? ? ? ? TextView tx = new TextView(KebiaoActivity.this); ? ? ? ? ? ? ? ? tx.setId((i - 1) * 8 ?+ j); ? ? ? ? ? ? ? ? //除了最后一列,都使用course_text_view_bg背景(最后一列沒有右邊框) ? ? ? ? ? ? ? ? tx.setBackgroundDrawable(KebiaoActivity.this. ? ? ? ? ? ? ? ? ? ? ? ? getResources().getDrawable(R.drawable.course_text_view_bg)); ? ? ? ? ? ? ? ? //相對布局參數(shù) ? ? ? ? ? ? ? ? RelativeLayout.LayoutParams rp = new RelativeLayout.LayoutParams( ? ? ? ? ? ? ? ? ? ? ? ? aveWidth * 33 / 32 + 1, ? ? ? ? ? ? ? ? ? ? ? ? gridHeight); ? ? ? ? ? ? ? ? //文字對齊方式 ? ? ? ? ? ? ? ? tx.setGravity(Gravity.CENTER); ? ? ? ? ? ? ? ? //字體樣式 // ? ? ? ? ? ? ? ?tx.setTextAppearance(this, R.style.courseTableText); // ? ? ? ? ? ? ? ?//如果是第一列,需要設置課的序號(1 到 12) ? ? ? ? ? ? ? ? if(j == 1) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? tx.setText(String.valueOf(i)); ? ? ? ? ? ? ? ? ? ? rp.width = aveWidth * 3/4; ? ? ? ? ? ? ? ? ? ? //設置他們的相對位置 ? ? ? ? ? ? ? ? ? ? if(i == 1) ? ? ? ? ? ? ? ? ? ? ? ? rp.addRule(RelativeLayout.BELOW, empty.getId()); ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? rp.addRule(RelativeLayout.BELOW, (i - 1) * 8); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? rp.addRule(RelativeLayout.RIGHT_OF, (i - 1) * 8 ?+ j - 1); ? ? ? ? ? ? ? ? ? ? rp.addRule(RelativeLayout.ALIGN_TOP, (i - 1) * 8 ?+ j - 1); ? ? ? ? ? ? ? ? ? ? tx.setText(""); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? tx.setLayoutParams(rp); ? ? ? ? ? ? ? ? course_table_layout.addView(tx); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? setCourseMessage(1,jieci[1],"軟件工\n程@含\n浦校區(qū)\n3508教\n室\n"); ? ? ? ? setCourseMessage2(2,jieci[0],"嵌入式\n系統(tǒng)...\n@含浦\n校區(qū)\n3204教\n室"); ? ? ? ? setCourseMessage(3,jieci[1],"計算機\n圖形\n學@含\n浦校區(qū)\n3310教\n室"); ? ? ? ? setCourseMessage2(4,jieci[0],"計算機\n網絡...\n@含浦\n校區(qū)\n3311教\n室"); ? ? ? ? setCourseMessage2(5,jieci[0],"嵌入式\n系統(tǒng)...\n@h含浦\n校區(qū)嵌入\n式實驗室"); ? ? ? ? setCourseMessage(5,jieci[1],"java...\n@h含浦\n校區(qū)12\n機房\n(65)"); ? ? ? ? setCourseMessage(1,jieci[3],"人工智\n能原\n理@含\n浦校區(qū)\n3306教\n"); ? ? ? ? setCourseMessage2(2,jieci[2],"計算機\n網絡...\n@含浦\n校區(qū)\n2204教\n室"); ? ? ? ? setCourseMessage(5,jieci[3],"操作系\n統(tǒng)原\n理@含\n浦校區(qū)\n12機房\n(65)"); ? ? } //菜單 // ? ?@Override // ? ?public boolean onCreateOptionsMenu(Menu menu) { // ? ? ? ?// Inflate the menu; this adds items to the action bar if it is present. // ? ? ? ?getMenuInflater().inflate(R.menu.main, menu); // ? ? ? ?return true; // ? ?} ? ? public void setCourseMessage(int xingqi,int jieci,String courseMessage){ ? ? ? ? //五種顏色的背景 ? ? ? ? int[] background = {R.drawable.course_info_blue, R.drawable.course_info_green, ? ? ? ? ? ? ? ? R.drawable.course_info_red, R.drawable.course_info_zisi, ? ? ? ? ? ? ? ? R.drawable.course_info_yellow}; ? ? ? ? // 添加課程信息 ? ? ? ? TextView courseInfo = new TextView(this); ? ? ? ? courseInfo.setText(courseMessage); ? ? ? ? //該textview的高度根據(jù)其節(jié)數(shù)的跨度來設置 ? ? ? ? RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams( ? ? ? ? ? ? ? ? aveWidth * 31 / 32, ? ? ? ? ? ? ? ? (gridHeight1 - 5) * 3 ); ? ? ? ? //textview的位置由課程開始節(jié)數(shù)和上課的時間(day of week)確定 ? ? ? ? rlp.topMargin = 5 + jieci * gridHeight1; ? ? ? ? rlp.leftMargin = 5; ? ? ? ? // 偏移由這節(jié)課是星期幾決定 ? ? ? ? rlp.addRule(RelativeLayout.RIGHT_OF, xingqi); ? ? ? ? //字體劇中 ? ? ? ? courseInfo.setGravity(Gravity.CENTER); ? ? ? ? // 設置一種背景 ? ? ? ? Random random = new Random(); ? ? ? ? courseInfo.setBackgroundResource(background[random.nextInt(5)]); ? ? ? ? courseInfo.setTextSize(12); ? ? ? ? courseInfo.setLayoutParams(rlp); ? ? ? ? courseInfo.setTextColor(Color.WHITE); ? ? ? ? //設置不透明度 ? ? ? ? courseInfo.getBackground().setAlpha(222); ? ? ? ? course_table_layout.addView(courseInfo); ? ? } ? ? public void setCourseMessage2(int xingqi,int jieci,String courseMessage){ ? ? ? ? //五種顏色的背景 ? ? ? ? int[] background = {R.drawable.course_info_blue, R.drawable.course_info_green, ? ? ? ? ? ? ? ? R.drawable.course_info_red, R.drawable.course_info_zisi, ? ? ? ? ? ? ? ? R.drawable.course_info_yellow}; ? ? ? ? // 添加課程信息 ? ? ? ? TextView courseInfo = new TextView(this); ? ? ? ? courseInfo.setText(courseMessage); ? ? ? ? //該textview的高度根據(jù)其節(jié)數(shù)的跨度來設置 ? ? ? ? RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams( ? ? ? ? ? ? ? ? aveWidth * 31 / 32, ? ? ? ? ? ? ? ? (gridHeight1 - 5) * 2 ); ? ? ? ? //textview的位置由課程開始節(jié)數(shù)和上課的時間(day of week)確定 ? ? ? ? rlp.topMargin = 5 + jieci * gridHeight1; ? ? ? ? rlp.leftMargin = 5; ? ? ? ? // 偏移由這節(jié)課是星期幾決定 ? ? ? ? rlp.addRule(RelativeLayout.RIGHT_OF, xingqi); ? ? ? ? //字體劇中 ? ? ? ? courseInfo.setGravity(Gravity.CENTER); ? ? ? ? // 設置一種背景 ? ? ? ? Random random = new Random(); ? ? ? ? courseInfo.setBackgroundResource(background[random.nextInt(5)]); ? ? ? ? courseInfo.setTextSize(12); ? ? ? ? courseInfo.setLayoutParams(rlp); ? ? ? ? courseInfo.setTextColor(Color.WHITE); ? ? ? ? //設置不透明度 ? ? ? ? courseInfo.getBackground().setAlpha(222); ? ? ? ? course_table_layout.addView(courseInfo); ? ? } }
3.資源文件
course_info_blue
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" ? ? > ? ? <solid android:color="#4FC3F7"/> </shape>
course_info_green
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" ? ? > ? ? <solid android:color="#81C784"/> </shape>
course_info_red
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" ? ? > ? ? <solid android:color="#E57373"/> </shape>
course_info_zisi
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" ? ? > ? ? <solid android:color="#9575CD"/> </shape>
course_info_yellow
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" ? ? > ? ? <solid android:color="#FFB74D"/> </shape>
4.運行
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android中imageView圖片放大縮小及旋轉功能示例代碼
這篇文章主要介紹了Android中imageView圖片放大縮小及旋轉功能示例代碼,需要的朋友可以參考下2017-08-08Android開發(fā)之串口編程原理和實現(xiàn)方式
提到串口編程,就不得不提到JNI,不得不提到JavaAPI中的文件描述符類:FileDescriptor;下面我分別對JNI、FileDescriptor以及串口的一些知識點和實現(xiàn)的源碼進行分析說明,感興趣的朋友可以了解下2013-01-01Android UI:ListView - SimpleAdapter實例詳解
這篇文章主要介紹了Android UI:ListView - SimpleAdapter實例詳解,SimpleAdapter是擴展性最好的適配器,可以定義各種你想要的布局,而且使用很方便,需要的朋友可以參考下2016-11-11分別用ToolBar和自定義導航欄實現(xiàn)沉浸式狀態(tài)欄
本文主要介紹了分別用ToolBar和自定義導航欄實現(xiàn)沉浸式狀態(tài)欄的方法步驟,具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01