Thứ Sáu, 28 tháng 8, 2015

[SOLVED] how to hide listview scrollbar?

Is there a way to hide scrollbar in ListView. I know it's possible for ScrollView but can't find a way forListView scrollbar. Any ideas?

Answer : 
Try to type this in layout xml file
android:scrollbars="none"
Tutorial is here.
Hope, it helps you

Đưa google Analytics V4 vào ứng dụng android của bạn (Phần 1)

Đưa google Analytics V4 vào ứng dụng android của bạn


Giới thiệu

Bạn đã bao giờ muốn kiểm tra xem có bao nhiều đang on trên ứng dụng hoặc game của bạn hay chưa, họ đang dùng ở mục nào nhiều nhất ..v.v.v . Vậy thì google Analytics sẽ là lựa chọn cực kì hợp lý cho bạn nào muốn theo dõi hành vi người dùng kiểm tra lỗi phần mềm kiểm tra

Mục Lục

  • I. Tạo google Analytics ID cho ứng dụng của bạn
  • II. Tạo Project
  • III. Đưa google analytic vào ứng dụng của bạn

Bắt đầu

I. Tạo google Analytics ID cho ứng dụng của bạn

I.1 - Bạn vào trang https://www.google.com/analytics/web/#home/ đăng nhập nếu chưa có thì tạo 1 tài khoản mới .
I.2 - Ở tab ADMIN bên góc bên phải màn hình trong phần ACCOUNT tạo mới 1 ACCOUNT
I.3 - Chọn Industry Category & Report Time Zone chọn Get Tracking ID. rồi next
I.4 - Bạn sẽ được 1 cái ID dạng như vầy
 UA-XXXXXXXX-X 

II. Khởi tạo project của bạn


II.1 - Bạn chọn New Project ----> chọn Blank Activity
II.2 - Tạo mới 2 cái parket dưới tên activity app để dễ dàng tổ chức ứng dụng hơn, bạn tạo thêm 1 MainActivity.java đưa vào mục activity
II.3 - Mở File strings.xml dưới mục res ⇒ values bạn sửa lại

strings.xml
<resources>
    <string name="app_name">Google Analytics</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_second">Second Activity</string>
    <string name="toast_track_exception">Exception is recorded. Check the Crashes and Exceptions on Google Dashboard!</string>
    <string name="toast_app_crash">The app will crash now! Check the Crashes and Exceptions on Google Dashboard!</string>
    <string name="fragment_footer">Fragment is loaded! Check the screen view on Google Analytics Dashboard.</string>
    <string name="msg_instructions">Click on each button to see the appropriate tracking on Google Analytics</string>
    <string name="btn_second_screen">Second Screen</string>
    <string name="btn_send_event">Track Event</string>
    <string name="btn_exception_tracking">Track Exception</string>
    <string name="btn_app_crash">Track App Crash</string>
    <string name="btn_load_fragment">Fragment Tracking</string>
</resources>


II.3 - Mở Fle color.xml dưới mục res ⇒ values bạn sửa lại, nếu mà không thấy thì bạn có thể tạo 1 cái file xml mới với tên color luôn
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#FF6D00</color>
    <color name="colorPrimaryDark">#FF6D00</color>
    <color name="textColorPrimary">#FFFFFF</color>
    <color name="windowBackground">#FFFFFF</color>
    <color name="navigationBarColor">#000000</color>
    <color name="colorAccent">#FFD180</color>
    <color name="btnBackground">#e7e7e7</color>
</resources>


III. Đưa google analytic vào ứng dụng của bạn

III.1 - Mở mục trong app của bạn ra thêm vào trong dependencies{...}

build.gradle
  dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile 'com.android.support:appcompat-v7:22.2.0' 
  compile 'com.google.android.gms:play-services-analytics:7.3.0'
  }


III.2 - Tạo mới một file tên app_tracker.xml dưới thư mục res rồi viết thành

app_tracker.xml
  <?xml version="1.0" encoding="utf-8"?>
  <resources>
  <!-- End current session if app sleeps for a period of time -->
  <integer name="ga_sessionTimeout">300</integer>
  
  <!-- Enable automatic Activity measurement -->
  <bool name="ga_autoActivityTracking">true</bool>
  
  <!--  The property id associated with this analytics tracker -->
  <string name="ga_trackingId">UA-58121605-1</string>
  
  <string name="ga_sampleFrequency">100.0</string>
  
  <bool name="ga_reportUncaughtExceptions">true</bool>
  
  <!--
        See Project Structure -> Analytics -> Google Analytics -> Learn More
        to learn more about configuring this file.
      -->
  </resources>
 
Bạn nên chắc chắn rằng ga_trackingId phải thay bằng cái ID mà bạn lấy ở mục I cái này rất quan trọng nếu không bạn sẽ không thấy được thành quả của bạn :)

III.3 - Dưới app package tạo mới 1 class AnalyticsTrackers.java với code dưới đây

AnalyticsTrackers.java
  import android.content.Context;
  
  import com.google.android.gms.analytics.GoogleAnalytics;
  import com.google.android.gms.analytics.Tracker;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import info.androidhive.googleanalytics.R;
  
  /**
   * A collection of Google Analytics trackers. Fetch the tracker you need using
   * {@code AnalyticsTrackers.getInstance().get(...)}
   * <p/>
   * This code was generated by Android Studio but can be safely modified by
   * hand at this point.
   * <p/>
   * TODO: Call {@link #initialize(Context)} from an entry point in your app
   * before using this!
   */
  public final class AnalyticsTrackers {
  
  public enum Target {
        APP,
        // Add more trackers here if you need, and update the code in #get(Target) below
  }
  
  private static AnalyticsTrackers sInstance;
  
  public static synchronized void initialize(Context context) {
        if (sInstance != null) {
  throw new IllegalStateException("Extra call to initialize analytics trackers");
        }
  
        sInstance = new AnalyticsTrackers(context);
  }
  
  public static synchronized AnalyticsTrackers getInstance() {
        if (sInstance == null) {
  throw new IllegalStateException("Call initialize() before getInstance()");
        }
  
        return sInstance;
  }
  
  private final Map<Target, Tracker> mTrackers = new HashMap<Target, Tracker>();
  private final Context mContext;
  
  /**
       * Don't instantiate directly - use {@link #getInstance()} instead.
       */
  private AnalyticsTrackers(Context context) {
        mContext = context.getApplicationContext();
  }
  
  public synchronized Tracker get(Target target) {
        if (!mTrackers.containsKey(target)) {
  Tracker tracker;
  switch (target) {
  case APP:
  tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker);
  break;
  default:
  throw new IllegalArgumentException("Unhandled analytics target " + target);
  }
  mTrackers.put(target, tracker);
        }
  
        return mTrackers.get(target);
  }
  }
 

III.4 - Dưới app tiếp tục tạo 1 class MyApplication.java class này chứa 1 số hàm quan trọng như
 
 trackScreenView() : Hàm để theo dõi màn hình (Activity hoặc Fragment) 
 trackException() : Hàm để bắt exceptions khi bạn sử dụng khối  try catch 
 trackEvent() : Hàm để bắt sự kiện 

MyApplication.java
  import android.app.Application;
  
  import com.google.android.gms.analytics.GoogleAnalytics;
  import com.google.android.gms.analytics.HitBuilders;
  import com.google.android.gms.analytics.StandardExceptionParser;
  import com.google.android.gms.analytics.Tracker;
  
  /**
   * Created by Ravi on 13/08/15.
   */
  public class MyApplication extends Application {
  public static final String TAG = MyApplication.class
  .getSimpleName();
  
  private static MyApplication mInstance;
  
  @Override
  public void onCreate() {
        super.onCreate();
        mInstance = this;
  
        AnalyticsTrackers.initialize(this);
        AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
  }
  
  public static synchronized MyApplication getInstance() {
        return mInstance;
  }
  
  public synchronized Tracker getGoogleAnalyticsTracker() {
        AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
        return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
  }
  
  /***
       * Tracking screen view
       *
       * @param screenName screen name to be displayed on GA dashboard
       */
  public void trackScreenView(String screenName) {
        Tracker t = getGoogleAnalyticsTracker();
  
        // Set screen name.
        t.setScreenName(screenName);
  
        // Send a screen view.
        t.send(new HitBuilders.ScreenViewBuilder().build());
  
        GoogleAnalytics.getInstance(this).dispatchLocalHits();
  }
  
  /***
       * Tracking exception
       *
       * @param e exception to be tracked
       */
  public void trackException(Exception e) {
        if (e != null) {
  Tracker t = getGoogleAnalyticsTracker();
  
  t.send(new HitBuilders.ExceptionBuilder()
  .setDescription(
  new StandardExceptionParser(this, null)
  .getDescription(Thread.currentThread().getName(), e))
  .setFatal(false)
  .build()
  );
        }
  }
  
  /***
       * Tracking event
       *
       * @param category event category
       * @param action   action of the event
       * @param label    label
       */
  public void trackEvent(String category, String action, String label) {
        Tracker t = getGoogleAnalyticsTracker();
  
        // Build and send an Event.
        t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
  }
  
  }
 
III.5 - Mở file AndroidManifest.xml thêm vào 2 dòng sau trên <application>  tag


  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Dưới tag </activity> bạn thêm vào dòng sau


<receiver
  android:name="com.google.android.gms.analytics.AnalyticsReceiver"
  android:enabled="true">
  <intent-filter>
  <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
  </intent-filter>
        </receiver>
  
        <service
  android:name="com.google.android.gms.analytics.AnalyticsService"
  android:enabled="true"
  android:exported="false" />
  
        <!--
               Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
               installation campaign reporting
          -->
        <receiver
  android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
  android:exported="true">
Chúc mừng bạn bạn đã đưa được GG Ananytic thành công

Thủ thuật trong android . . . .

1 -  Căn chỉnh sao cho 1 ImageView tự động scale trên nhiều màn hình

<ImageView    
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:id="@+id/thumbnail_book"
android:src="@drawable/samplebook"
android:cropToPadding="false"
android:adjustViewBounds="true" />



2 -  Trang thường hay xài trong việc tạo JSON Class

JSON Schema
Trang này để coi chuỗi JSON có đúng định dạng không

3 - Ẩn thanh cuộn trang trên listview hoặc bất cứ cái scrollView nào






____________________________________________ cập nhập hàng ngày --------->

Một số link hay học android

Bắt đầu