Bài đăng

Android - Make firework animation - Library

Step 1: Add this in build.gradle --> dependencies: compile 'com.plattysoft.leonids:LeonidsLib:1.3.2' Step 2: Use in Activity: private void fireworkAnimation(View v){ new ParticleSystem(this, 30, R.mipmap.your_image, 1500) .setSpeedRange(0.1f, 0.25f).setFadeOut(300) .setScaleRange(0,1) .setStartTime(0) .oneShot(v, 30); } Have fun! More: https://github.com/plattysoft/Leonids

Android - Make dotter line - Drawable

Create drawable file: dotter_line.xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="#BDBDBD" android:dashGap="8dp" android:dashWidth="7dp" /> </shape> Want rotate? create another drawable file: <rotate android:fromDegrees="90" android:toDegrees="90" android:drawable="@drawable/dotter_line"/> Use in View: maybe need this : android:layerType="software"

Android - Make background with shadow - Drawable

Create drawable file: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:height="30dp" android:gravity="bottom" > <shape android:shape="rectangle"> <gradient android:angle="90" android:startColor="@android:color/transparent" android:endColor="#000000"> </gradient> <corners android:radius="5dp"/> </shape> </item> <item android:left="0dp" android:right="0dp" android:top="0dp" android:bottom="3dp"> <shape android:shape="rectangle"> <solid android:color="#FFFFFF"/> <corners android:radius="2dp"/> </shape> </item> </layer-list>

Android - Auto detect network connection change event - Java

Step 1: Create a Receiver - Create class NetworkChangeReceiver: public class NetworkChangeReceiver extends BroadcastReceiver { private NetworkListener networkListener; public void setNetworkListener(NetworkListener networkListener) { this.networkListener = networkListener; } public NetworkChangeReceiver() { } @Override public void onReceive(Context context, Intent intent) { if(networkListener!=null) networkListener.onConnectionChange(); } public interface NetworkListener { void onConnectionChange(); } } - In AndroidManifest.xml add in tag application: <receiver android:name=".yourPath.NetworkChangeReceiver" android:label="NetworkChangeReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> - Add permission in AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission andr

Android - DatePicker

B1: Tạo DatePicker với DatePickerDialog import java.util.Calendar; DatePickerDialog datePicker=new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { } }, Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().get(Calendar.DAY_OF_MONTH)); Bước 2: Tùy biến - Ẩn khung chọn ngày: int dayId = getResources().getIdentifier("android:id/day", null, null); if(dayId != 0) { View dayPicker = datePicker.getDatePicker().findViewById(dayId); if (dayPicker != null) { dayPicker.setVisibility(View.GONE); } } - Ẩn khung chọn tháng: "android:id/month" - Ẩn khung chọn năm: "android:id/year" --> Chỉ chọn ngày hoặc tháng hoặc năm B3: Sử dụng datePicker.show();

Android - Lambda Expression

Bước 1:Cài đặt JDK Để sử dụng trước tiên cần phải cài đặt JDK8 cho Java (Nếu đã cài đặt thì không cần) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Bước 2: Cấu hình trong build.gradle(app) defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } Bước 3: Coding (VD) // bình thường button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("DO_WORK","1"); Log.e("DO_WORK","2"); } }); //lambda button.setOnClickListener(v -> { Log.e("DO_WORK","1"); Log.e("DO_WORK","2"); }); //bình thường button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("DO_WORK","1"); } }); //lambda button.setOnClickListener(v -> Log.e("DO_W

Android - QR Code reader - Quét QR Code trên Android Studio

Bước 1: Thêm dependency trong Build.Gradle compile 'com.journeyapps:zxing-android-embedded:3.5.0' Bước 2: Trong AndroidManifest.xml Thêm permission: <uses-permission android:name="android.permission.CAMERA"/> Trong thẻ application thêm đoạn sau để đặt chế độ thẳng đứng poitrait cho màn hình <activity android:name="com.journeyapps.barcodescanner.CaptureActivity" android:screenOrientation="portrait" tools:replace="screenOrientation" /> --> thêm xmlns:tools="http://schemas.android.com/tools" trong thẻ manifest Bước 3: Trong Activity // mở activity quét qrcode của thư viện private void openScannerActivity() { IntentIntegrator integrator = new IntentIntegrator(this); integrator.setPrompt("Quét mã QR");// hướng dẫn integrator.setOrientationLocked(false); integrator.setTimeout(30000);//giới hạn thời gian quét integrator.initiateScan(); } // xử lý kết quả trả về @Over

Android - Animation in Code - Một số Animation - hiệu ứng trong Android Studio

// mở rộng một view public static void expand(final View v) { v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); final int targetHeight = v.getMeasuredHeight(); // Older versions of android (pre API 21) cancel animations for views with a height of 0. v.getLayoutParams().height = 1; v.setVisibility(View.VISIBLE); Animation a = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { v.getLayoutParams().height = interpolatedTime == 1 ? ViewGroup.LayoutParams.WRAP_CONTENT : (int) (targetHeight * interpolatedTime); v.requestLayout(); } @Override public boolean willChangeBounds() { return true; } }; // 1dp/ms a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density)); v.startAnimation(a); } // thu nhỏ lại public static void collapse(final View v) { final int initialHeight = v.getMeasuredHeight(); Animation a = new Animation() { @Override prote

Android - Remove Focus - Loại bỏ việc Edittext tự động hiện bàn phím

Thêm 2 thuộc tính vào viewgroup - layout chứa edittext: android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"

Android - Language Lấy ngôn ngữ, địa điểm hiện tại của thiết bị

Sử dụng Locale: String locale = getResources().getConfiguration().locale.getCountry(); hoặc: String localeDis = getResources().getConfiguration().locale.getDisplayCountry(); hoặc: String displayLanguage=Locale.getDefault().getDisplayLanguage(); Sử dụng thông tin cung cấp từ SIM: TelephonyManager teleMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); if (teleMgr != null) {  String countryISOCode = teleMgr.getSimCountryIso(); }