日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android使用表格布局設計注冊界面

瀏覽:4日期:2022-09-18 15:45:06

Android中使用表格布局設計注冊界面,供大家參考,具體內容如下

注冊頁面包含:用戶名,密碼,確認密碼,驗證碼。驗證碼使用一個封裝好的工具類生成的,可以直接使用。效果圖如下所示。沒有做事件處理,僅僅做了個簡單的表格布局。

Android使用表格布局設計注冊界面

XML布局的代碼如下:

<?xml version='1.0' encoding='utf-8'?><TableLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' android:stretchColumns='1' tools:context='com.example.nuist__njupt.register.MainActivity'><TextView android: android:layout_height='wrap_content' android:layout_width='wrap_content' android:text='用戶注冊' android:textSize='20dp' android:gravity='center_horizontal' android:textColor='@android:color/black' android:layout_marginTop='5dp' /> <TableRow><TextView android: android:text='用戶名' android:textSize='15dp' android:layout_marginLeft='5dp' android:layout_marginTop='20dp' android:textColor='@android:color/black' /><EditText android:layout_width='match_parent' android: android:hint='請輸入用戶名' android:textSize='15dp' android:layout_marginTop='20dp' android:selectAllOnFocus='true' android:layout_span='2' /> </TableRow> <TableRow><TextView android: android:text='密碼' android:textSize='15dp' android:layout_marginLeft='5dp' android:textColor='@android:color/black' /><EditText android:layout_width='match_parent' android: android:hint='請輸入密碼' android:textSize='15dp' android:inputType='textPassword' android:layout_span='2' /> </TableRow> <TableRow><TextView android: android:text='確認密碼' android:textSize='15dp' android:layout_marginLeft='5dp' android:textColor='@android:color/black' /><EditText android:layout_width='match_parent' android: android:hint='請再次輸入密碼' android:textSize='15dp' android:inputType='textPassword' android:layout_span='2' /> </TableRow> <TableRow><TextView android: android:text='驗證碼' android:textSize='15dp' android:layout_marginLeft='5dp' android:textColor='@android:color/black' /><EditText android:layout_width='match_parent' android: android:hint='請輸入驗證密碼' android:textSize='15dp' android:layout_toLeftOf ='@+id/image' /><ImageView android: android:layout_width='100dp' android:layout_height='40dp'/> </TableRow> <Buttonandroid: android:layout_height='wrap_content'android:layout_width='match_parent'android:text='注冊'android:textColor='@android:color/black'android:textSize='15dp'android:gravity='center_horizontal'/> <Buttonandroid: android:layout_height='wrap_content'android:layout_width='match_parent'android:text='取消'android:textColor='@android:color/black'android:textSize='15dp'android:gravity='center_horizontal'/></TableLayout>

java代碼如下:

public class MainActivity extends AppCompatActivity { private Bitmap bitmap; private String code; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final ImageView image = (ImageView) findViewById(R.id.image); //獲取需要展示圖片驗證碼的ImageViewbitmap = CodeUtils.getInstance().createBitmap(); //獲取工具類生成的圖片驗證碼對象code = CodeUtils.getInstance().getCode(); //獲取當前圖片驗證碼的對應內容用于校驗image.setImageBitmap(bitmap);image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {bitmap = CodeUtils.getInstance().createBitmap();code = CodeUtils.getInstance().getCode();image.setImageBitmap(bitmap);Toast.makeText(MainActivity.this, code, Toast.LENGTH_SHORT).show(); //圖片驗證碼內容提示 }}); }}

工具類CodeUtils的代碼如下:

/** * Created by nuist__NJUPT on 2021/4/16. */public class CodeUtils { //隨機碼集 private static final char[] CHARS = { ’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’a’, ’b’, ’c’, ’d’, ’e’, ’f’, ’g’, ’h’, ’i’, ’j’, ’k’, ’l’, ’m’, ’n’, ’o’, ’p’, ’q’, ’r’, ’s’, ’t’, ’u’, ’v’, ’w’, ’x’, ’y’, ’z’, ’A’, ’B’, ’C’, ’D’, ’E’, ’F’, ’G’, ’H’, ’I’, ’J’, ’K’, ’L’, ’M’, ’N’, ’O’, ’P’, ’Q’, ’R’, ’S’, ’T’, ’U’, ’V’, ’W’, ’X’, ’Y’, ’Z’ }; private static CodeUtils mCodeUtils; private int mPaddingLeft, mPaddingTop; private StringBuilder mBuilder = new StringBuilder(); private Random mRandom = new Random(); //Default Settings private static final int DEFAULT_CODE_LENGTH = 4;//驗證碼的長度 這里是4位 private static final int DEFAULT_FONT_SIZE = 60;//字體大小 private static final int DEFAULT_LINE_NUMBER = 3;//多少條干擾線 private static final int BASE_PADDING_LEFT = 20; //左邊距 private static final int RANGE_PADDING_LEFT = 30;//左邊距范圍值 private static final int BASE_PADDING_TOP = 70;//上邊距 private static final int RANGE_PADDING_TOP = 15;//上邊距范圍值 private static final int DEFAULT_WIDTH = 200;//默認寬度.圖片的總寬 private static final int DEFAULT_HEIGHT = 100;//默認高度.圖片的總高 private static final int DEFAULT_COLOR = Color.rgb(0xee, 0xee, 0xee);//默認背景顏色值 private String code; public static CodeUtils getInstance() {if (mCodeUtils == null) { mCodeUtils = new CodeUtils();}return mCodeUtils; } //生成驗證碼圖片 public Bitmap createBitmap() {mPaddingLeft = 0; //每次生成驗證碼圖片時初始化mPaddingTop = 0;Bitmap bitmap = Bitmap.createBitmap(DEFAULT_WIDTH, DEFAULT_HEIGHT, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);code = createCode();canvas.drawARGB(0, 0, 0, 0);canvas.drawColor(DEFAULT_COLOR);Paint paint = new Paint();paint.setTextSize(DEFAULT_FONT_SIZE);for (int i = 0; i < code.length(); i++) { randomTextStyle(paint); randomPadding(); canvas.drawText(code.charAt(i) + '', mPaddingLeft, mPaddingTop, paint);}//干擾線for (int i = 0; i < DEFAULT_LINE_NUMBER; i++) { drawLine(canvas, paint);}canvas.save();//保存canvas.restore();return bitmap; } /** * 得到圖片中的驗證碼字符串 * * @return */ public String getCode() {return code; } //生成驗證碼 public String createCode() {mBuilder.delete(0, mBuilder.length()); //使用之前首先清空內容for (int i = 0; i < DEFAULT_CODE_LENGTH; i++) { mBuilder.append(CHARS[mRandom.nextInt(CHARS.length)]);}return mBuilder.toString(); } //生成干擾線 private void drawLine(Canvas canvas, Paint paint) {int color = randomColor();int startX = mRandom.nextInt(DEFAULT_WIDTH);int startY = mRandom.nextInt(DEFAULT_HEIGHT);int stopX = mRandom.nextInt(DEFAULT_WIDTH);int stopY = mRandom.nextInt(DEFAULT_HEIGHT);paint.setStrokeWidth(1);paint.setColor(color);canvas.drawLine(startX, startY, stopX, stopY, paint); } //隨機顏色 private int randomColor() {mBuilder.delete(0, mBuilder.length()); //使用之前首先清空內容String haxString;for (int i = 0; i < 3; i++) { haxString = Integer.toHexString(mRandom.nextInt(0xEE)); if (haxString.length() == 1) {haxString = '0' + haxString; } mBuilder.append(haxString);}return Color.parseColor('#' + mBuilder.toString()); } //隨機文本樣式 private void randomTextStyle(Paint paint) {int color = randomColor();paint.setColor(color);paint.setFakeBoldText(mRandom.nextBoolean()); //true為粗體,false為非粗體float skewX = mRandom.nextInt(11) / 10;skewX = mRandom.nextBoolean() ? skewX : -skewX;paint.setTextSkewX(skewX); //float類型參數,負數表示右斜,整數左斜paint.setUnderlineText(mRandom.nextBoolean()); //true為下劃線,false為非下劃線paint.setStrikeThruText(mRandom.nextBoolean()); //true為刪除線,false為非刪除線 } //隨機間距 private void randomPadding() {mPaddingLeft += BASE_PADDING_LEFT + mRandom.nextInt(RANGE_PADDING_LEFT);mPaddingTop = BASE_PADDING_TOP + mRandom.nextInt(RANGE_PADDING_TOP); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人久久婷婷| 久久久国产精品网站| 91av亚洲| 精品五月天堂| 国产精品v日韩精品v欧美精品网站| 日本免费新一区视频| 日本久久一区| 国产精品一卡| 福利片在线一区二区| 伊人久久视频| 香蕉精品视频在线观看| 91久久中文| 久久国产精品久久久久久电车| 99视频精品免费观看| 亚洲美女91| 国产欧美日韩综合一区在线播放| 国产精品嫩草影院在线看| 欧美精品91| 狠狠久久伊人中文字幕| 成人在线视频区| 日本精品在线中文字幕| 蜜桃成人av| 鲁大师成人一区二区三区| 日韩久久99| 麻豆中文一区二区| 久久久久99| 蜜臀国产一区二区三区在线播放| 日本成人手机在线| 久久一区亚洲| 日本韩国欧美超级黄在线观看| 婷婷色综合网| 日韩精品免费观看视频| 久久av影院| 日韩高清中文字幕一区二区| 午夜免费一区| 88久久精品| 成人在线黄色| 国产一区二区高清| 欧美日韩网址| 亚洲一区资源| 久久亚洲不卡| 久久av网站| 婷婷综合亚洲| 日本成人在线不卡视频| 精品久久久久久久| 欧美 日韩 国产一区二区在线视频 | 国产一区二区三区久久久久久久久| 中文字幕一区久| 亚洲一区黄色| 精品一区电影| 免费日韩视频| 麻豆成人综合网| 99视频一区| 久久亚洲人体| 中文精品电影| 免费福利视频一区二区三区| 玖玖玖国产精品| 国产成人精选| 日本国产欧美| 黄色亚洲免费| 精品日本视频| 亚洲我射av| 日韩av免费| 欧美亚洲tv| 影视先锋久久| 国产欧美日韩一级| 99久久婷婷| 91精品国产经典在线观看| 日韩黄色大片| 日韩一区二区三免费高清在线观看| 精品淫伦v久久水蜜桃| 狠狠久久婷婷| 国产精品mm| 亚洲综合色婷婷在线观看| 久久天堂精品| 你懂的亚洲视频| 视频一区中文字幕| 日韩电影免费网站| 国产精品久久久久久妇女| 亚洲国产日韩欧美在线| 麻豆视频观看网址久久| 石原莉奈一区二区三区在线观看| 久久超级碰碰| 日韩欧美高清一区二区三区| 国语精品一区| 日韩不卡在线观看日韩不卡视频| 蜜桃视频在线网站| 国产欧美综合一区二区三区| 夜夜精品视频| 老司机精品在线| 亚洲精品乱码久久久久久蜜桃麻豆| 成人久久久久| 久久亚洲精精品中文字幕| 亚洲精品极品| aⅴ色国产欧美| 99精品电影| av资源新版天堂在线| 国产精品最新| 亚洲精品第一| 午夜在线视频观看日韩17c| 国产亚洲一区二区手机在线观看| 国产日韩一区二区三区在线播放| 午夜久久久久| 99成人在线视频| 超碰超碰人人人人精品| 欧美激情视频一区二区三区在线播放| 中文在线日韩| 一区二区电影| 午夜在线精品| 国产精品美女久久久浪潮软件| 日韩成人a**站| 欧美一级一区| 亚洲a成人v| 亚洲欧美日本国产专区一区| 1000部精品久久久久久久久| 97精品中文字幕| 精品午夜视频| 国产精品久久久久久久久久妞妞 | 国产精品伊人| 日韩和欧美一区二区| 中文字幕免费一区二区| 视频一区视频二区在线观看| 亚洲精品小说| 欧美日韩激情| 亚洲一级网站| 亚洲婷婷在线| 午夜精品影院| 国产日韩专区| 久久国产成人| 麻豆精品91| 久久国产精品99国产| 久久亚洲影院| 亚洲欧洲美洲国产香蕉| 少妇精品久久久一区二区| 亚洲精品免费观看| 一区二区三区网站| 婷婷视频一区二区三区| 日本成人在线不卡视频| 91精品国产经典在线观看| 欧美久久香蕉| 欧美日韩一视频区二区| 91精品国产自产观看在线| 欧美日一区二区三区在线观看国产免 | 亚洲综合在线电影| 999国产精品| 免费视频一区三区| 国产精品日韩| 日本免费新一区视频| 国产精品一区二区免费福利视频| 国产精品日韩精品中文字幕| 欧美aa在线视频| 成人在线视频中文字幕| 色在线中文字幕| 欧美日韩激情| 午夜久久av | 日韩1区2区3区| 国产精品久久久久久模特 | 日韩高清三区| 国产精品一区三区在线观看| 麻豆传媒一区二区三区| 岛国av在线播放| 亚洲大全视频| 亚洲1区在线观看| 麻豆成人av在线| 香蕉久久精品| 日韩精品一二区| 日韩在线网址| 国产一区二区视频在线看| 国产精品亚洲一区二区三区在线观看| 影院欧美亚洲| 欧美午夜网站| 日韩三区免费| 中文一区一区三区免费在线观| 欧美日韩黄网站| 日韩免费在线| 亚洲一区日本| 色乱码一区二区三区网站| 久久亚洲国产精品一区二区| 国产精品流白浆在线观看| 日韩av免费大片| 免费国产亚洲视频| 中文字幕一区二区三区日韩精品| 欧美日韩亚洲三区| 韩国三级一区| 亚洲乱码视频| 成人午夜亚洲| 日韩精品一二三四| 国产精品一区二区美女视频免费看| 日韩美女一区二区三区在线观看| 国产精品美女| 精品一区二区三区的国产在线观看| 亚洲一本视频| 国产精品久久久久久久久久妞妞| 99精品视频在线| 日韩福利视频一区| 99国产精品免费视频观看| 亚久久调教视频| 久久久久国产精品一区二区| 日产欧产美韩系列久久99| 日韩一区电影|