最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)多個連續(xù)帶數(shù)字圓圈效果

 更新時間:2017年07月22日 10:11:06   作者:繁城落葉  
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)多個連續(xù)帶數(shù)字圓圈效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

有項目需求需要繪制多個圓圈,并且使用連續(xù)的數(shù)字對其排列起來,也就是好多排的圓圈。

首先看一下效果圖:

一排設(shè)置為8個,一共有53個的:

這里寫圖片描述

一排設(shè)值為5個的,一共有153個:

這里寫圖片描述

可以根據(jù)總的個數(shù)和每排個數(shù)自動調(diào)節(jié)圓圈的大小,并且根據(jù)傳入的監(jiān)聽事件作出不同的點擊效果。

思路很簡單,首先需要畫一個圓出來:

<?xml version="1.0" encoding="UTF-8"?>
<shape
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="oval"
 android:useLevel="false" >
 <padding
  android:left="1dp"
  android:top="1dp"
  android:right="1dp"
  android:bottom="1dp" />

 <stroke
  android:width="1dp"
  android:color="@android:color/black" />
 <size android:width="10dp"
   android:height="10dp" />
</shape>

然后創(chuàng)建TextView,設(shè)置TextView的背景為這個drawable即可。

可以根據(jù)屏幕的總寬度和每排需要放置的圓個數(shù),計算出每一個圓的合適大小,然后設(shè)置每個圓之間的margin為這個圓的十分之一,所以這個圓的最后大小應(yīng)該為平均值的十分之八。

然后使用LinearLayout布局,動態(tài)加載多個TextView,每個TextView設(shè)置好對應(yīng)的屬性即可。

由于可能圓的個數(shù)過多,所以需要ScrollView來進(jìn)行嵌套,從而支持滑動事件,需要注意的就是ScrollView下面只能有一個子節(jié)點。

完整代碼:

import android.content.Context;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

/**
 * Created by leafage on 2017/7/21.
 */

public class CircleView {

 private LinearLayout mMainLinearLayout;
 private ScrollView mScrollView;
 private LinearLayout mLinearLayout;
 private WindowManager mWindowManager;
 private Context mContext;

 //全屏參數(shù)
 LinearLayout.LayoutParams MatchParams = new LinearLayout.LayoutParams(
   ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

 //用來設(shè)置內(nèi)部LinearLayout的參數(shù),寬度適應(yīng)父布局,高度自動
 LinearLayout.LayoutParams LinearLayoutParams = new LinearLayout.LayoutParams(
   ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

 //設(shè)置TextView的參數(shù)
 LinearLayout.LayoutParams TextViewParams = new LinearLayout.LayoutParams(
   LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);


 public CircleView(Context context) {
  mContext = context;
  mMainLinearLayout = new LinearLayout(context);
  mLinearLayout = new LinearLayout(context);
  mScrollView = new ScrollView(context);

  //用來得到總屏幕的寬度
  mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  init();
 }

 private void init() {
  mLinearLayout.setOrientation(LinearLayout.VERTICAL);

  mMainLinearLayout.setLayoutParams(MatchParams);//最外面的全屏
  mScrollView.setLayoutParams(MatchParams);//滾動的全屏
  mLinearLayout.setLayoutParams(MatchParams);//內(nèi)容的全屏
  mLinearLayout.setOrientation(LinearLayout.VERTICAL);//垂直放置

 }

 @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
 public LinearLayout getLinearLayout(int column, int count, View.OnClickListener onClickListener) {

  int row = count / column;//計算出多少排

  int duoyu = count - row * column;//計算出多余的個數(shù)

  int totalWidth = mWindowManager.getDefaultDisplay().getWidth();//得到總的寬度

  int width = totalWidth / column;//計算出每排的每個圓圈的平均寬度

  int margin = (int) (width*0.1);//設(shè)置邊距為0.1

  width = (int) (width * 0.8);//去掉左右邊距剩下的寬度

  int num = 1;//從1開始計數(shù)


  TextViewParams.setMargins(margin, margin, margin, margin);

  for (int i = 0 ; i < row; i++) {//一共繪制多少排
   LinearLayout linearLayout = new LinearLayout(mContext);
   linearLayout.setLayoutParams(LinearLayoutParams);
   linearLayout.setOrientation(LinearLayout.HORIZONTAL);
   for (int j = 0; j < column; j++) {//一排繪制多少個
    final TextView textView = new TextView(mContext);
    textView.setBackground(mContext.getResources().getDrawable(R.drawable.cricle));
    textView.setHeight(width);
    textView.setWidth(width);
    textView.setGravity(Gravity.CENTER);
    textView.setText(String.valueOf(num));
    textView.setLayoutParams(TextViewParams);
    textView.setOnClickListener(onClickListener);//設(shè)置監(jiān)聽事件
    linearLayout.addView(textView);
    num++;
   }
   mLinearLayout.addView(linearLayout);
  }

  //繪制剩下多余的一排
  LinearLayout linearLayout = new LinearLayout(mContext);
  linearLayout.setLayoutParams(LinearLayoutParams);
  linearLayout.setOrientation(LinearLayout.HORIZONTAL);

  for (int i = 0 ; i< duoyu;i++) {
   TextView textView = new TextView(mContext);
   textView.setBackground(mContext.getResources().getDrawable(R.drawable.cricle));
   textView.setHeight(width);
   textView.setWidth(width);
   textView.setGravity(Gravity.CENTER);
   textView.setText(String.valueOf(num));
   textView.setLayoutParams(TextViewParams);
   textView.setOnClickListener(onClickListener);
   linearLayout.addView(textView);
   num++;
  }

  mLinearLayout.addView(linearLayout);

  mScrollView.addView(mLinearLayout);

  mMainLinearLayout.addView(mScrollView);

  return mMainLinearLayout;
 }

}


可以直接在Activity里面使用:

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity{

 private LinearLayout mMainLayout;

 @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  CircleView circle = new CircleView(this);

  mMainLayout = circle.getLinearLayout(8, 53, new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    Toast.makeText(MainActivity.this, "ID:" + ((TextView)view).getText(), Toast.LENGTH_SHORT).show();
   }
  });
  setContentView(mMainLayout);
 }

}

代碼結(jié)構(gòu):

這里寫圖片描述

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Studio利用AChartEngine制作餅圖的方法

    Android Studio利用AChartEngine制作餅圖的方法

    閑來無事,發(fā)現(xiàn)市面上好多app都有餅圖統(tǒng)計的功能,得空自己實現(xiàn)一下,下面這篇文章主要給大家介紹了關(guān)于Android Studio利用AChartEngine制作餅圖的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-10-10
  • Flutter?EventBus事件總線的應(yīng)用詳解

    Flutter?EventBus事件總線的應(yīng)用詳解

    這篇文章主要為大家介紹了Flutter?EventBus事件總線的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 使用flutter的showModalBottomSheet遇到的坑及解決

    使用flutter的showModalBottomSheet遇到的坑及解決

    這篇文章主要介紹了使用flutter的showModalBottomSheet遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Android編程實現(xiàn)WebView全屏播放的方法(附源碼)

    Android編程實現(xiàn)WebView全屏播放的方法(附源碼)

    這篇文章主要介紹了Android編程實現(xiàn)WebView全屏播放的方法,結(jié)合實例形式較為詳細(xì)的分析了Android實現(xiàn)WebView全屏播放的布局與功能相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • Android實現(xiàn)短信、微信、微博分享功能

    Android實現(xiàn)短信、微信、微博分享功能

    微信、微博分享功能大家都體驗過吧,非常方便我們的生活,下面通過本文給大家介紹Android實現(xiàn)短信、微信、微博分享功能,需要的朋友參考下吧
    2017-12-12
  • Android 實現(xiàn)錨點定位思路詳解

    Android 實現(xiàn)錨點定位思路詳解

    本篇文章就使用tablayout、scrollview來實現(xiàn)android錨點定位的功能。通過<a href="#head" rel="external nofollow" > 去設(shè)置頁面內(nèi)錨點定位跳轉(zhuǎn)。具體實現(xiàn)思路大家跟隨腳本之家小編一起通過本文看下吧
    2018-07-07
  • AndroidStudio4.0 New Class的坑(小結(jié))

    AndroidStudio4.0 New Class的坑(小結(jié))

    這篇文章主要介紹了AndroidStudio4.0 New Class的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Flutter使用JsBridge方式處理Webview與H5通信的方法

    Flutter使用JsBridge方式處理Webview與H5通信的方法

    這篇文章主要介紹了Flutter使用JsBridge方式處理Webview與H5通信的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 解析android中include標(biāo)簽的使用

    解析android中include標(biāo)簽的使用

    本篇文章是對android中include標(biāo)簽的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android積分簽到上移消失動畫效果

    Android積分簽到上移消失動畫效果

    這篇文章主要介紹了Android積分簽到上移消失動畫效果大致思路:動畫部分,由一個垂直的平移和一個透明度變化的兩個動畫組成。然后通過AnimationSet將兩個動畫添加到集合,然后開始播放動畫。
    2018-05-05

最新評論

贵德县| 大英县| 平顶山市| 兴化市| 江华| 黄平县| 句容市| 永年县| 葫芦岛市| 溧水县| 霍州市| 桐乡市| 龙海市| 乌拉特前旗| 曲水县| 渭源县| 阳江市| 肥西县| 桐乡市| 沿河| 城固县| 泸溪县| 宁波市| 芜湖县| 北川| 皋兰县| 昆明市| 黄石市| 扎赉特旗| 当雄县| 武邑县| 屏山县| 婺源县| 忻州市| 兴安县| 邮箱| 九龙县| 峡江县| 手机| 正安县| 桃园县|