導航:首頁 > 操作系統 > android仿聯系人

android仿聯系人

發布時間:2025-03-05 10:48:11

1. 怎麼在android開發中仿百度雲盤添加文件夾

這就是個列表,添加一個文件夾就是添加一個列表項。然後按照最後創建或修改時間列表倒序排列,就是這樣的效果。

2. android 仿預訂日歷時間選擇(如去哪兒,攜程

看標題就知道了,一個日歷選擇,類似於去哪兒,攜程,酒店預訂功能
調用方法
package com.fly.caldroid;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.content.res.Configuration;import android.os.Bundle;import android.view.View;import com.wz.caldroid.CalendarCellDecorator;import com.wz.caldroid.CalendarPickerView;import java.util.ArrayList;import java.util.Calendar;import java.util.Collections;import java.util.Date;@SuppressLint("SimpleDateFormat")public class CaldroidActivity extends Activity { private CalendarPickerView calendar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.calendar_activity); Bundle myBundle = getIntent().getExtras(); long seleteTime = myBundle.getLong("selete_time"); final Calendar nextYear = Calendar.getInstance(); nextYear.add(Calendar.MONTH, 3); final Calendar lastYear = Calendar.getInstance(); lastYear.add(Calendar.MONTH, 0); calendar = (CalendarPickerView) findViewById(R.id.calendar_view); Calendar today = Calendar.getInstance(); ArrayList<Date> dates = new ArrayList<Date>(); if (seleteTime>0){
Date d1=new Date(seleteTime); dates.add(d1); }else{
dates.add(today.getTime()); } calendar.setDecorators(Collections.<CalendarCellDecorator>emptyList()); calendar.init(lastYear.getTime(), nextYear.getTime()) // .inMode(CalendarPickerView.SelectionMode.MULTIPLE) // .withSelectedDate(dates.get(0)); initButtonListeners(); } private void initButtonListeners() { calendar.setOnDateSelectedListener(new CalendarPickerView.OnDateSelectedListener() { @Override public void onDateSelected(Date date) {
Intent intent = new Intent(); intent.putExtra("SELETE_DATA_TIME", calendar.getSelectedDate().getTime()); setResult(2, intent); finish(); } @Override public void onDateUnselected(Date date) {

}
}); View titlebar_img_back=findViewById(R.id.titlebar_img_back); titlebar_img_back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
finish(); }
}); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
}

layout======
calendar_activity

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:id="@+id/title_content_layout" android:layout_width="match_parent" android:layout_height="47.5dp" android:background="@color/big_red"> <TextView android:id="@+id/titlebar_text_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/titlebar_img_back" android:maxEms="8" android:singleLine="true" android:text="選擇日歷" android:textColor="@color/white" android:textSize="18sp" android:visibility="visible" /> <ImageView android:id="@+id/titlebar_img_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:padding="5dp" android:src="@drawable/back_ic" android:visibility="visible" /> </RelativeLayout> <com.wz.caldroid.CalendarPickerView android:id="@+id/calendar_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingBottom="16dp" android:scrollbarStyle="outsideOverlay" android:clipToPadding="false" android:background="#FFFFFF" /></LinearLayout>

在textview上顯示時間
package com.fly.caldroid;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends AppCompatActivity { private long seleteTime = 0; private TextView time_choice_view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); time_choice_view = (TextView) findViewById(R.id.time_choice_view); time_choice_view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putLong("selete_time", seleteTime); intent.putExtras(bundle); intent.setClass(MainActivity.this, CaldroidActivity.class); startActivityForResult(intent, 5); }
}); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 5) { if (resultCode == 2) { seleteTime = data.getLongExtra("SELETE_DATA_TIME", 0); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date d1 = new Date(seleteTime); String t1 = format.format(d1); if (seleteTime > 0) { time_choice_view.setText(t1); } else { return; }
}
} super.onActivityResult(requestCode, resultCode, data); }
}

3. 有沒有大神 用Android實現仿照Siri聲波曲線

代碼實現

波浪其實是由4條貝塞爾曲線組成的,可以在自定義View的onDraw函數中,用Path.quadTo函數畫出4條曲線。

Path.quadTo(float x1, float y1, float x2, float y2)

其中,x1,y1為控制點的坐標值,x2,y2為終點的坐標值;當控制點的x1位於起點與終點之間時,將畫出正弦曲線,此時y1控制正弦曲線的高度,即效果圖中波浪的高度由y1控制。
實現了曲線繪制和高度控制之後,如何讓曲線像波浪一樣動起來呢?
我的解決方法是在屏幕左邊,即x<0的位置,同樣繪制4條正弦曲線,並且啟動線程讓8條曲線都向右移動,當左邊4條曲線全部移動到屏幕內後,讓這8條曲線復位。如此周期進行。
解析

使用方法

在xml中,

<com.tao.view.SiriView
android:id="@+id/siriView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_centerInParent="true"/>

在Activity.Java中,

SiriView siriView = (SiriView) findViewById(R.id.siriView);
// 停止波浪曲線
siriView.stop();
// 設置曲線高度,height的取值是0f~1f
siriView.setWaveHeight(0.5f);
// 設置曲線的粗細,width的取值大於0f
siriView.setWaveWidth(5f);
// 設置曲線顏色
siriView.setWaveColor(Color.rgb(39, 188, 136));
// 設置曲線在X軸上的偏移量,默認值為0f
siriView.setWaveOffsetX(0f);
// 設置曲線的數量,默認是4
siriView.setWaveAmount(4);
// 設置曲線的速度,默認是0.1f
siriView.setWaveSpeed(0.1f);

4. Android仿ios條件選擇器pickerview

最近怎麼老寫View,可能寫view比較方便,寫其它東西還要抽時間整理總結,寫View就直接封完寫出來就行。

准備國慶放假,無心工作,那就寫篇簡單實用一點的文章,總不能白白浪費了時間。

有時候ios端會用到條件選擇器,好像是那邊自帶的,而android這邊是沒有的,但是為了兩端統一,沒辦法,只能我們去遷就他們了(你讓一個有自帶的去寫自定義是基本不可能的事)。
最經典的是我們有選擇地址的需求,比如美團這里的:

這個android是原生是沒有的,只有能選擇日期的。那怎麼辦?自定義,好像略難,那就用三方的吧。

https://github.com/Bigkoo/Android-PickerView

我找了很多,就覺得這個庫是做得比較好,比較完整的,而且也一直有在維護,還是比較推薦,使用起來也比較方便。項目里有很清晰的文檔,建議看之前先瀏覽過文檔。

我使用的效果:

我還是順便把源碼也瀏覽了下。發現這里有3個比較重要的類,這個之後會簡單的介紹:
(1)WheelView
(2)條件選擇的WheelOptions, 我感覺這個類的封裝有點vm的意思
(3)最外層封裝的OptionsPickerView

如果只是為了選擇地址的話直接用它封裝好的就行,但是有時候可能會需要用到其它的布局或需求,那我們就要在它原有的功能上進行擴展,比如說我寫的這個時間段的現在,直接用是沒有的,需要自己擴展。

而要進行擴展的話,就要先瀏覽源碼看看它內部怎麼寫的。

可以從調用的地方找到OptionsPickerView類

然後看看OptionsPickerView類內部,你會發現很多方法,但是基本都是builder方法個getset方法,我們可以找到重要的幾個方法。

這里做的是為view設置屬性。重要的是這里

這里的意思就是把這個View給WheelOptions這個對象,讓它來做處理。然後可以看
看布局。

可以看出它裡面是寫死固定就是3列。其實我不太贊成這樣的做法,對於這樣的多情況view的封裝,我個人還是比較喜歡做動態的。由於這里固定是3列,所以我上圖中4列的情況直接使用是實現不了的,所以需要擴展。這里的WheelView就是單列

它這裡布局寫死了固定3列,那我肯定是沒法復用它的這個布局了,所以就只能重寫布局。

我只寫了LinearLayout,就是要動態去添加WheelView。

原本的OptionsPickerView中

在builder構造時就固定了布局,所以我這不好擴展,不如重寫一個OptionsPickerView,當然重寫Builder也行,但是我覺得重寫OptionsPickerView比較好。而且他原本只有兩個類

所以我們需要繼承BasePickerView重寫一個PickerView,他原本內部的邏輯沒問題,我就抄過來用好了。

修改了
(1)修改布局變成我的布局
(2)然後把創建WheelView給加擴展createWheel(optionsPicker, context, total);因為我不想每次都都寫Builder這么多參數,我把這個pickerview當成中間成來弄,讓子類繼承它來做簡單的擴展

我們重寫個WheelView,因為原本的WheelView是做固定3列的處理,我們需要做成個動態的。

(1)我多添加了個參數total表示要展示多少列
(2)用List<WheelView> wvList數組來動態創建添加WheelView
(3)用List<List<T>> items 來裝每一列的數據(我這個Wheel只做了不關聯情況下的多列,關聯情況下我沒弄)

(4)showWheelView();

這個方法做展示的規則,默認是平均展示total列,而如果需要做特殊的展示情況,像我上邊一樣的,就寫個類繼承這個類重新這個方法重新展示的規則就行,比如我的時間期間選擇器。

重寫這個方法就能展示出自己需要展示的效果

調用時也很方便。

我講這篇的目的是為了第一介紹一下這個三方庫,還是比較實用的。第二,說下擴展的重要性。第三,放假了實在工作效率低。

5. android仿QQ右上角顯示未讀消息個數,求助

監聽消息,得到數目,在app圖標上畫出數字(canvas),然後替換桌面快捷方式

public void createShortCut(){

//創建快捷方式的Intent
Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
//不允許重復創建
shortcutintent.putExtra("plicate", false);
//需要現實的名稱
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
//快捷圖片(每次重繪logo生成一張新圖)
Parcelable icon = Intent.ShortcutIconResource.fromContext(activity, R.drawable.logo);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
//點擊快捷圖片,運行的程序主入口
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent());
//發送廣播。OK
sendBroadcast(shortcutintent);
}
}

閱讀全文

與android仿聯系人相關的資料

熱點內容
厚襯衣程序員 瀏覽:743
一年級編程精彩內容 瀏覽:578
cc2540編程 瀏覽:794
越南離北京源碼 瀏覽:639
服裝展示網站源碼 瀏覽:325
編譯器過度優化線 瀏覽:689
安卓怎麼邊瀏覽邊錄視頻 瀏覽:653
分支限界java 瀏覽:389
phpdiscuz登錄 瀏覽:182
epr伺服器50人要什麼配置 瀏覽:780
雲伺服器ecs如何轉移 瀏覽:558
android仿應用寶 瀏覽:379
php連接mysql資料庫的方法 瀏覽:109
螺桿製冷壓縮機油鏡怎樣判斷 瀏覽:126
本地電腦如何做伺服器配置 瀏覽:860
如何對app的版權進行保護 瀏覽:822
小孩子用什麼app軟體 瀏覽:733
androidksoap上傳 瀏覽:464
伺服器掉線是什麼原因 瀏覽:33
迷你世界怎麼看伺服器被炸 瀏覽:324